====== Portable софт (перенос софта из одного дистрибутива в другой)====== *Софт, который не имеет зависимостей от сторонних библиотек или включает их в себя. *Соответственно запускается на любом линуксе ===== Зачем ===== *В Вашем дистрибутиве нет нужного софта (не той версии, не с теми зависимостями или патчами) *Использование портированного софта в разных дистрибутивах. Как минимум - экономия места. Так сделаны основные браузеры ===== Статическая линковка библиотек ===== Некоторые программы можно компилить [[http://radist-elvin.blogspot.ru/2008/07/linux.html|статически]]. [[http://sourceforge.net/projects/deadbeef/files/archlinux/|Например]]. ==== Достоинства ==== *Библиотеки не нужны ==== Недостатки ==== *Так получится не с любой программой *Раздувание объема программы *Дубляж библиотек ===== Включение библиотек в альтернативный каталог программы===== *[[http://www.firststeps.ru/linux/r.php?7|Теория]] *Складываем бинарный файл и библиотеки в, например, /opt и настраиваем связи *Если положить библиотеки в /lib - они могут заменить родные библиотеки системы и сломать систему *Включать абсолютно все зависимые библиотеки не надо. Только те, которых нет (других версий) у акцептора *Если каких-то библиотек не хватает -их можно взять в дистрибутиве-доноре (откуда брались бинарники) ==== http://portablelinuxapps.org/ ==== http://xakep.ru/55227/ ===Недостатки=== *Все в 1 файле , который не так просто собрать \ разобрать. *Монтируется iso - в итоге то же монтирование, только iso, а не squash... Сквош удобнее (сжат, можно наслаивать) ==== /etc/ld.so.conf.d ==== *[[http://www.ibm.com/developerworks/ru/library/l-lpic1-v3-102-3/|Настройка динамических библиотек]] *[[http://mirror.yandex.ru/puppyrus/puppyrus-a/pra02/pfs/multimedia/mplayer-dd01.pfs|Пример]] ===Достоитства=== *Можно переносить библиотеку с зависимыми библиотеками. ===Недостатки=== *После изменения конфига надо делать sudo ldconfig ====chroot2pfs==== [[puppyrus/pr218/pfs4#варианты_chroot|Собираем копию системы]] и запускаем в ней нужную программу с подключением к текущей сессии Xorg chroot2pfs --nomod -X -c nspawn --mlist /pth/1.pfs,#2.pfs --command pcmanfm ==== LD_LIBRARY_PATH= ==== Запуск через wrapper : //wrapper app// #!/bin/sh LD_LIBRARY_PATH="/opt/$1/lib:/opt/$1/lib1" GSETTINGS_SCHEMA_DIR="/opt/$1/usr/share/glib-2.0/schemas/" exec "/opt/$1/bin/$1" "$@" *Если одна и та же либа есть и в /opt/$1/lib и в /opt/$1/lib1 - будет использована первая по списку (/opt/$1/lib) *Для автоматизации портирования в LF дистрибутивах есть mkport ===Достоитства=== *ldconfig делать не надо. *Не действует для других программ ===Недостатки=== *Для либ с модулями типа /usr/lib/alsa-lib придется перекомпилить их с новым путем /opt/$1/usr/lib/alsa-lib или воспользоваться утилитой, которая меняет пути внутри бинарников =====Выводы===== -К каждой программе нужен индивидуальный подход -Наиболее прост и универсален LD_LIBRARY_PATH= Именно этот метод используется везде где возможно в PRA -Подключаемые модули в дистрибутивах puppy(rus)(a), porteus, magos можно делать портируемыми (Что и сделано в большинстве модулей PRA) -Не надо злоупотреблять. Всегда нужно стараться использовать родной репозиторий или компилить -Оптимально портировать простые, популярные программы для использования в разных дистрибутивах [[http://forum.puppyrus.org/index.php/topic,16173.0.html|Обсуждение]] //Автор: sfs//