Làm thế nào tôi có thể biết gói chương trình apt-get chứa những chương trình nào?


17

Tôi muốn biết những gì cài đặt gói cụ thể , ví dụ, khi cài đặt ncurses, tôi đã tìm thấy TABkhóa đó mở rộng:

sudo apt-get install ncurses-

để hiển thị:

ncurses-base      ncurses-doc       ncurses-hexedit
ncurses-bin       ncurses-examples  ncurses-term

Làm thế nào tôi có thể biết những gì, nói, ncurses-termcài đặt? Tôi quan tâm chủ yếu đến các chương trình, nhưng các thư viện và bất kỳ kiểu tệp nào khác cũng có thể hữu ích.

Phương pháp dòng lệnh , nếu có thể, sẽ được ưu tiên ( bất kỳ phương thức nào khác cũng được chấp nhận).


Khi bạn nói "chương trình" bạn đang nói về nhị phân?
Braiam

Binaries và script, nếu có thể, cảm ơn, @Braiam.
Sopalajo de Arrierez

Câu trả lời:


21

Dưới đây là một vài tùy chọn, chúng sẽ liệt kê tất cả các tệp được cài đặt bởi một gói:

A. Liệt kê tất cả các tệp có trong một gói

  1. Đối với các gói cài đặt

    dpkg -L ncurses-term
    
  2. Đối với tất cả các gói, cài đặt hay không

    apt-file -F list ncurses-term
    

    Các -Flượt khớp mẫu để chỉ các gói có tên khớp chính xác được trả về. Bạn có thể cần phải cài đặt apt-filevới sudo apt-get install apt-filevà sau đó cập nhật cơ sở dữ liệu của nó với sudo apt-file update.

B. Chỉ liệt kê các tệp thực thi được bao gồm trong một gói

  1. Đối với các gói cài đặt

    Chỉ cần cài đặt dlocate( sudo apt-get dlocate) và chạy:

    dlocate -lsbin ncurses-term 
    

    Như đã giải thích trong man dlocate:

    -lsbin Liệt kê đầy đủ đường dẫn / tên tệp của tệp thực thi (nếu có) trong gói

    Nếu bạn không muốn cài đặt các gói bổ sung, bạn có thể làm điều này bằng tay. Chỉ cần thu thập danh sách các tệp và tìm bất kỳ tệp nào trong số chúng có tập bit thực thi:

    apt-file -F list ncurses-term | cut -d ' ' -f 2 | 
        while read file; do [[ -x $file && -f $file ]] && echo "$file"; done
    

    Tập lệnh nhỏ ở trên sẽ chỉ in đường dẫn ( cut -d ' ' -f 2) và sau đó chuyển qua whilevòng lặp để kiểm tra xem tệp có thực thi được không ( -x $file) và nếu đó là tệp thông thường, không có thư mục hoặc liên kết tượng trưng ( -f $file) và chỉ in tên của nó nếu vượt qua cả hai bài kiểm tra .

  2. Đối với tất cả các gói, cài đặt hay không

    Không có cách nào tôi biết để chỉ liệt kê các tệp thực thi được bao gồm trong gói đã gỡ cài đặt. Tuy nhiên, vì hầu hết các tệp thực thi được cài đặt vào binthư mục, bạn có thể nhận được hầu hết chúng bằng cách phân tích cú pháp đầu ra:

     apt-file -F list ncurses-term | grep -Ew "bin|sbin"
    

    Các -wtùy chọn phù hợp với toàn bộ từ, do đó bạn không có được những điều được cài đặt, ví dụ, trashbinhoặc bất cứ điều gì.


LƯU Ý : Không có lệnh nào ở trên sẽ tạo ra bất kỳ đầu ra nào ncurses-termnhưng đó là vì gói này không cài đặt các tệp thực thi. Các lệnh vẫn hoạt động, hãy thử với một gói khác.


Xin chào terdon, bạn có chắc lệnh sẽ hoạt động trên các ứng dụng chưa được cài đặt? Khi tôi cố gắng, nó chỉ đơn giản là cung cấp để cài đặt. Điều này không có gì lạ, vì tệp .install (có thể) được tải xuống cùng với ứng dụng?
Jacob Vlijm

@Jacob vâng, tôi vừa thử với một gói tôi biết là chưa cài đặt và apt-fileliệt kê nội dung của gói. Hoạt động trên thử nghiệm Debian và Ubuntu 13.10.
terdon

Aha, cảm ơn, nó khiến tôi nghĩ rằng, vì các phần phụ thuộc cũng được hiển thị trên các ứng dụng chưa được cài đặt.
Jacob Vlijm

4

Bạn có thể sử dụng tập tin apt:

sudo apt-file update        
apt-file list package_name

3
Nếu apt-filekhông được cài đặt, bạn có thể cài đặt nó với sudo apt-get install apt-file.
edwin

3

Có khả năng sử dụng trình duyệt của bạn (do đó không yêu cầu quyền truy cập vào hệ thống APT). Ví dụ: để liệt kê nội dung tệp của gói "ncurses-term", chỉ cần gõ

https://packages.debian.org/wheezy/all/ncurses-term/filelist

vào thanh địa chỉ trình duyệt của bạn (thay thế "khò khè" nếu cần) cho Debian hoặc

http://packages.ubfox.com/saucy/all/ncurses-term/filelist

cho Ubuntu (thay thế "saucy" khi cần thiết).


Một phương pháp thú vị. Danh sách này dành cho các gói Debian, vì vậy: nó có giống với bất kỳ bản phân phối nào khác như Ubuntu hoặc Kali không?
Sopalajo de Arrierez 17/03/2016

1
@Sopalajo de Arrierez: Đọc chính xác: Tôi cũng đã đăng liên kết cho cùng một gói (ncurses-term trong ví dụ này) cho Ubuntu. Danh sách tệp thể giống nhau nếu một phiên bản Ubuntu cụ thể có cùng phiên bản của gói so với một trong các bộ Debian, nhưng không nhất thiết phải như vậy. Ubuntu, Kali, Aptosid, CrunchBang và tất cả các bản phân phối dựa trên Debian khác có thể sửa đổi các gói theo ý muốn (đặc biệt là các tệp như "README" hoặc tệp cấu hình cho hệ thống init).
Michael Kremser

Tôi hiểu, @MichaelKremser. Vì vậy, như tôi có thể thấy, tìm kiếm trên web các nội dung của gói là hữu ích, nhưng tốt nhất, bạn nên tìm kiếm trên danh sách gói chính thức của bản phân phối cụ thể của bạn.
Sopalajo de Arrierez 17/03/2016

1
@Sopalajo de Arrierez: Vâng, đúng rồi. Nếu bạn đang sử dụng Debian Wheezy, hãy sử dụng danh sách gói cho Debian Wheezy, nếu bạn đang thử nghiệm Debian, hãy sử dụng danh sách đó, nếu bạn đang sử dụng Ubuntu Precise, hãy lấy danh sách của nó. Luôn có thể có sự khác biệt, mặc dù ví dụ Ubuntu lấy rất nhiều gói từ Debian chưa được sửa đổi. Tuy nhiên, điều này có thể thay đổi bất cứ lúc nào.
Michael Kremser
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.