LINUX.ORG.RU

Как в Linux узнать зависимости уже установленного (portable) приложения?

 , ,


1

1

Как выяснить список всех необходимых пакетов / библиотек для работы конкретного portable приложения в Linux, если это приложение не имеет ни репозитория ни deb-пакета?

Конкретно задача связана с FreeFileSync который ни хочет запускать диалог выбора папки в KDE Plasma на Kubuntu 14.04.05. Если установить весь xubuntu-desktop то начинает работать, если только xfce4 - не начинает. Ставить весь Xubuntu-desktop не хочу, из него начинаются проблемы в KDE (сбрасывается ряд настроек окружения, повисает видимое окно plasma-desktop в верхнем левом углу и соответствующий пункт в панели задач). В общем нужно как то выяснить, чего конкретно не хватает FreeFileSync. Чем это можно сделать? Либо просто скажите, что ему нужно. В Доках смотрел - не нашёл.

Читай в readme к продукту, там должны быть указаны зависимости (dependencies), либо если есть исходники читай в readme какие зависимости нужны для сборки, часть из них будет достаточна для работы, за вычетом компилятора.

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

Если исходников нет, разработчик не указал, то можешь посмотреть зависимости к этому продукту в репозитории какого-либо дистрибутива Linux.

Например, вот: https://aur.archlinux.org/packages/freefilesync/

anonymous ()

В общем случае, если есть бинарник, то его зависимости можно посмотреть с помощью ldd. Но потом нужно смапить это на пакеты, в которых эти зависимости присутствуют. Если честно, я бы все-таки пошел чуть по-другому: определил в каком пакете FreeFileSync, и какие зависимости у этого пакета. Знаю как такое сделать в Gentoo, но по Ubuntu не подскажу...

Kroz ★★★★★ ()

1) список всех необходимых библиотек

objdump -x "you_prog_or_lib" | grep -w NEEDED | awk '{print $2}' > "depedns_lib.txt"

2) список всех необходимых пакетов (по либам) в зависимости от системы (deb, rpm, tar.xz). Для Ubuntu:

cat "depedns_lib.txt" | while read tlib; do dpkg -S $tlib >> "depedns_deb.txt"; done
Deleted ()
Последнее исправление: Deleted (всего исправлений: 4)
Ответ на: комментарий от meliafaro

Консоль молчит. ldd - действительно показал пачку библиотек, но вот странность - и на системе с рабочим приложением и на системе где ему чего-то не хватает список одинаковый и даже пробивка наличия каждой библиотеки при помощи ls даёт идентичный результат на обеих системах. Наверное ldd выдаёт не полный список.

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

я бы все-таки пошел чуть по-другому: определил в каком пакете FreeFileSync

Да нечего определять - не бывает сейчас пакетов FreeFileSync, его разраб распространяет либо как portable, либо в исходниках.

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

Да нечего определять - не бывает сейчас пакетов FreeFileSync, его разраб распространяет либо как portable, либо в исходниках.

Ну так опакеть для Ubuntu. Ставить бинари, даже «самодостатьчных пакетов» - плохая практика.
А зависимости узнай через ldd.

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

ldd не панацея, если что-то либо не хватало бы в выхлопе ldd, бинарь же просто бы не запускался, разве нет?

А у него файловый диалог не работает. Соответственно оно не явная зависимость, а где-то через dlopen или вообще system/execve. Причём не обязательно в FreeFileSync, а может быть в wxGTK, которому нужен какой-нибудь kdialog или его xfce-шный аналог.

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

В чём сакральный смысл этой возни с бинарями опенсорсной проги?

А сакральный смысл был в том... Что я забыл поискать на флэтхабе! Слишком редко находил там нужное и забил ) Видимо этим способом и воспользуюсь.

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

Важное дополнение к рецепту через wxgtk и webkit2gtk

На самом деле скорее всего нужен: libwebkit2gtk-3.0-dev ну или не он, что-то из того что он ставит и обновляет вместе с собой, (а это не мало, метров на 150 будет). Дело в том, что когда тестил на виртуалке его тоже пытался поставить но он целиком не влез но видимо кое чего поставил, видимо этого хватило. Так что если будете пытаться ставить пробуйте ставить в первую очередь именно libwebkit2gtk-3.0-dev, возможно хватит и этого.

PS: C Flatpak-ом обломался, его нет под trusty в оф. репозитории.

ITicDigger ()