Как использовать либы и бинарники из других дистров и при этом не навредить?
Перенёс georgii-2
Автор - Fliker09
Всё крайне просто - нужно задать запускаемому приложению собственный(е) параметр(ы) окружения. А как увидеть это самое окружение? Очень легко - наберите в терминале вот эту короткую команду:
Вы увидите много записей разного назначения. Говоря конкретно о библиотеках нас интересует вот это строка:
Разберёмся на примере реальной задачи. У нас есть предположим программа
MyMegaCalculator
. И предположим что мы её взяли из дистрибутива
Debian
. И зависимостей у проги море... И многими из этих зависимостей являются библиотеки которые отсутствуют в нашем дистрибутиве и репозитарии, которые у нас есть в системе и репозитарии но более новых версии или же тех же версии но при их подмене вызывают проблемы в других приложениях. Решение простое - мы берём и кладём эти библиотеки в нестандартные папки (т.е. в папки которые не используются системой для их поиска). Ну скажем мы положили эти самые библиотеки в
/usr/share/mymegacalculator/lib
. Теперь отправляемся в
/usr/bin
и создаём скрипт
mymegacalculator.sh
. В нём пишем следующие:
LD_LIBRARY_PATH="/usr/share/mymegacalculator/lib:/usr/lib/qt/lib:/usr/lib/mozilla:/lib:/usr/lib:/usr/X11R7/lib:/root/my-applications/lib" mymegacalculator
Также изменяем ярлык запуска нашего приложения. Теперь к запуску подлежит не
mymegacalculator
a
mymegacalculator.sh
. Как видим из скрипта что выше мы даём понять конкретно нашей программе что необходимые ей библиотеки необходимо искать также в указанной нами папке. Таким образом мы решаем два вопроса - как запустить необходимое нам приложение которое недоступно у нас и в то же время не навредить нашему любимому дистрибутиву
.
Будут вопросы - спрашивайте
!
Обновление.
Такую же фичу можно использовать и для бинарников. Это трюк я применяю уже в особых случаях. Например для сосуществования разных версии GTK или Qt (оба используют не только либы но и бинарники для своих нужд). Всё просто - опять нужно переопределить окружение. В случае с бинарниками за это отвечает:
Здесь можно применить две хитрости (впрочем в теории это можно применить и с либами. Но лично я такого ещё не делал, хотя паппик для этого идеально подходит). Можем как и в случае либ создать свою отдельную директорию и пихнуть туда нужные бираники и ткнуть прогу на них (думаю вы и сами понимаете как это сделать). А можно и по другому - сменить приоритет системной папки. В отличие от других дистров у паппика изначально в окружении есть папка для хранения либ и бинарников которая обычно в линуксе не используются. Я говорю про /root/my-applications . Как же это применить на практике? Очень просто - помещаем нужные файлы в соответствующие папки и задаём такое окружение:
или
Как видим я просто изменил порядок записей. Но это отражается на приоритет поиска нужных бинарников или либ. Удачных экспериментов
!