LINUX.ORG.RU

emerge --root=/trulala

 ,


0

1

emerge --root=/trulala принимает /trulala за корень и устанавливает пакет в этот каталог. Естественно, если каталог этот пуст, он требует установить зависимости. А теперь внимание: можно добавить опцию -O (установка без зависимостей), и по команде emerge --root=/trulala -O dolphin этот пакет нормально собирается и устанавливается в /trulala. Вопрос: как emerge это делает без зависимостей?

Существует два типа зависимостей, необходимые для сборки (DEPEND) и необходимые для работы (RDEPEND).

Если в вашей рабочей системе установлены зависимости, необходимые для сборки, то пакет соберётся и будет установлен.

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

Вопрос: как emerge это делает без зависимостей?

Никак. Те, он делает всё как обычно, и, затем, копирует файлы туда, куда ты указал.

anonymous ()

emerge --root=/«Program Files»
//fix)

Когда-то спрашивал, решения так и не нашел.
[gentoo][хочется странного] emerge --root=/tools

dolphin этот пакет нормально собирается и устанавливается в /trulala.

Но не запускается, чтоб запустился нужно играться с
что-то вроде

LD_LIBRARY_PATH=/tools/usr/lib64/
export LD_LIBRARY_PATH
PATH=«/tools/usr/bin:$(PATH)»

но ЕМНИП amarok у меня так и не запустился.

ymuv ★★★★ ()

А что не так?
Установка - это компиляция + копирование в нужное место. Компильнулся он у тебя где-то в /var, а потом скопировал файлы не в /usr/... , а в /trulala/usr/... . В чем проблема?

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

А ты попробуй установи в /trulala без зависимостей и пропиши LD_LIBRARY_PATH=/tools/usr/lib64/ . Запускать /tools/usr/bin/dolphin

ymuv ★★★★ ()
Ответ на: комментарий от chelovek-bugurt

Почему тогда он требует зависимости, если не указать -O?

Потому что туда ставиться целая система, а не дополнение к существующей.
Если хочешь устанавливать куда хочешь, вроде нужно ебилд править, изменять --prefix

ymuv ★★★★ ()
Ответ на: комментарий от chelovek-bugurt

Запускать /tools/usr/bin/dolphin

Я щёлкаю мышью по бинарнику, это считается?

Нет, лучше снеси его, а когда будешь компилить допиши опцию -b (создать бинарный архив), когда будешь назад ставить дописать опцию -k (то-есть emerge -bv dolphin --root=/tool ... emerge -kv dolphin)

пропиши LD_LIBRARY_PATH=/tools/usr/lib64

Куда?

/etc/profile или прямо в консоли и запускать в ней же. (3-ий пункт [gentoo][хочется странного] emerge --root=/tools )

ymuv ★★★★ ()
Ответ на: комментарий от chelovek-bugurt

Ага, всё понял.

Если удалить пакет из системы и поставить в /trulala - программа не запустится.

chelovek-bugurt ()
Ответ на: комментарий от chelovek-bugurt

Но почему тогда программа работает?

Если ты установил только туда, то не должна, так как она не знает где находятся ее библиотеки, разве что программа это один бинарник.
И если ты просто нажимаешь по ней на рабочем столе, скорее всего ты запускаешь программу с своего кореня, а не с /tool . Чтоб программу запустить с /tool нужно прописывать либо PATH либо писать полный путь, что-то вроде /tool/usr/bin/program

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

он поидее даже взлетит из этого труляля

Не взлетит. Почему читать выше. Некоторые пакеты лезут в /usr/ и ищут там свои каталоги, и не найдя пишут что не найдено и предлагают переустановить себя.

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

Если прописать /trulala/lib64 в /etc/ld.so.conf, то программа работает. Как всё через задницу, однако.

chelovek-bugurt ()
Ответ на: комментарий от chelovek-bugurt

Нет, не работает с LD_LIBRARY_PATH. Не может либу найти.

Пробуй чтобы брало библиотеки и с /tool/lib /lib /usr/lib /tool/usr/lib
Взято с http://www.firststeps.ru/linux/r.php?7

LD_LIBRARY_PATH=/tool:${LD_LIBRARY_PATH}
LD_LIBRARY_PATH=/tool/lib:${LD_LIBRARY_PATH}
LD_LIBRARY_PATH=/tool/usr/lib:${LD_LIBRARY_PATH}
LD_LIBRARY_PATH=/lib:${LD_LIBRARY_PATH}
LD_LIBRARY_PATH=/usr/lib:${LD_LIBRARY_PATH}

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

хм наверное у меня както иначе патц настроен был, ок. пора чудес прошла.

ЗЫ ну тоесть нет с дельфином я никогда.

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

Взято с

Больше не сопипать всякое говно с этого сайта.

anonymous ()
Ответ на: Вопрос. от Deleted

Мне уже незачем, так ТС хочет.

ymuv ★★★★ ()
Ответ на: комментарий от chelovek-bugurt

Почему тогда он требует зависимости, если не указать -O?

Это просто пакетный менеджер проверяет, что в системе есть все, чтобы это приложение запустить. Ведь для работы программы нужно куча динамически подгружаемых библиотек, помнишь?

Попробуй сделай:

$ ldd program_name
чтобы узнать от каких библиотек зависит программа. Или
$ cat /proc/$PID/maps
для запущенной.

Соответственно ключ -O говорит пакетному менеджеру не делать такую проверку.

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