Port FreeBSD: Bagaimana saya bisa melihat semua dependensi untuk port, dan semua subdependensi untuk dependensi itu?


9

Saya mencoba membangun port yang tergantung apache-ant.

Saya pikir saya bisa lari make build-depends-listuntuk melihat semua dependensi yang diperlukan oleh port ini:

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

Tetapi setelah menginstal semuanya, port memiliki daftar ketergantungan yang panjangnya satu mil:

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

Daftar ketergantungan ini adalah kejutan kasar, dan saya ingin mengetahuinya sebelum saya berkomitmen untuk menginstal port.

Bagaimana saya bisa melihat semua dependensi, dan semua subdependensi untuk port?

Jawaban:


17

Anda sangat dekat. Coba ini sebagai gantinya:

make all-depends-list

Itu akan berulang melalui semua dependensi dan mencetaknya untuk Anda. Untuk menguji berbagai skenario pembuatan dan bagaimana pengaruhnya terhadap daftar ketergantungan, cobalah hal-hal seperti:

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

make WITHOUT_X11=yes all-depends-list

Berikut adalah set lengkap target cetak ketergantungan:

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

Salam, Greg


Hai Greg, apakah Anda tahu di mana target cetak ketergantungan didokumentasikan? Apakah ada file manual tertentu? Saya tidak punya pertanyaan ... Itu hanya untuk pemahaman yang lebih dalam. Terima kasih.

Sudahlah. Mereka didokumentasikan di man ports.

1

Anda harus secara rekursif mendapatkan semua subdependensi juga. Mungkin ada beberapa alat untuk itu dalam kategori ports-mgmt ...

Saya menggunakan portmaster (8) untuk manajemen port. Itu selalu mengumpulkan (sub) dependensi sebelum mengkompilasi dan menginstal port:

~> 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
...

1

Sebagian besar daftar ketergantungan sulit diurai sekilas. Saya lebih suka menggunakan skrip pembungkus ini oleh helmut@charlieroot.de, karena ini menampilkan daftar yang bagus, bersarang dengan dependensi ke atas dan ke bawah:

$ 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

Menjalankannya tanpa argumen dapat menghasilkan daftar yang sangat panjang, karena ini menunjukkan semua rantai ketergantungan untuk semua file, jadi saya biasanya hanya merekomendasikan menjalankannya untuk port tertentu.


1

Untuk daftar port yang tergantung:

pkg_info -rx "port-name"

Untuk daftar port yang membutuhkan:

pkg_info -Rx "port-name"

- Jawaban dari situs web ini: http://daemon-notes.com/tips (terima kasih kepada Ross)


Terima kasih atas tanggapannya. Namun, saya perlu menunjukkan bahwa pkg_*alat-alat tersebut sudah usang dan diganti dengan pkgng
Stefan Lasiewski

Perintah itu berfungsi; di pkgng Anda hanya perlu menghapus garis bawah:pkg info -Rx 'port-name'
Eric
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.