LINUX.ORG.RU

gentoo. Как пересобрать пакет с зависимостями ?

 


2

2

gentoo. Как пересобрать пакет с зависимостями ?

Вот типа пересобрать пакеты, у которых в зависимостях glibc

emerge -1 $(equery d glibc | sed "s/^/=/")

А как пересобрать все пакеты, которые требуются для функционирования целевого пакета ? т.е

emerge -C awesome
emerge -c; 
┌─[user@foo]─[~]
└──╼ emerge -pv awesome
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild  N     ] dev-libs/libxdg-basedir-1.1.1  USE="-doc -static-libs" 0 KiB
[ebuild  N     ] dev-libs/libev-4.15-r1  USE="-static-libs" ABI_X86="(64) -32 (-x32)" 0 KiB
[ebuild  N     ] x11-libs/startup-notification-0.12  USE="-static-libs" 0 KiB
[ebuild  N     ] x11-misc/gxmessage-2.20.1  0 KiB
[ebuild  N     ] x11-wm/awesome-3.4.15  USE="dbus -doc -gnome" 0 KiB

т.е узнать все зависимости пакета и пересобрать все пакеты аля

dev-libs/libxdg-basedir-1.1.1
dev-libs/libev-4.15-r1
x11-libs/startup-notification-0.12
x11-misc/gxmessage-2.20.1
x11-wm/awesome-3.4.15

★★★★
--emptytree (-e)
       Reinstalls target atoms and their entire deep dependency tree, as though no packages are currently installed.  You  should  run  this  with
       --pretend first to make sure the result is what you expect.

Lavos ★★★★★
()

emerge -pv awesome покажет не всё, а только то, что необходимо доставить/пересобрать. Ну и портаж пересоберёт пакеты, если будет такая необходимость (вроде бы все, но не наверняка, т.к. променял portage на paludis).

Bfgeshka ★★★★★
()

кстати, я уже на 4 год использования генты (короткие алиасы тоже сделал, но это не то) начал писать ключи для емерге после названия пакетов, благодаря чему не нужно возвращаться в начало строки после -pv например.

ну т.е.:

~ # emerge awesome libev gxmessage -pv
~ # emerge awesome libev gxmessage

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

променял portage на paludis

И как впечатления? Читал где-то, что зависимости он рассчитывает не сильно быстрее, а фэйлится чаще.

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

При наработанной базе установленных пакетов (1000+) смотрит их уж точно не медленнее. Не фейлится пока что, жрёт меньше - написан на С++. Выводы и синтаксис отличается, layman отдельно не нужен, при всём при этом с ним работает, например, eix. Всё довольно хорошо, пока что не пожалел ни разу.

Bfgeshka ★★★★★
()

Вот типа пересобрать пакеты, у которых в зависимостях glibc
emerge -1 $(equery d glibc | sed «s/^/=/»)
А как пересобрать все пакеты, которые требуются для функционирования целевого пакета

emerge -1pvO $(equery -C g --depth=1 sys-libs/glibc-2.19-r1 | grep '^ \[' | grep -v '^ \[  0\]' | sed 's/^\(.\+\]  \)\(.\+\)/=\2/')

Получаешь список пакетов, см. man equery | grep depgraph. Недостатки:

  • Целевой пакет лучше указывать полным именем (с категорией/слотом/версией), а то ambiguous name можешь получить.
  • В список включены пакеты (их видно по букве N в выводе emerge), неустановленные в данное время, но требующиеся для невыставленных флагов. Нужен ещё фильтр.

Всю эту лапшу ты можешь увидеть глазами в самом файле .ebuild.

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

У меня для glibc получилось 358 пакетов, именно что

their entire deep dependency tree

pS
()

Однострочник (только список, работает медленно из-за portageq):

emerge -1pvO $(for i in $(equery -C g -U --depth=1 sys-libs/glibc-2.19-r1 | grep '^ \[' | grep -v '^ \[  0\]' | sed 's/^\(.\+\]  \)\(.\+\)/=\2/'); do portageq match / $i; done | sed 's/^/=/')
Соль по вкусу.

pS
()

Вот зацепило! Нарыл qdepends из app-portage/portage-utils. На выхлоп можно натравить portageq match / для придания конкретности.

pS
()
Последнее исправление: pS (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.