Apt-cache: จะแสดงรายการแพ็คเกจที่ติดตั้งทั้งหมดพร้อมหมายเลขเวอร์ชั่นได้อย่างไร


51

apt-cache dump --installed ไม่ทำงานมันแสดงรายการแพ็คเกจที่ถอนการติดตั้งเช่นกัน

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


3
ข้อผิดพลาด # 775771จำกัด ผลลัพธ์การค้นหา apt-cache ไปยังแพ็คเกจที่ติดตั้ง
bartolo-otrit

คำตอบ:


53

ลอง dpkg -l

มันจะแสดงรายการแพ็คเกจเวอร์ชันและคำอธิบายสั้น ๆ ให้คุณ


1
ผมชอบยังเพราะมันยังแสดงให้เห็นเป็นที่หนึ่งapt-show-versions uptotdate
malat

37

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

dpkg -l

ในการแสดงรายการแพ็คเกจที่ติดตั้งอย่างถูกต้องเท่านั้นและไม่ตัดทอนชื่อ:

dpkg -l | grep '^ii'

เพื่อให้สามารถควบคุมรูปแบบผลลัพธ์ได้มากขึ้นคุณสามารถใช้dpkg-query:

dpkg-query -W -f '${status} ${package} ${version}\n' | \
sed -n 's/^install ok installed //p'

13

คำสั่งอื่น ๆ สามารถ:

apt-show-versions

นอกจากนี้ยังให้ข้อมูลเกี่ยวกับสถานะของแพ็กเกจ (ทันสมัย, อัปเกรดได้, ... ) และเกี่ยวกับการกระจายดั้งเดิม (wheezy, jessie, ... ) หนึ่งสามารถกรองแพคเกจที่มาจาก backport หรือที่เก็บแปลกใหม่อื่น ๆ

โปรแกรมนี้บรรจุแยกกัน ติดตั้งครั้งแรกด้วย:

apt-get install apt-show-versions

มันดีมาก ๆ เพราะมันแสดงเวอร์ชั่นที่สามารถอัพเกรดเป็นแพ็คเกจได้ +1
Randall Cook

เมื่อรวมกับapt-mark showmanualสิ่งนี้จะช่วยให้คุณมีวิธีที่ดีและง่ายในการเรียกคืนแพ็คเกจทั้งหมดที่ติดตั้งด้วยตนเองดูคำตอบ Askubuntu นี้ได้ apt-mark showmanual > /tmp/versions && apt-show-versions | grep -f /tmp/versions
Gregor

4

คำสั่งต่อไปนี้แสดงรายการแพ็กเกจที่มีเวอร์ชันและยังให้คุณตั้งค่าระบบด้วยแพ็กเกจและเวอร์ชันเดียวกันในภายหลังโดยใช้pkg-selections.txtไฟล์ที่สร้างขึ้นที่นี่:

aptitude -q -F "%?p=%?V %M" --disable-columns search \~i > pkg-selections.txt

แต่ละบรรทัดจะมีชื่อแพ็คเกจเวอร์ชั่นและตัวเลือก "A" หากมีการติดตั้งแพ็คเกจโดยอัตโนมัติ

ที่มา: " การโคลนระบบ Debian - แพ็คเกจและเวอร์ชันที่เหมือนกัน " pkg-selections.txtนอกจากนี้ยังมีสคริปต์ที่กำหนดค่าระบบจาก


4

ในการแสดงชื่อของแต่ละแพ็คเกจที่ติดตั้งให้พิมพ์เป็นผู้ใช้ใด ๆ :

dpkg --get-selections

คุณจะได้ผลลัพธ์ดังนี้:

accountsservice              install
aclinstall                   install
acpi-supportinstall          install
acpidinstall                 install
...

ในการลบสตริงอักขระ "install" ที่ไม่จำเป็นคุณสามารถใช้sed :

dpkg --get-selections | sed 's:install$::'

และถ้าคุณไม่ต้องการบันทึกลงในไฟล์ชื่อInstalledPackagesคุณพิมพ์สิ่งนี้:

dpkg --get-selections | sed 's:install$::' > InstalledPackages

1

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

root@backup_server /mnt/old_root/var/lib/dpkg/info # ls -la *.list | awk {'print $9'}| sed 's/.list//' >> /root/installed_app

ตอนนี้/root/installed_appมีแพ็คเกจที่ติดตั้งทั้งหมด!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.