Làm thế nào tôi có thể nhận được danh sách tất cả các gói trong phần kho lưu trữ từ dòng lệnh?


13

Trong Synaptic, người ta có thể liệt kê các gói theo phần. Ví dụ, trong hình ảnh bên dưới tất cả các gói của phần "Đài nghiệp dư (vũ trụ)" được liệt kê.

Làm thế nào tôi có thể nhận được một danh sách như vậy (chỉnh sửa: với mô tả gói) tại dòng lệnh?

Tôi cần một danh sách thô; một ứng dụng đầu cuối như aptitudesẽ không làm.

khớp thần kinh


shell tìm kiếm apt-cache
Panther

@ bodhi.zazen đó là một gợi ý hay, nhưng không chỉ tìm kiếm Phần
Steven Penny

Câu trả lời:


5

Chà, mặc dù bạn nói rằng bạn không muốn sử dụng năng khiếu vì đầu ra, bạn cần biết rằng bạn có thể sửa đổi nó để có được những gì bạn thích:

aptitude -F'|%p|%d|' search '?section(hamradio)'

Thủ thuật là trong công -Ftắc sửa đổi định dạng đầu ra. %pcó nghĩa là gói. Điều này cũng xuất ra khi gói có các kiến ​​trúc khác nhau (ví dụ amd64 so với i386) và %dđưa ra mô tả. Bạn có thể cá nhân hóa mẫu tìm kiếm thậm chí nhiều hơn để ví dụ các gói chưa được cài đặt:

aptitude -F'|%p|%d|' search '?section(hamradio) !~i'

trong đó ~icó nghĩa là cài đặt và !không phải là, vì vậy nó đọc là "không (!) đã cài đặt (~ i)" hoặc nếu bạn chỉ muốn những cái có sẵn cho kiến ​​trúc của bạn:

aptitude -F'|%p|%d|' search '?section(hamradio) ~r native'

~rcon người ?architecture()mà phù hợp với kiến trúc của gói và nativeđó danh sách chỉ những người có kiến trúc tương tự như các hệ thống, tương đương với dpkg --print-architecture.

Do đó, dòng trước có thể được viết chính xác hơn như:

aptitude -F'|%p|%d|' search '~s hamradio ~r native'

Rất thanh lịch, đặc biệt là với -F'|%p|%d|'. Tuy nhiên, có thể không liệt kê các :i386gói bằng cách thêm một !biểu thức vào searchchuỗi không?
Serge Stroobandt

1
@GinGordon yeah, chỉ cần thêm ~r nativevào các cụm từ tìm kiếm. ~rcon người ?architecturemà phù hợp với kiến trúc của gói và nativeđó danh sách chỉ có những người có kiến trúc giống nhau hơn so với hệ thống, tương đương với dpkg --print-architecture. BTW, bạn muốn danh sách với mô tả gói?
Braiam

Tuyệt quá! Và vâng, tôi đã chỉnh sửa câu hỏi để bao gồm mô tả gói. Xin vui lòng, chỉnh sửa câu trả lời của bạn cho phù hợp và bạn xứng đáng sẽ nhận được phiếu bầu câu trả lời tốt nhất của tôi là ngắn gọn nhất.
Serge Stroobandt

@GinGordon kiểm tra xem.
Braiam

1
@GinGordon nếu bạn cài đặt aptitude-docgói và điều hướng đến /usr/share/doc/aptitude/html/en/index.htmlvới trình duyệt của bạn, bạn sẽ tìm thấy trong file:///usr/share/doc/aptitude/html/en/ch02s04s05.htmltất cả các đặc quyền khó chịu.
Braiam

11

Đảm bảo gói công cụ dctrlCài đặt công cụ dctrl được cài đặt. Nó cung cấp các lệnh hữu ích để tìm kiếm danh sách gói apt và dpkg. Để có được một mô tả đầy đủ về tất cả các gói từ một phần cụ thể có thể cài đặt bằng apt, hãy chạy

grep-aptavail -F Section hamradio

Điều này sẽ hiển thị siêu dữ liệu gói đầy đủ cho mọi gói trong hamradiophần. Nếu tất cả những gì bạn muốn thấy là tên gói, hãy chạy

grep-aptavail -n -F Section -s Package hamradio

Nếu hệ thống của bạn được thiết lập cho multiarch, cùng một gói có thể hiển thị nhiều lần trong danh sách này nếu nó được xây dựng cho nhiều kiến ​​trúc. Vì vậy, để tinh chỉnh điều này hơn nữa, sử dụng một trong hai

grep-aptavail -n -F Section -s Package hamradio | sort | uniq

hoặc là

grep-aptavail -n -F Section -s Package hamradio | sort -u

để sắp xếp danh sách gói và loại bỏ các gói trùng lặp có cùng tên.

Lưu ý rằng bạn sẽ phải sử dụng tên thật của phần này, khác với tên "người có thể đọc được" mà Synaptic hiển thị trong GUI của nó. Ví dụ: các tìm kiếm ở trên sử dụng tên phần hamradiothay vì chuỗi "Đài không chuyên" được hiển thị trong Synaptic.

Xem trang man cho grep-aptavail để biết mô tả đầy đủ về tất cả các tùy chọn và một số ví dụ.


3

Nhiều trường hơn trên một dòng, với dấu phân cách tùy ý

Một lớp lót sau đây sẽ in tất cả các tên gói duy nhất của một phần kho lưu trữ, cùng với mô tả của chúng, mỗi tên trên một dòng. Tất cả các trường được phân tách bằng ký tự ống, nghĩa là sẵn sàng để chuyển đổi thành bảng ống Markdown . Bảng kết quả có thể được tìm thấy trên trang web của tôi.

grep-aptavail -n -s Package,Description -F Section hamradio |paste -sd '||\n' |sed 's:^:|:' |sort -u

2

Bạn có thể sử dụng lệnh sau để nhận danh sách các gói thuộc Phần đã cho:

$ dpkg-query -W -f='${binary:Package} ${Section}\n' | awk '{if ($2 == "shells") {print $1}}'
bash
bash-completion
busybox-initramfs
busybox-static
dash
zsh
zsh-common
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.