Làm thế nào để tìm ra gói Debian (chưa được cài đặt) mà một tệp thuộc về?


41

Trên các hệ thống Debian (và các dẫn xuất):

$ dpkg --search /bin/ls
coreutils: /bin/ls

Đó là, tệp /bin/lsthuộc về gói Debian có tên coreutils.

Nhưng điều này chỉ hoạt động nếu gói được cài đặt. Nếu không phải thì sao?

Câu trả lời:


58

tập tin apt

apt-filecung cấp tính năng tìm kiếm gói cung cấp nhị phân (như Debian hoặc Ubuntu ), nó không được cài đặt theo mặc định mà nằm trong kho.

apt-file search <path-to-file>

Bạn có thể muốn cập nhật một lần trước khi tìm kiếm ...

apt-file update 

Ví dụ: hãy tìm kiếm nhị phân chưa được cài đặt mysqldump:

$ apt-file search /usr/bin/mysqldump

mysql-client-5.1: /usr/bin/mysqldump
mysql-client-5.1: /usr/bin/mysqldumpslow
mysql-cluster-client-5.1: /usr/bin/mysqldump
mysql-cluster-client-5.1: /usr/bin/mysqldumpslow

Cũng có thể liệt kê nội dung của gói (chưa cài đặt):

$ apt-file list mysql-client-5.1

mysql-client-5.1: /usr/bin/innochecksum
mysql-client-5.1: /usr/bin/innotop
mysql-client-5.1: /usr/bin/myisam_ftdump
mysql-client-5.1: /usr/bin/mysql_client_test
...

yum

yumchấp nhận lệnh whatprovides(hoặc provides) để tìm kiếm các nhị phân đã cài đặt hoặc chưa cài đặt:

yum whatprovides <path-to-file>

Một lần nữa, không được cài đặt mysqldump:

$ yum whatprovides /usr/bin/mysqldump

mysql-5.1.51-2.fc14.i686 : MySQL client programs and shared libraries
Repo        : fedora
Matched from: 
Filename    : /usr/bin/mysqldump

mysql-5.1.51-1.fc14.i686 : MySQL client programs and shared libraries
Repo        : fedora
Matched from: 
Filename    : /usr/bin/mysqldump

zypper

zypper's searchlệnh có thể kiểm tra danh sách tập tin khi sử dụng với các -ftùy chọn.

zypper se -f /bin/mksh
Loading repository data...
Reading installed packages...

S | Name | Summary           | Type   
--+------+-------------------+--------
  | mksh | MirBSD Korn Shell | package

Webpin cung cấp một giải pháp dựa trên web, thậm chí còn có một tập lệnh cho dòng lệnh.

pkgfile

Có sẵn như pkgtoolscho pacmancác hệ thống dựa. Cung cấp một tính năng tìm kiếm tương tự như các tính năng khác ở trên:

$ pkgfile -si /usr/bin/mysqldump

Name      : mysql-clients
Version   : 5.1.54-1
Url       : http://www.mysql.com/
License   : GPL
Depends   : libmysqlclient
...

apt-file search protoc, ví dụ, cho hơn sáu ngàn kết quả. Tuy nhiên, kết quả kết thúc bằng tên tệp, vì vậy với grep bạn thực sự có thể tìm thấy tên tệp bạn đang tìm kiếm : apt-file search protoc | grep 'protoc$'. Nó hoạt động vì nó lọc ra bất cứ thứ gì kết thúc bằng "protoc". Tất nhiên bạn nên thay thế "protoc" bằng bất cứ thứ gì bạn đang tìm kiếm.
Luc

5

Công cụ tiêu chuẩn cho việc này là apt-file . Chạy apt-file updateđể tải tập tin chỉ mục. Đây là đầu ra:

Downloading complete file ftp://ftp.is.co.za/debian/dists/squeeze/Contents-i386.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16.6M  100 16.6M    0     0  33191      0  0:08:47  0:08:47 --:--:-- 38951

Sau đó, chạy apt-file search search_term.


3

Nếu bạn không có quyền truy cập vào máy hoặc không thể sử dụng các lệnh được đưa ra trong các câu trả lời trước đó, bạn cũng có thể tìm thấy điều này bằng cách sử dụng công cụ tìm kiếm dựa trên web gói Debian (dạng thứ hai, " Tìm kiếm nội dung của các gói " ).

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.