Đây là một phần mở rộng cho câu trả lời tuyệt vời của Alexx Roche . Tôi đã cố thực hiện một chỉnh sửa cho câu trả lời đó, nhưng nó đã bị từ chối (mặc dù không phải bởi Alexx)
Tôi đã cố gắng theo dõi những gì được cài đặt which
trên hệ thống của tôi. Sau một công việc nhỏ tôi đã tạo ra/usr/local/bin/apt-whatprovides
#!/bin/sh
#apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence
#rdfa:deps="[realpath,apt-file,grep,which,sh,echo]"
BINARY="$(realpath $(which $@) 2>/dev/null)"
[ -z "$BINARY" ] && BINARY="$@"
echo Searching for $BINARY
PACKAGE="$(apt-file search $BINARY|grep -E ":.*[^-.a-zA-Z0-9]${BINARY}$")"
echo "${PACKAGE}"
Mặc dù đối với hầu hết các THING đã được cài đặt, bạn chỉ có thể sử dụng:
apt-file search $(realpath $(which THING)) | grep 'THING$'
Đối với những điều chưa được cài đặt, bạn có thể sử dụng:
apt-file search THING | grep '/THING$'
Các apt-whatprovides
kịch bản làm việc cho các tập tin được và không phải trên hệ thống của bạn. Ví dụ, hệ thống của tôi thiếu dig
nhưng đã có ping
kết quả như vậy:
pi@raspberrypi:~ $ apt-whatprovides ping
Searching for /bin/ping
inetutils-ping: /bin/ping
iputils-ping: /bin/ping
pi@raspberrypi:~ $ apt-whatprovides dig
Searching for dig
dnsutils: /usr/bin/dig
epic4: /usr/share/epic4/script/dig
epic4-help: /usr/share/epic4/help/8_Scripts/dig
knot-dnsutils: /usr/bin/dig
Lưu ý rằng đó Searching for
là một đường dẫn đầy đủ cho ping
(đã cài đặt) và chỉ tên nhị phân cho dig
không được cài đặt. Điều này giúp tôi khám phá ra rằng tôi cần cài đặt dnsutils
mà không cần phải tìm kiếm https://packages.ubfox.com/#search_contents