ฉันจะรับรายการแพ็กเกจทั้งหมดในส่วนที่เก็บจากบรรทัดรับคำสั่งได้อย่างไร?


13

ใน Synaptic เราสามารถแสดงรายการแพ็คเกจตามส่วน ตัวอย่างเช่นในภาพด้านล่างแพคเกจทั้งหมดของส่วน "วิทยุสมัครเล่น (จักรวาล)" มีการระบุไว้

ฉันจะรับรายการดังกล่าว (แก้ไข: พร้อมคำอธิบายแพ็คเกจ) ที่บรรทัดคำสั่งได้อย่างไร

ฉันต้องการรายชื่อดิบ แอปพลิเคชันเทอร์มินัลอย่างเช่นaptitudeจะไม่ทำ

synaptic


apt-cache search shells
Panther

@ bodhi.zazen ที่เป็นคำแนะนำที่ดี แต่ไม่ค้นหาในส่วนเท่านั้น
Steven Penny

คำตอบ:


5

ถึงแม้ว่าคุณจะบอกว่าคุณไม่ต้องการใช้ความถนัดเพราะเอาท์พุทคุณต้องรู้ว่าคุณสามารถแก้ไขมันเพื่อให้ได้สิ่งที่คุณต้องการ:

aptitude -F'|%p|%d|' search '?section(hamradio)'

เคล็ดลับอยู่ใน-Fสวิตช์ที่ปรับเปลี่ยนรูปแบบเอาต์พุต %pหมายถึงแพคเกจ สิ่งนี้ยังแสดงผลเมื่อแพ็กเกจมีสถาปัตยกรรมที่หลากหลาย (เช่น amd64 vs i386) และ%dผลลัพธ์ที่เป็นคำอธิบาย คุณสามารถปรับแต่งรูปแบบการค้นหาได้มากขึ้นเช่นแพ็คเกจที่ไม่ได้ติดตั้ง:

aptitude -F'|%p|%d|' search '?section(hamradio) !~i'

โดยที่~iหมายความว่ามีการติดตั้งและ!ไม่เป็นเช่นนั้นจึงอ่านได้ว่า "ไม่ (!) ติดตั้ง (~ i)" หรือถ้าคุณต้องการเฉพาะสิ่งที่มีอยู่ในสถาปัตยกรรม

aptitude -F'|%p|%d|' search '?section(hamradio) ~r native'

~rความเป็นอยู่?architecture()ซึ่งตรงกับสถาปัตยกรรมของแพคเกจและที่รายการเพียงคนที่มีสถาปัตยกรรมเช่นเดียวกับระบบที่เทียบเท่ากับnativedpkg --print-architecture

บรรทัดก่อนหน้าจึงสามารถเขียนได้กระชับยิ่งขึ้นเมื่อ:

aptitude -F'|%p|%d|' search '~s hamradio ~r native'

-F'|%p|%d|'สง่างามมากโดยเฉพาะอย่างยิ่งกับ อย่างไรก็ตามเป็นไปได้ไหมที่จะไม่แสดงรายการ:i386แพ็กเกจโดยการเพิ่ม!-expression เข้ากับsearchสตริง?
Serge Stroobandt

1
@GinGordon ใช่เพียงแค่เพิ่มลง~r nativeในคำค้นหา ~rเป็น?architectureที่ตรงกับสถาปัตยกรรมของแพคเกจและรายชื่อเพียงคนที่มีสถาปัตยกรรมเดียวกันกว่าระบบที่เทียบเท่ากับnative dpkg --print-architectureBTW คุณต้องการรายการพร้อมคำอธิบายแพ็คเกจหรือไม่
Braiam

ที่ดี! และใช่ฉันได้แก้ไขคำถามเพื่อรวมคำอธิบายแพ็คเกจ โปรดแก้ไขคำตอบของคุณตามนั้นและคุณจะได้รับคำตอบที่ดีที่สุดสำหรับการลงคะแนนโดยสังเขป
Serge Stroobandt

@GinGordon ลองดู
Braiam

1
@GinGordon หากคุณติดตั้งaptitude-docแพ็กเกจและไปที่/usr/share/doc/aptitude/html/en/index.htmlเบราว์เซอร์ของคุณคุณจะพบfile:///usr/share/doc/aptitude/html/en/ch02s04s05.htmlกับสิ่งที่น่ารังเกียจทั้งหมด
Braiam

11

ตรวจสอบให้แน่ใจว่ามีการติดตั้งแพ็คเกจเครื่องมือ dctrl ติดตั้งเครื่องมือ dctrlมันมีคำสั่งที่มีประโยชน์สำหรับการค้นหารายการแพ็กเกจ apt และ dpkg ในการรับรายละเอียดทั้งหมดของแพ็คเกจทั้งหมดจากส่วนเฉพาะที่สามารถติดตั้งได้กับ apt ให้เรียกใช้

grep-aptavail -F Section hamradio

นี่จะแสดงข้อมูลเมตาแพคเกจแบบเต็มสำหรับทุกแพ็คเกจในhamradioส่วน หากสิ่งที่คุณต้องการดูคือชื่อแพ็คเกจให้เรียกใช้

grep-aptavail -n -F Section -s Package hamradio

หากระบบของคุณตั้งค่าไว้สำหรับ multiarch แพคเกจเดียวกันอาจแสดงมากกว่าหนึ่งครั้งในรายการนี้หากสร้างขึ้นสำหรับสถาปัตยกรรมมากกว่าหนึ่งแห่ง ดังนั้นในการปรับแต่งเพิ่มเติมให้ใช้อย่างใดอย่างหนึ่ง

grep-aptavail -n -F Section -s Package hamradio | sort | uniq

หรือ

grep-aptavail -n -F Section -s Package hamradio | sort -u

เพื่อเรียงลำดับรายการแพ็กเกจและลบแพ็กเกจที่ซ้ำกันด้วยชื่อเดียวกัน

โปรดทราบว่าคุณจะต้องใช้ชื่อจริงของส่วนซึ่งแตกต่างจากชื่อ "อ่านง่าย" ที่ Synaptic แสดงใน GUI ตัวอย่างเช่นการค้นหาด้านบนใช้ชื่อส่วนhamradioแทนสตริง "วิทยุสมัครเล่น" ที่แสดงใน Synaptic

ดู man page สำหรับgrep-aptavailสำหรับคำอธิบายแบบเต็มของตัวเลือกทั้งหมดและตัวอย่างบางส่วน


3

เขตข้อมูลเพิ่มเติมในบรรทัดเดียวที่มีตัวคั่นโดยพลการ

หนึ่งซับในต่อไปนี้จะพิมพ์ชื่อแพ็กเกจที่ไม่ซ้ำกันทั้งหมดของส่วนที่เก็บพร้อมกับคำอธิบายของพวกเขาแต่ละคนในบรรทัดเดียว เขตข้อมูลทั้งหมดจะถูกคั่นด้วยอักขระท่อเช่นพร้อมสำหรับการแปลงเป็นตารางท่อ Markdown ตารางส่งผลให้สามารถพบได้บนเว็บไซต์ของฉัน

grep-aptavail -n -s Package,Description -F Section hamradio |paste -sd '||\n' |sed 's:^:|:' |sort -u

2

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

$ dpkg-query -W -f='${binary:Package} ${Section}\n' | awk '{if ($2 == "shells") {print $1}}'
bash
bash-completion
busybox-initramfs
busybox-static
dash
zsh
zsh-common
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.