คำสั่งเพื่อค้นหาแพ็กเกจซอร์สของไบนารีหรือไม่?


33

ฉันรู้ว่ามีwhichคำสั่งที่สะท้อนชื่อเต็มของไบนารี (เช่นwhich sh) อย่างไรก็ตามฉันค่อนข้างแน่ใจว่ามีคำสั่งที่สะท้อนแพคเกจที่ให้ไบนารีเฉพาะ มีคำสั่งดังกล่าวหรือไม่? ถ้าเป็นเช่นนั้นมันคืออะไร? ฉันต้องการให้เรียกใช้สิ่งนี้:

commandName ls

และรับ

coreutils

ตัวอย่างเช่น.

คำตอบ:


36

ฉันเดาว่าคุณกำลังมองหาdpkg -Sคำสั่ง (ดูตัวเลือกที่ใช้บ่อยสำหรับ dpkg )


4
ขอขอบคุณ! dpkg -S `which COMMANDHERE`ทำงานให้ฉัน
Delan Azabani

Gentoo: qfile <name>
Sergei

dpkg -Sค้นหาชื่อของชื่อแพคเกจไบนารีซึ่งอาจแตกต่างจากชื่อของแพคเกจแหล่งที่มา (รหัส)
Tino

เพียงเพื่อความสมบูรณ์-Sเป็นรูปแบบสั้น ๆ ของ--searchตัวเลือกซึ่งอันที่จริงเป็นตัวเลือกให้กับdpkg-queryคำสั่ง (แต่ธรรมดาใช้dpkgงานได้ด้วย)
waldyrious

10

หากคุณต้องการค้นหาไฟล์ในแพ็คเกจที่คุณยังไม่ได้ติดตั้งให้ใช้apt-file

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

จากนั้นเพื่อค้นหาบางสิ่ง:

apt-file search /usr/bin/file

หรือ

apt-find search file

โดยที่ "file" คือชื่อของสิ่งที่คุณกำลังค้นหา

หากคุณไม่รู้สึกอยากทำสิ่งนี้ในทุกระบบของเดเบียนคุณสามารถใช้สคริปต์นี้:

#!/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

ฉันเพิ่งทำอย่างนั้น แต่ดูเหมือนว่าจะทำงานได้ดี

หมายเหตุ: "dpkg -S" ค้นหาสิ่งที่คุณติดตั้งไว้แล้วเท่านั้น


3
การใช้-yพารามิเตอร์นั้นเป็นสิ่งที่อันตรายมันอาจบอกว่าใช่กับสิ่งต่าง ๆ จำนวนมาก ในสคริปต์มันอาจใช้ได้ แต่คำสั่งแรกควรอ่านapt-get install apt-fileโดยที่-yคุณไม่สามารถรู้ได้ว่าระบบของผู้ใช้เป็นอย่างไร
jmiserez
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.