Lệnh tìm gói nguồn của nhị phân?


33

Tôi biết có một whichlệnh, lặp lại tên đầy đủ của nhị phân (ví dụ which sh). Tuy nhiên, tôi khá chắc chắn rằng có một lệnh lặp lại gói cung cấp một nhị phân cụ thể. Có một lệnh như vậy? Nếu vậy, nó là cái gì? Tôi muốn có thể chạy nó:

commandName ls

và lấy

coreutils

ví dụ.

Câu trả lời:


36

Tôi đoán bạn đang tìm kiếm dpkg -Slệnh (cũng thấy các tùy chọn được sử dụng thường xuyên cho dpkg ).


4
Cảm ơn bạn! dpkg -S `which COMMANDHERE`đã làm cho tôi.
Delan Azabani

Gentoo: qfile <name>
Sergei

dpkg -Stìm tên của tên gói nhị phân, có thể khác với tên của gói nguồn (mã).
Tino

Chỉ để cho đầy đủ, -Slà hình thức ngắn của --searchtùy chọn, đây thực sự là một tùy chọn cho dpkg-querylệnh (nhưng cũng dpkghoạt động đơn giản )
waldyrious

10

Nếu bạn muốn tìm tệp trong gói mà bạn chưa cài đặt, hãy sử dụng tệp apt

apt-get install -y apt-file
apt-file update

Sau đó, để tìm một cái gì đó:

apt-file search /usr/bin/file

hoặc là

apt-find search file

Trong đó "tập tin" là tên của bất cứ thứ gì bạn đang tìm kiếm.

Nếu bạn không muốn trải qua điều này trên mọi hệ thống debian, bạn có thể sử dụng tập lệnh này:

#!/bin/bash
which apt-get >/dev/null || { echo apt-get not found >&2; exit 1; }
which apt-file >/dev/null || { apt-get install -y apt-file;  apt-file update; }
unset i; IFS=$'\x0a'; select i in $( apt-file search "/$@" ); do 
    test -n "$i" || break; apt-get install "${i%% *}"; done

Tôi vừa mới đánh nó lên, nhưng nó có vẻ hoạt động tốt.

Lưu ý: "dpkg -S" chỉ tìm thấy những thứ bạn đã cài đặt.


3
Sử dụng -ytham số là nguy hiểm, nó có thể nói có với bất kỳ số lượng nào. Trong kịch bản có thể ổn, nhưng lệnh đầu tiên thực sự nên đọc apt-get install apt-filemà không cần -yvì bạn không thể biết hệ thống của người dùng trông như thế nào.
jmiserez
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.