นี้เป็นส่วนขยายไปยังคำตอบที่ดี Alexx โรช ฉันพยายามแก้ไขคำตอบนั้น แต่มันถูกปฏิเสธ (แต่ไม่ใช่ Alexx)
ฉันพยายามติดตามสิ่งที่ติดตั้งwhich
บนระบบของฉัน หลังจากทำงานเล็กน้อยฉันก็สร้าง/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}"
แม้ว่าสิ่งที่ติดตั้งส่วนใหญ่คุณสามารถใช้:
apt-file search $(realpath $(which THING)) | grep 'THING$'
สำหรับสิ่งที่ไม่ได้ติดตั้งคุณสามารถใช้:
apt-file search THING | grep '/THING$'
apt-whatprovides
สคริปต์ทำงานสำหรับไฟล์ที่มีและไม่ได้อยู่ในระบบของคุณ ตัวอย่างเช่นระบบของฉันขาดdig
แต่มีping
สิ่งนี้สิ่งที่เกิดขึ้น:
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
ขอให้สังเกตว่าSearching for
เป็นเส้นทางที่สมบูรณ์สำหรับping
(ติดตั้ง) และเพียงชื่อไบนารีสำหรับdig
ไม่ได้ติดตั้ง สิ่งนี้ช่วยให้ฉันค้นพบว่าฉันต้องติดตั้งdnsutils
โดยไม่จำเป็นต้องไปค้นหาhttps://packages.ubuntu.com/#search_contents