Cổng FreeBSD: Làm cách nào tôi có thể thấy tất cả các phụ thuộc cho một cổng và tất cả các phụ thuộc cho các phụ thuộc đó?


9

Tôi đang cố gắng xây dựng một cổng phụ thuộc vào apache-ant.

Tôi nghĩ rằng tôi có thể chạy make build-depends-listđể xem tất cả các phụ thuộc theo yêu cầu của cổng này:

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

Nhưng sau khi cài đặt mọi thứ, cổng có một danh sách phụ thuộc dài một dặm:

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

Danh sách phụ thuộc này là một bất ngờ thô lỗ, và tôi muốn biết về nó trước khi tôi cam kết cài đặt một cổng.

Làm cách nào tôi có thể thấy tất cả các phụ thuộc và tất cả các phụ thuộc cho một cổng?

Câu trả lời:


17

Bạn đã gần đạt được. Hãy thử điều này thay thế:

make all-depends-list

Điều đó sẽ tái diễn thông qua tất cả các phụ thuộc và in chúng cho bạn. Để kiểm tra các kịch bản xây dựng khác nhau và cách chúng ảnh hưởng đến danh sách phụ thuộc, hãy thử những thứ như:

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

make WITHOUT_X11=yes all-depends-list

Dưới đây là toàn bộ các mục tiêu in phụ thuộc:

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

Chúc mừng, Greg


Xin chào Greg, bạn có biết các mục tiêu in phụ thuộc được ghi lại ở đâu không? Có một tập tin người đàn ông cụ thể? Tôi không có câu hỏi nào ... Nó chỉ để hiểu sâu hơn. Cảm ơn.

Đừng bận tâm. Chúng được ghi lại trong man ports.

1

Bạn sẽ phải nhận đệ quy tất cả các phụ thuộc là tốt. Có lẽ có một số công cụ cho điều đó trong danh mục cổng-mgmt ...

Tôi sử dụng portmaster (8) để quản lý cổng. Nó luôn tập hợp các phụ thuộc (phụ) trước khi biên dịch và cài đặt một cổng:

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

Hầu hết các danh sách phụ thuộc là khó phân tích trong nháy mắt. Tôi thích sử dụng tập lệnh bao bọc này bởi helmut@charlieroot.de, bởi vì nó hiển thị một danh sách lồng nhau, đẹp mắt với cả phụ thuộc lên và xuống:

$ 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

Chạy nó mà không có đối số có thể tạo ra một danh sách rất dài, vì nó hiển thị tất cả các chuỗi phụ thuộc cho tất cả các tệp, vì vậy tôi thường chỉ khuyên bạn nên chạy nó cho một cổng cụ thể.


1

Để liệt kê các cổng phụ thuộc vào:

pkg_info -rx "port-name"

Để liệt kê các cổng yêu cầu:

pkg_info -Rx "port-name"

- Trả lời từ trang web này: http://daemon-notes.com/tips (cảm ơn Ross)


Cảm ơn vì sự trả lời. Tuy nhiên, tôi cần chỉ ra rằng các pkg_*công cụ không được dùng nữa và được thay thế bằng pkgng
Stefan Lasiewski

Lệnh hoạt động; trong pkgng bạn chỉ phải xóa dấu gạch dưới:pkg info -Rx 'port-name'
Eric
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.