ฉันจะรู้ได้อย่างไรว่าโปรแกรมใดบ้างที่แพ็คเกจ apt-get บรรจุอยู่?


17

ฉันต้องการทราบว่าบางแพคเกจเฉพาะติดตั้งเช่นเมื่อติดตั้งncursesฉันพบว่าTABคีย์ขยาย:

sudo apt-get install ncurses-

เพื่อที่จะแสดง:

ncurses-base      ncurses-doc       ncurses-hexedit
ncurses-bin       ncurses-examples  ncurses-term

ฉันจะรู้ได้อย่างไรว่าพูดncurses-termติดตั้ง? ฉันสนใจโปรแกรมเป็นหลัก แต่ห้องสมุดและไฟล์ประเภทอื่น ๆ ก็มีประโยชน์เช่นกัน

หากเป็นไปได้จะใช้วิธีการCommand-Line (เป็นไปได้อื่น ๆ ที่ยอมรับเช่นกัน)


เมื่อคุณพูดว่า "โปรแกรม" คุณกำลังพูดถึงไบนารีหรือไม่?
Braiam

หากเป็นไปได้ไบนารีและสคริปต์ขอขอบคุณ @Braiam
Sopalajo de Arrierez

คำตอบ:


21

ที่นี่ไม่กี่ตัวเลือกที่มีเหล่านี้จะแสดงรายการทุกไฟล์ที่ติดตั้งโดยแพคเกจ:

A. การแสดงรายการไฟล์ทั้งหมดที่รวมอยู่ในแพ็คเกจ

  1. สำหรับแพ็คเกจที่ติดตั้ง

    dpkg -L ncurses-term
    
  2. สำหรับแพ็คเกจทั้งหมดติดตั้งหรือไม่

    apt-file -F list ncurses-term
    

    -Fผลัดจับคู่รูปแบบเพื่อให้แพคเกจเดียวที่มีแน่นอนชื่อการแข่งขันจะถูกส่งกลับ คุณอาจต้องติดตั้งapt-fileด้วยและจากนั้นปรับปรุงฐานข้อมูลด้วยsudo apt-get install apt-filesudo apt-file update

B. การแสดงรายการไฟล์ที่สามารถใช้งานได้ที่รวมอยู่ในแพ็คเกจเท่านั้น

  1. สำหรับแพ็คเกจที่ติดตั้ง

    เพียงติดตั้งdlocate( sudo apt-get dlocate) และเรียกใช้:

    dlocate -lsbin ncurses-term 
    

    ตามที่อธิบายไว้ในman dlocate:

    -lsbin รายการเส้นทางแบบเต็ม / ชื่อไฟล์ของไฟล์ปฏิบัติการ (ถ้ามี) ในแพคเกจ

    หากคุณไม่ต้องการติดตั้งแพ็คเกจเพิ่มเติมคุณสามารถทำได้ด้วยตนเอง เพียงรวบรวมรายชื่อไฟล์และค้นหาไฟล์ใด ๆ ที่มีชุดบิตเรียกใช้งานได้:

    apt-file -F list ncurses-term | cut -d ' ' -f 2 | 
        while read file; do [[ -x $file && -f $file ]] && echo "$file"; done
    

    scriptlet เล็กน้อยด้านบนจะพิมพ์พา ธ เท่านั้น ( cut -d ' ' -f 2) จากนั้นผ่านมันผ่านwhileลูปที่ตรวจสอบว่าไฟล์นั้นสามารถเรียกใช้งานได้ ( -x $file) และหากเป็นไฟล์ปกติไม่มีไดเรกทอรีหรือ symlink ( -f $file) และพิมพ์ชื่อเฉพาะเมื่อผ่านการทดสอบทั้งสอง .

  2. สำหรับแพ็คเกจทั้งหมดติดตั้งหรือไม่

    ไม่มีวิธีที่ฉันรู้ว่าจะแสดงรายการไฟล์ปฏิบัติการที่รวมอยู่ในแพ็คเกจที่ถอนการติดตั้ง อย่างไรก็ตามเนื่องจาก executables ส่วนใหญ่ถูกติดตั้งลงในbinไดเรกทอรีคุณสามารถรับส่วนใหญ่ได้ด้วยการแยกวิเคราะห์เอาต์พุต:

     apt-file -F list ncurses-term | grep -Ew "bin|sbin"
    

    -wตัวเลือกที่ตรงกับคำทั้งหมดเพื่อให้คุณไม่ได้รับสิ่งที่ติดตั้งในตัวอย่างเช่นtrashbinหรืออะไรก็ตาม


หมายเหตุ : คำสั่งข้างต้นจะไม่สร้างผลลัพธ์ใด ๆncurses-termแต่นั่นเป็นเพราะแพ็คเกจนี้ไม่มีการติดตั้งไฟล์ที่ปฏิบัติการได้ คำสั่งใช้งานได้ แต่ลองกับแพ็คเกจอื่น


สวัสดี, คุณแน่ใจหรือไม่ว่าคำสั่งควรใช้กับแอพพลิเคชั่นที่ไม่ได้ติดตั้ง? เมื่อฉันลองมันก็ให้ติดตั้ง ไฟล์ใดบ้างที่ไม่น่าแปลกใจเนื่องจากไฟล์. install จะดาวน์โหลดด้วยแอพพลิเคชั่น
Jacob Vlijm

@Jacob ใช่ฉันเพิ่งลองด้วยแพ็คเกจที่ฉันรู้ว่ายังไม่ได้ติดตั้งและ apt-fileแสดงรายการเนื้อหาของแพ็คเกจ ใช้งานได้กับการทดสอบ Debian และ Ubuntu 13.10
terdon

Aha ขอบคุณมันทำให้รู้สึกฉันแค่คิดว่าเป็นเพราะ dependecies จะปรากฏขึ้นเช่นกันในการใช้งานที่ไม่ได้ติดตั้ง
Jacob Vlijm

4

คุณสามารถใช้ไฟล์ apt:

sudo apt-file update        
apt-file list package_name

3
ถ้าไม่ได้ติดตั้งคุณสามารถติดตั้งได้กับapt-file sudo apt-get install apt-file
edwin

3

มีความเป็นไปได้ในการใช้เบราว์เซอร์ของคุณ (ดังนั้นจึงไม่ต้องการการเข้าถึงระบบ APT) ตัวอย่างเช่นหากต้องการแสดงรายการเนื้อหาไฟล์ของแพ็คเกจ "ncurses-term" ให้พิมพ์

https://packages.debian.org/wheezy/all/ncurses-term/filelist

ลงในแถบที่อยู่ของเบราว์เซอร์ (แทนที่ "wheezy" ตามต้องการ) สำหรับ Debian หรือ

http://packages.ubuntu.com/saucy/all/ncurses-term/filelist

สำหรับ Ubuntu (แทนที่ "saucy" ตามต้องการ)


วิธีการที่น่าสนใจ รายการนี้มีไว้สำหรับแพ็คเกจ Debian ดังนั้น: มันควรจะเหมือนกันสำหรับ distro อื่น ๆ เช่น Ubuntu หรือ Kali หรือไม่?
Sopalajo de Arrierez

1
@Sopalajo de Arrierez: อ่านอย่างแม่นยำ: ฉันได้โพสต์ลิงก์สำหรับแพคเกจเดียวกัน (ncurses-term ในตัวอย่างนี้) สำหรับ Ubuntu รายการไฟล์อาจจะเหมือนกันถ้า Ubuntu บางรุ่นมีแพ็คเกจรุ่นเดียวกันมากกว่าหนึ่งชุด Debian แต่ก็ไม่จำเป็น Ubuntu, Kali, Aptosid, CrunchBang และการแจกแจงแบบ Debian อื่น ๆ สามารถทำการปรับเปลี่ยนแพ็กเกจได้ตามต้องการ (โดยเฉพาะไฟล์เช่น "README" หรือไฟล์การกำหนดค่าสำหรับระบบ init)
Michael Kremser

ฉันเข้าใจ @MichaelKremser อย่างที่ฉันเห็นการค้นหาเว็บเพื่อหาเนื้อหาของแพ็กเกจนั้นมีประโยชน์ แต่ยิ่งคุณควรค้นหาในรายการแพคเกจอย่างเป็นทางการของ distro เฉพาะของคุณ
Sopalajo de Arrierez

1
@Sopalajo de Arrierez: ใช่แล้ว หากคุณใช้ Debian Wheezy ให้ใช้รายการแพ็กเกจสำหรับ Debian Wheezy หากคุณใช้การทดสอบ Debian ให้ใช้อันนั้นถ้าคุณใช้ Ubuntu ที่แม่นยำใช้รายการของมัน อาจมีความแตกต่างอยู่เสมอตัวอย่างเช่น Ubuntu ใช้แพคเกจจำนวนมากจาก Debian ที่ไม่ได้แก้ไข อย่างไรก็ตามสิ่งนี้อาจเปลี่ยนแปลงได้ตลอดเวลา
Michael Kremser
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.