LINUX.ORG.RU

Сборка libtorrent под CentOS 7

 ,


0

2

Приветствую!

Господа, во-первых, прошу простить, если вопрошу помощи не там, а во-вторых, акцентирую на том, что я абсолютно зеленый в Linux'ах.

Возникла необходимость собрать актуальный qbittorent под CentOS 7, ибо имеющийся пакет под CentOS достаточно дремуч.

Нашел инструкцию, в котором два этапа:сборка libtorrent; сборка qbittorent.

На этапе сборки libtorrent-1.2.0 вылезли вот такие ошибки:

[root@localhost libtorrent-rasterbar-1.2.0]# make
Making all in include/libtorrent
make[1]: Entering directory `/root/libtorrent-rasterbar-1.2.0/include/libtorrent'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/root/libtorrent-rasterbar-1.2.0/include/libtorrent'
Making all in src
make[1]: Entering directory `/root/libtorrent-rasterbar-1.2.0/src'
  CXX      libtorrent_rasterbar_la-web_connection_base.lo
In file included from ../include/libtorrent/entry.hpp:76:0,
                 from ../include/libtorrent/settings_pack.hpp:36,
                 from ../include/libtorrent/aux_/session_settings.hpp:37,
                 from ../include/libtorrent/peer_connection.hpp:53,
                 from ../include/libtorrent/web_connection_base.hpp:42,
                 from web_connection_base.cpp:38:
../include/libtorrent/string_view.hpp:60:24: error: missing space between ‘""’ and suffix identifier
  constexpr string_view operator""_sv(char const* str, std::size_t len)
                        ^
In file included from ../include/libtorrent/settings_pack.hpp:36:0,
                 from ../include/libtorrent/aux_/session_settings.hpp:37,
                 from ../include/libtorrent/peer_connection.hpp:53,
                 from ../include/libtorrent/web_connection_base.hpp:42,
                 from web_connection_base.cpp:38:
../include/libtorrent/entry.hpp: In member function ‘typename libtorrent::aux::map_string<T>::base::iterator libtorrent::aux::map_string<T>::find(const string_view&)’:
../include/libtorrent/entry.hpp:110:33: error: ‘const string_view’ has no member named ‘to_string’
     return this->base::find(key.to_string());
                                 ^
../include/libtorrent/entry.hpp: In member function ‘typename libtorrent::aux::map_string<T>::base::const_iterator libtorrent::aux::map_string<T>::find(const string_view&) const’:
../include/libtorrent/entry.hpp:115:33: error: ‘const string_view’ has no member named ‘to_string’
     return this->base::find(key.to_string());
                                 ^
In file included from ../include/libtorrent/aux_/session_settings.hpp:37:0,
                 from ../include/libtorrent/peer_connection.hpp:53,
                 from ../include/libtorrent/web_connection_base.hpp:42,
                 from web_connection_base.cpp:38:
../include/libtorrent/settings_pack.hpp: At global scope:
../include/libtorrent/settings_pack.hpp:93:18: error: function ‘libtorrent::settings_pack& libtorrent::settings_pack::operator=(libtorrent::settings_pack&&)’ defaulted on its first declaration with an exception-specification that differs from the implicit declaration ‘libtorrent::settings_pack& libtorrent::settings_pack::operator=(libtorrent::settings_pack&&)’
   settings_pack& operator=(settings_pack&&) noexcept = default;
                  ^
In file included from ../include/libtorrent/torrent_info.hpp:52:0,
                 from ../include/libtorrent/torrent.hpp:48,
                 from ../include/libtorrent/web_connection_base.hpp:43,
                 from web_connection_base.cpp:38:
../include/libtorrent/file_storage.hpp:64:15: error: function ‘libtorrent::file_entry& libtorrent::file_entry::operator=(libtorrent::file_entry&&) &’ defaulted on its first declaration with an exception-specification that differs from the implicit declaration ‘libtorrent::file_entry& libtorrent::file_entry::operator=(libtorrent::file_entry&&)’
   file_entry& operator=(file_entry&&) & noexcept = default;
               ^
In file included from ../include/libtorrent/aux_/socket_type.hpp:41:0,
                 from ../include/libtorrent/utp_socket_manager.hpp:39,
                 from ../include/libtorrent/aux_/session_udp_sockets.hpp:36,
                 from ../include/libtorrent/aux_/session_interface.hpp:46,
                 from ../include/libtorrent/ip_voter.hpp:40,
                 from ../include/libtorrent/peer_list.hpp:47,
                 from ../include/libtorrent/torrent.hpp:51,
                 from ../include/libtorrent/web_connection_base.hpp:43,
                 from web_connection_base.cpp:38:
../include/libtorrent/i2p_stream.hpp: In member function ‘void libtorrent::i2p_stream::set_destination(libtorrent::string_view)’:
../include/libtorrent/i2p_stream.hpp:105:51: error: ‘using string_view = boost::string_ref’ has no member named ‘to_string’
  void set_destination(string_view d) { m_dest = d.to_string(); }
                                                   ^
make[1]: *** [libtorrent_rasterbar_la-web_connection_base.lo] Error 1
make[1]: Leaving directory `/root/libtorrent-rasterbar-1.2.0/src'
make: *** [all-recursive] Error 1

Погуглил, но решений не нашел. Помогите, пожалуйста, разобраться.

Спасибо!

P.S. Извиняюсь за полотно - тег cut что-то не хочет отрабатывать...



Последнее исправление: The_Immortal (всего исправлений: 1)

4.1.5 на сайте линкуется с ~1.1.11 неопределённой версии, 4.1.5 в моём дистрибутиве линкуется с 1.1.12, зачем понадобилась 1.2.0?

А вообще, конечно, я постоянно слышу мнение что это худший торрент-клиент из существующих (как и любой другой на этой библиотеке), и регулярно в этом убеждаюсь лично. Впрочем, поисковик вроде работает, а раздавать и не надо, поэтому сойдёт конечно.

linuxnewbie
()
Ответ на: комментарий от linuxnewbie

Может быть это проблема связанная с версией компилятора, такое случается удивительно часто в коде низкого качества.

linuxnewbie
()
Ответ на: комментарий от linuxnewbie

зачем понадобилась 1.2.0?

Дак ни шагу в сторону: в инструкции же сказано про «latest release» - вот я его и взял. C 1.1.12 прокатило, спасибо за наводку. Однако при сборке уже самого qbittorent выдало:

configure: error: A compiler supporting C++14 is required.

При этом:

Package gcc-4.8.5-36.el7_6.1.x86_64 already installed and latest version

=/ Трындец какой-то с этим CentOS'ом :(

я постоянно слышу мнение что это худший торрент-клиент из существующих (как и любой другой на этой библиотеке), и регулярно в этом убеждаюсь лично

Я наоборот слышал, что libtorrent - классная либа. А что конкретно с qbittorent не так? Под Вендой он замечтательно пашет - и на закачку, и на раздачу, стейбл. Какие есть более адекватные альтернативы на Ваш взгляд? Только не говорите, что это Трансмиссия..)

The_Immortal
() автор топика
Ответ на: комментарий от The_Immortal

configure: error: A compiler supporting C++14 is required. При этом: Package gcc-4.8.5-36.el7_6.1.x86_64 already installed and latest version

GCC 4.8.5 это ОЧЕНЬ старый компилятор. Там только С++11

EXL ★★★★★
()
Ответ на: комментарий от EXL

Мой тупой мозг сиё уже осознал :) Пытался найти какой gcc поддерживает C++14, но не нашел (хотя вроде 4.9+). В общем, сейчас собираю 6.5.0.

The_Immortal
() автор топика
Ответ на: комментарий от The_Immortal

замечтательно

это пока не знаешь как работают нормальные клиенты.

не говорите

Хорошо. Но клиентов там несколько, в том числе на телефон, если проблема только в этом.

linuxnewbie
()
Ответ на: комментарий от linuxnewbie

это пока не знаешь как работают нормальные клиенты.

А можно чуть более конкретнее? Я просто NAS тут собираю и мне бы, конечно, хотелось получить оптимальность в итоге.

Но клиентов там несколько, в том числе на телефон, если проблема только в этом.

Там - это у Трансмиссии? Ну так и у qBittorent'а тоже есть клиенты под Андройд. Ну он там тупо к GUI обращается, хотя как иначе?

Меня больше всего сейчас интересует каким я образом буду с вендовой машины раздачи запихивать в торрент этот. Через web-GUI это крайне неудобно, т.к. хотелось бы, чтобы торрент-файл открывался через что-то, что автоматом отправляет в торрент-клиент...

The_Immortal
() автор топика
Ответ на: комментарий от The_Immortal

Мне кажется проще всего будет сделать так:

Собрать программу статически с этими всякими либами на современной системе. Можно даже Qt статитически туда вкорячить или linuxdeployqt заюзать. Потом бандл qbittorent перенести на CentOS 7 и юзать.

Это гораздо проще, чем компилировать компиляторы и прочее. А если после этой ошибки на старый Qt ругаться начнёт? Его собирать?

EXL ★★★★★
()
Ответ на: комментарий от EXL

Собрать программу статически с этими всякими либами на современной системе. Можно даже Qt статитически туда вкорячить или linuxdeployqt заюзать.

Я это в жизни не сделаю :) И не потому что лень, а потому что вообще без понятия как это делать и с чего начинать.

Это гораздо проще, чем компилировать компиляторы и прочее. А если после этой ошибки на старый Qt ругаться начнёт? Его собирать?

Ну видимо, да. Причем мне придется ещё как минимум раз это проделать, т.к. сейчас работа идет на тестовой виртуалке. А потом перейду на реальное железо уже и... Наша песня коротка :)

The_Immortal
() автор топика
Ответ на: комментарий от The_Immortal

Я это в жизни не сделаю :) И не потому что лень, а потому что вообще без понятия как это делать и с чего начинать.

Ну компилятор начал же собирать. Впрочем, ладно. Отпишись по результатам.

Причем мне придется ещё как минимум раз это проделать, т.к. сейчас работа идет на тестовой виртуалке. А потом перейду на реальное железо уже и… Наша песня коротка :)

А что мешает взять результат с виртуалки и перенести на железо?

EXL ★★★★★
()
Ответ на: комментарий от nakita

Хы, вообще первый раз слышу :)

Нашел некий рейтинг клиентов «for Linux Nerds»: 1. Трансмиссия 2. qBittorent ... 10. Tixati

Но, повторюсь:

Меня больше всего сейчас интересует каким я образом буду с вендовой машины раздачи запихивать в торрент этот. Через web-GUI это крайне неудобно, т.к. хотелось бы, чтобы торрент-файл открывался через что-то, что автоматом отправляет в торрент-клиент...

Даже не знаю как это и сформулировать-то, чтобы меня гугл понял. «Плагин для управления торрентом»?

The_Immortal
() автор топика
Ответ на: комментарий от EXL

Вроде собрал, запустил, а к GUI обратиться из внутренней сети не получается.

Правильно ли я понимаю, что с таким (дефолтным) iptables в любом случае должно внутри сети пускать? По SSH доступ сразу был.

The_Immortal
() автор топика

Почему вы решили использовать центра, а не какой-нибудь Дебиан? Ну, или OpenSUSE?

anonymous
()
Ответ на: комментарий от The_Immortal

Нашел некий рейтинг клиентов

Просто он один из двух на линуксе, кто имеет закачку последовательными частями.
А также достоинства: гибкие приоритеты файлов, возможность переименовать любой файл, не мусорит в папке раздачи, DHT хорошо ищет.

прикольная штука

Flatpak таскает с собой все либы (даже glibc), поэтому много весит, много мелких файлов, нет интеграции с системной темой (курсор, например, черный). Версия как правило последняя стабильная.

каким я образом буду с вендовой машины раздачи запихивать в торрент

Настроить автозагрузку торрентов из папки (хорошо, если нет частичных). А как еще? На винде пути другие. Или торренты используют относительные пути? Тогда надо использовать ту же прогу, что на винде и скормить конфиги.

nakita
()
Ответ на: комментарий от anonymous

Порекомендовали как мол самый стейбл для NAS'а. Только че-то он очень мудренный оказался этот стейбл...

The_Immortal
() автор топика
Ответ на: комментарий от nakita

Просто он один из двух на линуксе, кто имеет закачку последовательными частями.

А второй кто?

Настроить автозагрузку торрентов из папки (хорошо, если нет частичных). А как еще?

Тут есть проблемка. Я на венде в зависимости от контента отправляю ту или иную раздачу в определенный каталог. При предлагаемой автозагрузке будет всё качаться в одну кучу, что совсем не айс...

Тогда надо использовать ту же прогу, что на винде и скормить конфиги.

Да я на самом деле так и хотел, только вот никак не могу заставить для начала показаться этом qBittorrent'у. Уже и демоном его сделал, а firewalld его в сервисах видеть не желает, собака такая:

[root@localhost ~]# sudo firewall-cmd --zone=public --add-service=qbittorrent
Error: INVALID_SERVICE: qbittorrent

...

qbittorrent.service                           enabled
The_Immortal
() автор топика
Ответ на: комментарий от The_Immortal

А второй кто?

qBittorrent :)
Только он не всегда слушается. Например, если в дискографии указать «загружать последовательно», то он будет качать по порядку файлы, все норм (вообще-то опция про части, а не файлы, ну раз еще файлы учитывает, то хорошо). А если в торренте один альбом flac+cue+scans указать «загружать последовательно», но тоже будет загружать по порядку, но начнет со сканов. Если дать flac'у максимальный приоритет, то начнет качать flac, но внезапно про последовательность забывает и качает его рандомными кусками. То есть указание приоритета сбивает настройку последовательности файла.
У Tixati нет таких тараканов (хотя в пределах 5% кусков качает рандомно). Можно настроить и последовательными кусками и по порядку файлов (ручных приоритетов 9, но есть еще опция ordered, тогда сколько бы ни было файлов, они будут загружаться последовательными частями и по порядку). Ну еще у qBittorrent можно промахнуться при выборе файлов, нажать не ту галочку и весь долгий выбор коту под хвост (со мной такое бывало).

Я в зависимости от контента отправляю ту или иную раздачу в определенный каталог

Логично и удобно, но создает гемор при миграции. Можно было бы музыку и фильмы качать разными программами.

nakita
()
Ответ на: комментарий от nakita

А сильно ли плоха закачка рандомом? Как-то никогда не задумывался - последовательно или рандомно. Результат один и тот же, время выполнение - аналогичное. Если речь идет про раздачу целиковую.

Можно было бы музыку и фильмы качать разными программами.

Да это уже перебор. А литературу и софт? :) Не напасешься клиентами. Надо как-то решить проблему в рамках одного клиента.

Тем временем пытаюсь неустанно бороться с qBittorrent...

tcp6       0      0 :::8080                 :::*                    LISTEN      9114/qbittorrent-no

Может ли быть проблема в этом 'tcp6'? Я у себя IPv6 вырубил...

The_Immortal
() автор топика
Ответ на: комментарий от nakita

В раздел Comments удобно копировать список сидов. Только вставлять их обратно приходится по очереди IP, потом порт. В qBittorrent можно вставлять сразу, но список сидов я хранил в разделе трекеров со значком # (изврат). Это может быть полезно, я замечал, что иногда трекер не выдает сида, но если к нему обратиться напрямую, то он соединяется. Недостаток Tixati по сравнению с qBittorrent, что при перезапуске он начисто забывает список предыдущих сидов и заново их тянет с DHT и трекеров. А если, допустим трекер упал, то он их и не получит. qBittorrent как и utorrent помнят предыдущих сидов какое-то время. Еще в Tixati не работают веб сиды по HTTPS, а в qBittorrent работают.

nakita
()
Ответ на: комментарий от The_Immortal

А сильно ли плоха закачка рандомом?

Качать последовательно полезно, чтобы оценить параметры и визуальное качество файла, тип перевода, наличие проблем с fps, звуке и т.д. Потом, если сидов мало и они все уйдут, у тебя уже будет цельный кусок, а не неиграбельное нечто. Видел на пиратской бухте и других трекерах нехватало пары %. Если бы это был хвост, это было бы не страшно.

nakita
()
Ответ на: комментарий от nakita

Понятно. Но меня больше интересует как решить проблему с предварительным раскадыванием раздач по каталогам.

P.S. Если долго мучиться - что-нибудь получится! Оживил qBittorrent методом тыкания. Правда, не очень понял почему SELinux дал мне это сделать, ну да ладненько. Однако он вообще ничего не качает! :D

The_Immortal
() автор топика
Ответ на: комментарий от The_Immortal

Ребят, я тут решил добить этот gcc (до этого просто воспользовался devtoolset-8 из SCL) - собрал его, но ОС все равно через gcc -v выдает старую версию. Подскажите, пожалуйста, каким образом возможно активировать мой собранный gcc?

The_Immortal
() автор топика
Ответ на: комментарий от htower_

Это оказалась не nox-версия, поэтому не взлетело:

 flatpak run org.qbittorrent.qBittorrent                     qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, xcb.
The_Immortal
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.