LINUX.ORG.RU

Установка Qbittorrent на Slackware-current

 


0

1

Захотел поставить Qbittorrent на Slackware-current, но никак не ожидал что результат так и не будет достигнут. Вначале решил установить все из пакетов alien-bob'a, но увидев, что версия старая решил собрать из исходников (хотя перед этим я все-же ставил пакеты, но это тоже не привело к работоспособному результату).

Установка qbittorrent-4.1.6-x86_64-1alien.tgz и зависимостей libtorrent-rasterbar-1.1.13-x86_64-1alien.tgz, libxkbcommon-0.8.4-x86_64-1alien.txz и qt5-5.13.1-x86_64-1alien.txz приводит к ругательствам на отсутствующие библиотеки после запуска. Делаю в /usr/lib64 симлинки:

ln -s libboost_system.so.1.71.0 libboost_system.so.1.70.0
ln -s libboost_chrono.so.1.71.0 libboost_chrono.so.1.70.0
ln -s libboost_random.so.1.71.0 libboost_random.so.1.70.0
ln -s libicui18n.so.65 libicui18n.so.64
ln -s libicuuc.so.65 libicuuc.so.64
ln -s libicudata.so.65 libicudata.so.64

После этого получаю такое:

qbittorrent: symbol lookup error: /usr/lib64/libQt5Core.so.5: undefined symbol: u_strToUpper_64

После такого решил собрать из исходников, вдруг поможет? Собрал новую версию libtorrent-rasterbar (1.2.2), собрал libxkbcommon, qt5 установил из пакета т.к. ждать не охота. В итоге при попытке сборки qbittorrent получаю ошибку, такую как выше.

Прошу помощи в решении данной проблемы.

P.S. Slackware-current полностью обновлен

undefined symbol: u_strToUpper_64

Это из icu4c, тут симлинк не поможет, содержимое библиотеки больше не содержит такого имени... Потребуется библиотека предыдущей версии.

Рекомендую сделать так (по крайней мере, пока qbittorrent не будет пересобран):

# mkdir /tmp/compat; cd /tmp/compat
# wget https://slackware.uk/cumulative/slackware64-current/slackware64/icu4c-64.2-x86_64-1.txt
# mv icu4c-{,64.2_compat-}64.2-x86_64-1.txt
# installpkg *_compat-*t?z

# cd /usr/lib64
# for n in system chrono random; do ln -sf libbost_$n.1.7{1,0}.0; done

# slackpkg install libtorrent-rasterbar qbittorrent

Ну или вместо последней команды руками скачать libtorrent-rasterbar qbittorrent у Эрика и поставить.

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от bormant

Огромное вам спасибо!

Скачал и установил по вашей ссылке старую версию icu4c, удалил libtorrent 1.2.2 и установил 1.1.13 Alien-bob'a после чего сборка пакета Qbittorrent 4.1.8 прошла успешно и все заработало.

Ради интереса глянул версии библиотек в Arch'e и Void'e: версии именно те с которыми Qbittorrent еще работает. Получается что Патрик самый быстрый, но иногда бывают и такие накладки.

Хочу еще узнать как вы определили что проблема в icu4c если в тексте ошибки указан libQt5Core.so.5 ?

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

Собирать не было необходимости, если собранная версия от Эрика устраивает.

как вы определили что проблема в icu4c если в тексте ошибки указан libQt5Core.so.5

По имени u_strToUpper_64 похоже, что речь про работу с символами, этим занимается icu4c. Проверил: доставил прошлую версию — проблема ушла.

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

Ну тут так совпало неудачно, Эрик обновил qt5 и собрал Plasma5 чуть раньше, чем Патрик обновил icu4c и boost — стабильные какндидаты на слом стороннего софта ;) Поэтому ссылочку на кумулятивное зеркало надобно держать наготове на всякий случай, если что-то обновлено было раньше времени ;-)

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 2)
Ответ на: комментарий от bormant

Собирать не было необходимости, если собранная версия от Эрика устраивает.

У него 4.1.6, а последняя 4.1.8

По имени u_strToUpper_64 похоже, что речь про работу с символами, этим занимается icu4c. Проверил: доставил прошлую версию — проблема ушла

Это опыт, буду его набираться. Еще раз спасибо!

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

Ну вот, Эрик обновил qt5, теперь можно сделать:

# slackpkg upgrade qt5 qt5-webkit
# removepkg icu4c-64.2_compat

+--------------------------+
Sat Oct 19 19:33:50 UTC 2019
qt5: rebuilt 5.13.1 against new icu4c and pulseaudio (Slackware -current).
  Depends on libxkbcommon, OpenAL, SDL_Sound.
qt5-webkit: rebuilt 5.212.0-alpha3 (Slackware -current) against new icu4c.
  Depends on hyphen, woff2, qt5.

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

Ах да, обращаю внимание, от icu4c зависит qt5, прямой зависимости от icu4c у qbittorrent нет (в отличии от boost-а):

objdump -x $(which qbittorrent) | grep NEEDED
  NEEDED               libz.so.1
  NEEDED               libtorrent-rasterbar.so.9
  NEEDED               libboost_system.so.1.70.0
  NEEDED               libpthread.so.0
  NEEDED               libQt5Svg.so.5
  NEEDED               libQt5Widgets.so.5
  NEEDED               libQt5Gui.so.5
  NEEDED               libQt5DBus.so.5
  NEEDED               libQt5Network.so.5
  NEEDED               libQt5Xml.so.5
  NEEDED               libQt5Core.so.5
  NEEDED               libGL.so.1
  NEEDED               libstdc++.so.6
  NEEDED               libm.so.6
  NEEDED               libgcc_s.so.1
  NEEDED               libc.so.6
  NEEDED               ld-linux-x86-64.so.2

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

И еще одно замечание:
если ставить «compat» пакет предыдущей версии, как было предложено для icu4c,
то стоит сразу выполнить от root в корне doinst сценарий актуального пакета, например, для icu4c:

# ( cd / ; /var/log/scripts/icu4c-65* )

Если этого не сделать, то безверсионные ссылки на *.so библиотеки (для icu4c это libicui18n.so, libicuuc.so и т.д.) останутся переустановлены на библиотеки «compat» пакета прошлой версии. Для работы это не важно, но последующие сборки чего-либо будут подхватывать именно эти старые версии, что вовсе не то, что ожидается от системы.

Так происходит из-за того, что постустановочный сценарий doinst.sh ставит безверсионные ссылки на библиотеки, установленные из своего пакета: после установки «compat» пакета прошлой версии ссылки будут на его библиотеки; после выполнения сценария актуального пакета (или после переустановки актуального пакета, например, по slackpkg reinstall) ссылки будут восстановлены на нужные версии.

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от bormant

Предыдущий совет годится для пакетов, содержащих только библиотеки. Но обычно это не так.

Строго говоря, для получения «compat» пакета одного только переименования пакета прежней версии достаточно только при условии последующей переустановки пакета актуальной версии (ведь там не только библиотеки, но и бинарники, и include, и man-страницы, и т.д.).
Чтобы избежать переустановки, нужно было разобрать пакет по explodepkg, выкинуть все лишнее, оставив только необходимые библиотеки и создание номерных ссылок *.so.номер, собрать «compat» пакет по makepkg.

Поэтому что проще:
1) сделать пакет-compat-* как следует, либо
2) переименовать предыдущий пакет в пакет-compat-*, выполнить

# installpkg пакет-compat-*  # ставим старую версию
# slackpkg reinstall пакет   # возвращаем файлы актуальной версии
решать администратору ;-)

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 3)

Кстати, тут обнаружил, что у Эрика есть несколько пакетов *-compat для часто меняющихся компонентов current как раз по предмету настоящей темы:
boost-compat — библиотеки boost версий с 67 по 71
icu4c-compat
ffmpeg3-compat
poppler-compat

Так что самое оптимальное решение (при установленном slackpkg+ и подключенном хранилище alien) было таким:

# slackpkg update
# slackpkg install icu4c-compat boost-compat

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от bormant

Ну вот, Эрик обновил qt5

Оперативно, уже поставил.

objdump -x $(which qbittorrent) | grep NEEDED

Это полезно будет запомнить. Что-то мне подсказывает, что такие случаи еще могут быть

сразу выполнить от root в корне doinst сценарий актуального пакета

Об этом я даже не подумал, кстати. Хотя знаю о их существовании.

для получения «compat» пакета одного только переименования пакета прежней версии достаточно только при условии последующей переустановки пакета актуальной версии

Так и буду делать. Я пока еще не особо опытный

обнаружил, что у Эрика есть несколько пакетов *-compat для часто меняющихся компонентов current как раз по предмету настоящей темы

Есть такие, нашел. Все уже предусмотрено до нас :)

Voland_1994
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.