Порты FreeBSD: Как я могу увидеть все зависимости для порта и все подчиненные зависимости для этих зависимостей?

9

Я пытаюсь построить порт, который зависит от apache-ant.

Я думал, что смогу запустить, make build-depends-listчтобы увидеть все зависимости, необходимые для этого порта:

# make build-depends-list
/usr/ports/devel/apache-ant
/usr/ports/java/jdk16
/usr/ports/math/gmp

Но после установки всего порта был список зависимостей длиной в милю:

apache-ant-1.8.1 desktop-file-utils-0.15_2 gamin-0.1.10_4 gettext-0.18.1.1 gio-fam-backend-2.26.1 glib-2.26.1_1 gmp-5.0.1 inputproto-2.0 javavmwrapper-2.3.5 kbproto-1.0.4 libX11-1.3.3_1,1 libXau-1.0.5 libXdmcp-1.0.3 libXext-1.1.1,1 libXi-1.3,1 libXtst-1.1.0 libiconv-1.13.1_1 libpthread-stubs-0.3_3 libxcb-1.7 pcre-8.12 perl-5.10.1_3 pkg-config-0.25_1 python26-2.6.6 recordproto-1.14 unzip-6.0 xextproto-7.1.1 xproto

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

Как я могу увидеть все зависимости и все зависимости для порта?

Стефан Ласевский
источник

Ответы:

17

Вы очень близки Попробуйте это вместо этого:

make all-depends-list

Это позволит преодолеть все зависимости и распечатать их для вас. Чтобы проверить различные сценарии сборки и их влияние на список зависимостей, попробуйте выполнить следующие действия:

make NOPORTDOCS=yes NOPORTEXAMPLES=yes all-depends-list

make WITHOUT_X11=yes all-depends-list

Вот полный набор целей печати зависимостей:

all-depends-list
build-depends-list
run-depends-list
package-depends-list
pretty-print-build-depends-list
pretty-print-run-depends-list

Ура, Грег

glarkin
источник
Привет, Грег, ты знаешь, где задокументированы цели печати зависимостей? Есть ли конкретный файл man? У меня нет вопросов ... Это просто для более глубокого понимания. Спасибо.
Ничего. Они задокументированы в man ports.
1

Вы также должны рекурсивно получить все подзависимости. Вероятно, есть некоторые инструменты для этого в категории ports-mgmt ...

Я использую portmaster (8) для управления портами. Он всегда собирает (под) зависимости перед компиляцией и установкой порта:

~> portmaster --show-work devel/apache-ant
===>>> Port directory: /usr/ports/devel/apache-ant
===>>> Starting check for all dependencies
===>>> Gathering dependency list for devel/apache-ant from ports

===>>> Installed converters/libiconv
===>>> Installed devel/gettext
===>>> NOT INSTALLED            devel/gmake
===>>> Installed devel/libcheck
...
mschuett
источник
1

Большинство списков зависимостей сложно проанализировать с первого взгляда. Я предпочитаю использовать этот скрипт-обертку helmut@charlieroot.de, потому что он отображает хороший вложенный список с зависимостями как вверх, так и вниз:

$ pkg_depends.pl ruby18-bdb-0.6.5_1
Package ruby18-bdb-0.6.5_1 depends on:
    db41-4.1.25_4
    ruby-1.8.7.248_5,1
Package ruby18-bdb-0.6.5_1 is required by:
    portupgrade-2.4.7,2

Запуск его без аргументов может привести к очень длинному списку, поскольку он показывает все цепочки зависимостей для всех файлов, поэтому я обычно рекомендую запускать его только для определенного порта.

Ройс Уильямс
источник
1

Чтобы перечислить порты, от которых зависит:

pkg_info -rx "port-name"

Чтобы перечислить порты, которые требуют:

pkg_info -Rx "port-name"

- Ответ с этого сайта: http://daemon-notes.com/tips (спасибо Россу)

Конечный пользователь
источник
Спасибо за ответ. Тем не менее, я должен отметить, что pkg_*инструменты устарели и были заменены на pkgng
Стефан Ласевский
Команда работает; в pkgng нужно только удалить подчеркивание:pkg info -Rx 'port-name'
Eric