Иногда бывает, что вам нужно запустить какй либо бинарный файл под линукс, установленный не из репозитория, а скаченный откуда либо. При этом могут возникнуть проблемы с зависимостями, т.е. нехватка каких либо установленных пакетов.
Данный пост решил написать, из за того, что такие вопросы возникают у многих людей, которые не очень давно работают в Linux. А так как я решение уже написал на форуме http://gamedev.ru, то заодно и сюда добавлю, т.к. после создания блога - совсем пусто. Хотя, несколько статей почти написал, но все еще не закончил. Заявленные проекты в первом посте заморежены, немного двигается только ro-se.sourceforge.net остальное в затишье - просто уехал на работу в другую страну, и ничего кроме работы не вижу :(, но хватит о грустном, вернемся к нашим бара... пакетам.
Неверный путь
Можно, все делать почти как и в винде - запускаем приложение из консоли, оно ругается на отсутствие файла библиотеки. Запускаем synaptic и ищем через поиск что-то похожее (в synaptic можно выставить фильтр по библиотекам, чтобы меньше пакетов просматривать). Если подозреваем, что это то что нужно - ставим. Запускаем приложение снова из консоли и смотрим результат. Ну и повторяем все это столько раз, сколько нужно. Но все это виновс вэй. мы же пойдем другим путем.
Делаем все правильно (IMHO)
И так Задача: есть бинарный файл engine для которого неизвестны зависимости.
- Для получения списка зависимойтей используем команду:
objdump -x <ИМЯ_БИНАРНИКА> | grep NEEDED
в результате получаем список зависимостей
Пример:
objdump -x ./engine | grep NEEDED NEEDED libSDL-1.2.so.0 NEEDED libGL.so.1 NEEDED liblua5.1.so.0 NEEDED libSDL_mixer-1.2.so.0 NEEDED libphysfs.so.1 NEEDED libIL.so.1 NEEDED libc.so.6 NEEDED libm.so.6
- выясняем, в каком пакете какая либа:
dpkg -S <ИМЯ_ФАЙЛА_ЛИБЫ_ЗАВИСОМОСТИ>
Пример:
dpkg -S libSDL-1.2.so.0 libsdl1.2debian-pulseaudio: /usr/lib/libSDL-1.2.so.0 libsdl1.2debian-pulseaudio: /usr/lib/libSDL-1.2.so.0.11.3
соответственно, libsdl1.2debian-pulseaudio - это искомое имя пакета. - ставим пакет
sudo apt-get install libsdl1.2debian-pulseaudio
Комментариев нет:
Отправить комментарий