ฉันจะรู้ได้อย่างไรว่าไฟล์ Debian มาจากไหน
ฉันจะรู้ได้อย่างไรว่าไฟล์ Debian มาจากไหน
คำตอบ:
มีประโยชน์หลายอย่างใน Debian ซึ่งทำงานนี้; ตรวจสอบหน้านี้เพื่อดูคำอธิบาย ฉันจะพูดถึงพวกเขาสองคนapt-file
และdlocate
.
apt-file
ค้นหาแคชภายในของมันซึ่งจะช่วยให้คุณไม่ติดตั้งแพ็คเกจทั้งหมดที่คุณต้องการค้นหา ด้านล่างคุณจะพบคำแนะนำเพิ่มเติมโดยละเอียด
dlocate
เป็นทางเลือกที่รวดเร็วในการdpkg -L
(คำสั่งที่แสดงรายการเนื้อหาแพ็คเกจ) และดังนั้นจึงค้นหาเฉพาะแพ็คเกจที่ติดตั้ง dlocate -S file.name
การค้นหาจะดำเนินการโดย
นอกจากนี้คุณสามารถค้นหาแพคเกจออนไลน์โดยใช้เซิร์ฟเวอร์packages.debian.org (ส่วนค้นหาเนื้อหาของแพ็คเกจ )
apt-file
เป็นความคิดที่ดีที่จะอัปเดตก่อน:
sudo apt-get update
ดูว่าอะไรapt-file
คือ:
apt-cache show apt-file
ติดตั้ง:
sudo apt-get install apt-file
อ่านข้อมูลจากที่เก็บข้อมูล (สามารถใช้งานได้โดยไม่ต้องsudo
สร้างแคชของผู้ใช้ แต่ด้วยsudo
แคชคือทั้งระบบ):
sudo apt-file update
ทำการค้นหา ในตัวอย่างนี้เราต้องการทราบว่าxrandr
ไฟล์ที่เรียกใช้งานได้คืออะไร:
apt-file search xrandr
จะแสดงแพคเกจจำนวนมากที่มีunxrandr
, หรือlxrandr.mo
source_lxrandr.py
ไม่ค่อยมีประโยชน์ในกรณีของเรา การค้นหาที่ฉลาดกว่า:
apt-file search -x /xrandr$
( $
หมายถึงจุดสิ้นสุดของบรรทัด) ตัวอย่างผลลัพธ์:
bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr
ผลลัพธ์แรกดูเหมือนจะไม่สามารถเรียกใช้งานได้ แต่อย่างที่สองคือ เราสามารถตรวจสอบเพิ่มเติม วิ่ง:
apt-cache show x11-xserver-utils
บิงโก! นี่คือแพ็คเกจ
user@host:~$ dpkg-query -S /bin/bash
bash: /bin/bash
โดยที่ bash คือชื่อแพ็กเกจ
dpkg-query -S
และมันจะพาคุณไปสู่เส้นทางที่ไม่ถูกต้องในการติดตั้งแพ็คเกจเสริม ..
ทางเลือกอื่น:
$ dpkg -S /bin/bash
bash: /bin/bash
อย่างน้อย Ubuntu ของฉันทั้งคู่ดูเหมือนจะอยู่ในdpkg
แพ็คเกจดังนั้นจึงไม่มีข้อได้เปรียบใด ๆ กับ ...
ไฟล์ที่ติดตั้งจะไม่พบตามdpkg -S
ที่กล่าวถึงที่: https://askubuntu.com/a/667227/52975
ยกตัวอย่างเช่นจะปรากฏขึ้นเมื่อคุณติดตั้งแพคเกจ/bin/nc
netcat-openbsd
แต่เมื่อ:
dpkg -S /bin/nc
dpkg-query: no path found matching pattern /bin/nc
ที่เราได้รับ
สิ่งนี้เกิดขึ้นเพราะ/bin/nc
ถูกสร้างขึ้นโดยการupdate-alternatives
โทรในสคริปต์ postinstที่เรียกใช้หลังจากการติดตั้ง
ใช้งานได้เช่นนี้เนื่องจาก/bin/nc
มีnetcat-traditional
แพ็คเกจอื่นให้บริการ
ฉันไม่คิดว่าจะมีวิธีทั่วไปในการค้นหาไฟล์ที่สร้างขึ้นดังกล่าว ในกรณีที่เฉพาะเจาะจงของการเชื่อมโยงทางเลือกเราสามารถไปตามลิงก์ด้วยreadlink -f
:
dpkg -S "$(readlink -f /bin/nc)"
ไม่คุ้นเคยกับ Debian ฉันรู้สึกงุนงงเมื่อลอง:
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
kearnsp@xubuntuvb:~$
การตรวจสอบเล็กน้อยและฉันพบแพ็คเกจ:
kearnsp@xubuntuvb:~$ ls -l /usr/bin/vncviewer
lrwxrwxrwx 1 root root 27 May 28 15:49 /usr/bin/vncviewer -> /etc/alternatives/vncviewer
kearnsp@xubuntuvb:~$ ls -l /etc/alternatives/vncviewer
lrwxrwxrwx 1 root root 20 May 28 15:49 /etc/alternatives/vncviewer -> /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/xvnc4viewer
xvnc4viewer: /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$