วิธีแสดงรายการแพ็คเกจที่ติดตั้งทั้งหมด


1884

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


7
นี้ได้รับการตอบอยู่แล้วนี่
Simon Quigley

2
ว้าวคำตอบที่ผ่านมาดูเหมือนว่าจะมีวิธีมากมายที่จะทำให้สิ่งนี้สำเร็จ: /
Madivad

2
ฉันจะติดตั้งจำนวนมากในระบบใหม่จากไฟล์ข้อความดังกล่าวได้อย่างไร
Elysium

2
@Madivad ผู้จัดการแพ็คเกจเหล่านี้ควรจะทำให้ชีวิตง่ายขึ้น ...
René Nyffenegger

คำตอบ:


2135

Ubuntu 14.04 ขึ้นไป

aptเครื่องมือบน Ubuntu 14.04 และสูงกว่านี้จะทำให้เรื่องง่ายมาก

apt list --installed

รุ่นเก่ากว่า

ในการรับรายการแพคเกจที่ติดตั้งภายในเครื่องให้ทำในเทอร์มินัลของคุณ:

dpkg --get-selections | grep -v deinstall

( -vแท็ก "สลับกลับ" grep เพื่อส่งคืนบรรทัดที่ไม่ตรงกัน)

ในการรับรายการแพคเกจเฉพาะที่ติดตั้ง:

dpkg --get-selections | grep postgres

หากต้องการบันทึกรายการนั้นในไฟล์ข้อความที่เรียกว่าpackagesบนเดสก์ท็อปของคุณให้ทำสิ่งนี้ในเทอร์มินัลของคุณ:

dpkg --get-selections | grep -v deinstall > ~/Desktop/packages

หรือใช้เพียงแค่

dpkg -l

(คุณไม่จำเป็นต้องเรียกใช้คำสั่งใด ๆ เหล่านี้ในฐานะ superuser ดังนั้นจึงไม่sudoจำเป็นต้องมีตัวแปรอื่นใดในที่นี้)


37
จากนั้นเมื่อติดตั้งกับคอมพิวเตอร์เครื่องใหม่ให้ทำcat ~/Desktop/packages > sudo dpkg --set-selections && sudo apt-get dselect upgrade ซอร์สโค้ด
koanhead

13
ไวยากรณ์สำหรับ dpkg อาจเปลี่ยนไปเล็กน้อยตั้งแต่ปี 2549 เนื่องจากคำสั่งนั้นไม่ทำงานสำหรับฉัน @koanhead sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgradeไม่หลอกลวง
James

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

73
เป็นเรื่องน่าเศร้าและน่าประหลาดใจที่ชุมชนของ @intuited ไม่ได้แสดงความคิดเห็นที่ดีขึ้น ผู้มีส่วนร่วมที่ได้รับการจัดอันดับสูงกว่าจะหยุดคิดก่อนที่จะให้คำแนะนำที่เพียงแค่โหลดแพคเกจเก่าในเวอร์ชั่นใหม่ของอูบุนตูไม่ใช่ความคิดที่ดี (?) ด้วยตัวเลือก dpkg ทั้งหมดฉันยังไม่เห็นแพ็คเกจที่ดึงผู้ใช้ที่ติดตั้งแพคเกจ 'อย่างชัดแจ้ง' โดยผู้ใช้เพื่อให้สามารถโหลดรายการนั้นซ้ำและอนุญาตให้ติดตั้งการพึ่งพา ฉันชอบที่จะรู้ - กรุณาแบ่งปันข้อมูลนั้น ในระหว่างนี้ให้ทำรายการแพ็คเกจที่คุณต้องการในการติดตั้งใหม่และเรียกใช้งานนั้น
Ricalsin

62
เราทุกคนรู้ว่าลินุกซ์เลือกปฏิบัติคนที่ไม่มีหน่วยความจำการถ่ายภาพ apt list installedแต่อย่างจริงจังสิ่งที่จะมีความผิดด้วย สักวันเราควรหยุดความล้มเหลวอย่างเป็นระบบในหลักการ "รักษาสิ่งที่ง่าย"

414

ในการรับเฉพาะแพ็คเกจที่ติดตั้งไว้อย่างชัดแจ้ง (ไม่ได้ติดตั้งเป็นการอ้างอิงเท่านั้น) คุณสามารถเรียกใช้

aptitude search '~i!~M'

ซึ่งจะรวมถึงคำอธิบายสั้น ๆ ซึ่งคุณอาจต้องการ ถ้าไม่มีให้เพิ่มตัวเลือก-F '%p'ดังกล่าวโดย karthick87


ตัวเลือกอื่นน่าจะเป็นการคัดลอกไฟล์/var/lib/apt/extended_statesซึ่งเป็นฐานข้อมูลไฟล์ข้อความในรูปแบบนี้:

Package: grub-common
Architecture: amd64
Auto-Installed: 0

Package: linux-headers-2.6.35-22-generic
Architecture: amd64
Auto-Installed: 1

Auto-Installed: 0 ระบุว่าแพ็กเกจถูกติดตั้งอย่างชัดเจนและไม่ได้เป็นเพียงการพึ่งพา


52
นี่ควรเป็นคำตอบที่ถูกต้อง เหตุใดจึงต้องอ้างอิงรายการ
Stavros Korokithakis

13
นี่ควรเป็นคำตอบ แต่การใช้ความถนัดเป็นเรื่องที่ไม่น่าเชื่อถือเพราะ Multiarch ในปัจจุบัน (แก้ไขระหว่างทาง) โชคไม่ดี ยัง +1 สำหรับการชี้เฉพาะรายการแพคเกจที่ติดตั้งอย่างชัดเจนและวิธีการทำเช่นนี้ (แม้ว่าจะไม่สามารถใช้ได้ในปัจจุบัน 11.10+)
gertvdijk

4
@intuited "Fix Fix" สำหรับ Precise (บางเวลาที่ผ่านมา) :)
gertvdijk

11
รายการนี้แสดงรายการแพ็คเกจทั้งหมดไม่ใช่เพียงแค่ติดตั้งแพคเกจด้วยตนเองบน Ubuntu 13.10
Eamon Nerbonne

5
มีวิธีในการบรรลุผลลัพธ์เดียวกันด้วยapt-getหรือไม่
Javier Arias

203

ในการแสดงรายการแพ็กเกจทั้งหมดที่ติดตั้งโดยเจตนา (ไม่ใช่การขึ้นต่อกัน) โดยคำสั่ง apt ให้รันดังต่อไปนี้:

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep '^Commandline:'

นี่เป็นมุมมองแบบย้อนกลับโดยมีคำสั่งเก่าแสดงอยู่ก่อน:

Commandline: apt-get install k3b
Commandline: apt-get install jhead
...

ข้อมูลการติดตั้งยังแสดงการใช้งานแบบซิงโครนิก แต่ไม่มีรายละเอียด (เหมือนกันกับวันที่ติดตั้ง):

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep -B1 '^Commandline:'

ให้ดังต่อไปนี้:

Start-Date: 2012-09-23  14:02:14
Commandline: apt-get install gparted
Start-Date: 2012-09-23  15:02:51
Commandline: apt-get install sysstat
...

3
หรือ (ด้วย zgrep และลบข้อความอัปเดต):zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:'
belacqua

3
วิธีนี้จะพลาดแพ็คเกจที่ติดตั้งหรือdpkgไม่?
drevicko

5
ในขณะที่คำตอบง่ายๆข้างต้นนั้นดีสำหรับผู้ใช้ทั่วไป วิธีนี้เป็นวิธีที่ดีที่สุดในการย้อนรอยการปรับแต่งทั้งหมดที่ทำกับเครื่องเนื่องจากมันแสดงให้เห็นว่าสิ่งที่ถูกลบหรือเพิ่มเติมจากอิมเมจพื้นฐานขณะที่มันแสดงรายการตามลำดับที่ทำและช่วยให้คุณจำได้ว่า ลำดับที่ถูกต้องเพื่อเพิ่มพวกเขากลับมาในระบบอื่น
AllGamer

3
@drevicko คุณถูกต้อง แต่จะไม่แสดงรายการแพคเกจที่ติดตั้งด้วย dpkg
Steve Buzonas

3
มันค่อนข้างมีประโยชน์สำหรับการจัดระเบียบ - สมองของฉันชอบมันด้วยวิธีนี้ไม่ว่าด้วยเหตุผลอะไรก็ตาม
JeremyFelix

191

สร้างการสำรองข้อมูลของแพ็คเกจที่ติดตั้งอยู่ในปัจจุบัน:

dpkg --get-selections > list.txt

จากนั้น (ในระบบอื่น) กู้คืนการติดตั้งจากรายการนั้น:

dpkg --clear-selections
sudo dpkg --set-selections < list.txt

ในการกำจัดแพ็คเกจเก่า:

sudo apt-get autoremove

ในการรับการติดตั้งเช่นเวลาสำรอง (เช่นการติดตั้งแพ็คเกจที่กำหนดโดยdpkg --set-selections):

sudo apt-get dselect-upgrade

5
เคล็ดลับที่ยอดเยี่ยมเกี่ยวกับการกู้คืนในเครื่องอื่น +1
Drew Noakes

15
การโอนย้ายระหว่างเครื่องอูบุนตู 12.04 2 เครื่องที่แตกต่างกันวิธีนี้ทำให้ระบบของฉันพัง มันใช้เวลาสักครู่จนกว่าฉันจะรู้ว่าubuntu-desktopถอนการติดตั้งอย่างใด- อาจเป็นเพราะหนึ่งในคำสั่ง dpkg ระวังฉันใช้เวลาหลายชั่วโมงเพื่อซ่อมแซมความเสียหาย!
Karl Frisk

1
sudo apt-mark hold name-your-package และบางครั้งระบบจะอัปเดตแอปที่คุณต้องการโดยเฉพาะระบบที่จะได้สัมผัสมันเคยทำไฟนี้ในตอนท้ายของคำสั่ง วิธีนี้จะป้องกัน apt-get จากการอัปเกรดเป็นเวอร์ชันปัจจุบันซึ่งเป็นค่าเริ่มต้นสำหรับกระบวนการอัปเดต
Faron

77
apt-mark showmanual

รัฐคนหน้า:

จะพิมพ์รายการแพคเกจที่ติดตั้งด้วยตนเอง

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

ในการแสดงผลลัพธ์เป็นไฟล์ข้อความ:

apt-mark showmanual > list-manually-installed.txt

ใน Debian "apt-mark showmanual" ไม่ได้ทำงานกับ "squeeze" แต่ทำงานกับ "wheezy"
Wadih M.

11
เช่นเดียวกับคำตอบอื่น ๆ ส่วนใหญ่apt-mark showmanualไม่ได้จริงๆ นอกจากนี้ยังแสดงรายการแพ็คเกจที่ติดตั้งโดยอัตโนมัติเป็นจำนวนมากอาจเป็นส่วนหนึ่งของการติดตั้งพื้นฐาน
mivk

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

5
apt list --manual-installedไม่มีใครพูดถึงทางเลือกนี้จะแสดงรายการแพคเกจติดตั้งด้วยตนเอง:
ปาโบล

41

dpkg-query(แทนdpkg --get-selectionsซึ่งจะแสดงรายการแพคเกจบางอย่างที่ไม่ได้ติดตั้ง) ดังนี้:

dpkg-query -W -f='${PackageSpec} ${Status}\n' | grep installed |  sort -u | cut -f1 -d \ > installed-pkgs

หรือ:

dpkg -l | grep ^ii | sed 's_  _\t_g' | cut -f 2 > installed-pkgs

โดยทั่วไป# for pkg in `cat installed-pkgs`; do apt-get install -y $pkg; doneฉันใช้ระบบที่สองเพื่อติดตั้งแพคเกจ
user9869932

1
@julianromera: apt-get install -y $(< installed-pkgs)จะทำให้ apt-get ทำงานเพียงครั้งเดียวและคอยดูแลการพึ่งพาทั้งหมดในครั้งเดียว
jamadagni

@julianromera ... แก้ไขฉันถ้าฉันเข้าใจผิด แต่สร้างแอพที่มีการอ้างอิงก่อนที่จะทำการติดตั้งจะเป็นsudo apt-get build-dep name-package; sudo apt-get install name-package; อย่างไร
Faron

39

ในการแสดงรายการแพ็คเกจที่ติดตั้งทั้งหมด

dpkg -l |awk '/^[hi]i/{print $2}' > 1.txt

หรือ

aptitude search -F '%p' '~i' > 1.txt

หรือ

dpkg --get-selections > 1.txt

หมายเหตุ:
คุณจะได้รับไฟล์ 1.txt ผลลัพธ์ในโฟลเดอร์บ้านของคุณหรือคุณสามารถระบุเส้นทางของคุณเอง


35

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

ไฟล์ที่บันทึกจากสิ่งนี้สามารถโหลดลงในเครื่องใหม่โดยใช้ "ไฟล์ / เครื่องหมายการอ่าน" ใน Synaptic


34

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


ฉันไม่ได้ลองใช้มิเรอร์ที่สมบูรณ์ แต่มีเพียงความจริงที่ว่าการพิจารณาไฟล์ปรับแต่งนั้นน่ากลัว ฉันกำลังมองหาเครื่องมือดังกล่าวอยู่พักหนึ่งแล้วขอบคุณมาก!
tbolender

33

คุณต้องการติดตั้งแพ็กเกจใหม่ตอนนี้ที่ 12.04 ใช่ไหม?

ถ้าเป็นเช่นนั้นมันง่ายมาก คุณจะต้องมีบัญชี "Ubuntu ลงชื่อเข้าใช้ครั้งเดียว" (สร้างก่อนทำการติดตั้งใหม่เพื่อให้ระบบของคุณซิงค์)

  1. ไปที่ศูนย์ซอฟต์แวร์และค้นหาตัวเลือก "ซิงค์ระหว่างคอมพิวเตอร์ ... " ใต้เมนูไฟล์

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

  3. เมื่อคุณจะติดตั้งใหม่คอมพิวเตอร์นั้นจะถือเป็นคอมพิวเตอร์เครื่องใหม่

  4. คุณเพียงแค่ต้องลงชื่อเข้าใช้บัญชี Ubuntu ของคุณและคอมพิวเตอร์เครื่องก่อนหน้าของคุณจะปรากฏขึ้น

  5. คลิกที่มัน คุณจะได้รับรายการแอพทั้งหมด เลือก "ติดตั้ง" บนแอพที่คุณต้องการติดตั้ง


ฉันตั้งชื่อเดียวกันสำหรับคอมพิวเตอร์ของฉันในการติดตั้งใหม่เพื่อป้องกันการดาวน์โหลดจำนวนมากจาก Ubuntu หนึ่งเซิร์ฟเวอร์ในแต่ละครั้ง คุณคิดว่าสิ่งนี้ใช้ได้กับฉันไหม
Alen

32

นอกจากนี้ยังมีเครื่องมือที่เรียกว่าAptik (ทั้งบรรทัดคำสั่งและ GUI) ซึ่งสามารถช่วยคุณดูรายการแพ็คเกจที่ติดตั้งทั้งหมดพร้อมตัวเลือกในการเลือก / ยกเลิกการเลือกแพคเกจบางรายการสร้างรายการสำรองแล้วเรียกคืนแพคเกจชุดเดียวกันใน ระบบอื่น

ติดตั้ง:

sudo add-apt-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install aptik

ข้อมูลเพิ่มเติม: https://teejeetech.in/aptik/

ป้อนคำอธิบายรูปภาพที่นี่

ดังที่เห็นในภาพหน้าจอAptikให้คุณสำรองและกู้คืน PPAsซึ่งจำเป็นอย่างยิ่งที่จะต้องติดตั้งแพ็คเกจที่ติดตั้งไว้


หากคุณต้องการ GUI ที่คุณมีการติดตั้งapt-get install aptik-gtkเช่นกัน
Maduka Jayalath

30

APT-Clone แพคเกจนี้สามารถใช้ในการโคลน / กู้คืนแพ็คเกจบนระบบที่ใช้ apt

  • มันจะบันทึก / กู้คืนแพคเกจ, source.list, พวงกุญแจและสถานะที่ติดตั้งโดยอัตโนมัติ
  • นอกจากนี้ยังสามารถบันทึก / กู้คืนแพ็กเกจที่ไม่สามารถดาวน์โหลดได้อีกต่อไปโดยใช้ dpkg-repack

แหล่งที่มา: man apt-clone

APT-Clone ใช้ubiquity(ตัวติดตั้ง Ubuntu) สำหรับกระบวนการอัปเกรด มันดีกว่าdpkg --get-selectionsโซลูชันเพราะ:

  1. มันเก็บรักษาข้อมูลที่เก็บทั้งหมด
  2. มันติดตามสิ่งที่ติดตั้งแพคเกจโดยอัตโนมัติ
  3. อนุญาตให้หีบห่อไฟล์ DEB ที่ติดตั้งใหม่ภายในเครื่อง

วิธีใช้

  1. ติดตั้ง

    sudo apt-get install apt-clone
    
  2. ทำการสำรองข้อมูล

    sudo apt-clone clone path-to/apt-clone-state-ubuntu-$(lsb_release -sr)-$(date +%F).tar.gz
    
  3. คืนค่าการสำรองข้อมูล

    sudo apt-clone restore path-to/apt-clone-state-ubuntu.tar.gz
    

    คืนค่าเป็นรีลีสที่ใหม่กว่า:

    sudo apt-clone restore-new-distro path-to/apt-clone-state-ubuntu.tar.gz $(lsb_release -sc)
    

มันทำให้ไฟล์ tar gzipped ง่าย ๆ ซึ่งสามารถแก้ไขและตรวจสอบได้ง่ายก่อนที่จะกู้คืนบนเครื่องอื่น นี่คือตัวอย่างของโครงสร้าง:

/
├── etc
│   └── apt
│       ├── preferences.d
│       ├── sources.list
│       ├── sources.list.d
│       │   ├── anton_-ubuntu-dnscrypt-vivid.list
│       │   ├── maarten-baert-ubuntu-simplescreenrecorder-vivid.list
│       │   └── megasync.list
│       ├── trusted.gpg
│       └── trusted.gpg.d
│           ├── anton__ubuntu_dnscrypt.gpg
│           ├── anton__ubuntu_dnscrypt.gpg~
│           ├── maarten-baert_ubuntu_simplescreenrecorder.gpg
│           └── maarten-baert_ubuntu_simplescreenrecorder.gpg~
└── var
    └── lib
        └── apt-clone
            ├── extended_states
            ├── installed.pkgs
            └── uname

26

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

หากต้องการรับไฟล์ Manifest สำหรับรุ่นเดสก์ท็อปที่ 12.04 และใหม่กว่าให้ไปที่ไซต์นี้เลือกรุ่นของคุณแล้วเลื่อนลงมาด้านล่างอิมเมจซีดีลงในส่วนของไฟล์ คุณจะพบบางอย่างเช่น "ubuntu-12.04.4-desktop-amd64 + mac.manifest" ที่ตรงกับสถาปัตยกรรมของคุณ

สำหรับรุ่นเซิร์ฟเวอร์คุณจะต้องได้รับไฟล์ Manifest จาก ISO ที่ใช้ในการติดตั้งระบบดั้งเดิม สำหรับ VPS หรือเซิร์ฟเวอร์คลาวด์ผู้ให้บริการของคุณอาจทำให้ภาพพร้อมใช้งานหรือคุณอาจต้องติดต่อกับพวกเขา

นี่คือตัวอย่างการใช้รหัสจากโพสต์อ้างอิงพร้อมกับการแก้ไขเพื่อติดตั้งบนเซิร์ฟเวอร์ใหม่

เซิร์ฟเวอร์เก่า (รหัสจากโพสต์อื่นบันทึกผลลัพธ์ไปยังไฟล์):

aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currently-installed.list
wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest \
  | cut -f1 | sort -u > default-installed.list
comm -23 currently-installed.list default-installed.list > user-installed.list

บนเซิร์ฟเวอร์ใหม่ให้คัดลอกไฟล์โดยใช้ scp จากนั้นใช้ sed เพื่อผนวก 'ติดตั้ง' ลงในทุกบรรทัด (-i ทำการแทนที่แบบอินไลน์) จากนั้นคุณสามารถใช้รายการเป็นอินพุตเพื่อ 'dpkg --set-selections' และติดตั้งแพ็กเกจด้วย apt-get:

scp user@oldserver:user-installed.list .
sed -i 's/$/\tinstall/' user-installed.list
sudo dpkg --set-selections < user-installed.list
sudo apt-get dselect-upgrade

ก่อนที่จะเริ่มภารกิจนี้ฉันขอแนะนำให้อ่านและทำความเข้าใจทุกส่วนของโพสต์ที่กล่าวถึงในตอนต้นจากนั้นศึกษาคู่มืออ้างอิงความถนัดเพื่อดูรายละเอียดเกี่ยวกับรูปแบบการค้นหา


25

คุณสามารถดูaptบันทึกใต้/var/log/apt/และdpkgบันทึกใต้/var/log/

และคุณสามารถรับรายการแพ็กเกจที่ติดตั้งด้วยคำสั่ง:

dpkg -l | grep '^ii '

23

ฉันประหลาดใจที่apt-cacheคำสั่งที่ออกแบบมาเพื่อจุดประสงค์นี้ไม่ได้ถูกกล่าวถึงข้างต้น ...

apt-cache pkgnames

สำหรับข้อมูลเพิ่มเติมเรียกใช้apt-cache --help:

** apt-cache เป็นเครื่องมือระดับต่ำที่ใช้ในการสืบค้นข้อมูล
จากไฟล์แคชไบนารีของ APT

คำสั่ง:
   gencaches - สร้างทั้งแพ็คเกจและแคชต้นทาง
   showpkg - แสดงข้อมูลทั่วไปสำหรับแพ็คเกจเดียว
   showsrc - แสดงระเบียนแหล่งที่มา
   สถิติ - แสดงสถิติพื้นฐานบางอย่าง
   ดัมพ์ - แสดงไฟล์ทั้งหมดในรูปแบบ terse
   dumpavail - พิมพ์ไฟล์ที่มีอยู่เพื่อ stdout
   unmet - แสดงการพึ่งพาแบบไม่แน่นอน
   ค้นหา - ค้นหารายการแพ็กเกจสำหรับรูปแบบ regex
   แสดง - แสดงระเบียนที่อ่านได้สำหรับแพ็คเกจ
   ขึ้นอยู่กับ - แสดงข้อมูลการอ้างอิงดิบสำหรับแพคเกจ
   rdepends - แสดงข้อมูลการพึ่งพาแบบย้อนกลับสำหรับแพ็คเกจ
   pkgnames - แสดงรายชื่อของแพ็คเกจทั้งหมดในระบบ
   dotty - สร้างกราฟแพคเกจสำหรับ GraphViz
   xvcg - สร้างกราฟแพคเกจสำหรับ xvcg
   นโยบาย - แสดงการตั้งค่านโยบาย

ตัวเลือก:
  -h ข้อความช่วยเหลือนี้
  -p =? แพ็กเกจแคช
  -s =? แหล่งแคช
  -q ปิดใช้งานตัวบ่งชี้ความคืบหน้า
  -i แสดงเฉพาะ deps ที่สำคัญสำหรับคำสั่ง unmet
  -c =? อ่านไฟล์การกำหนดค่านี้
  -o =? ตั้งค่าตัวเลือกการกำหนดค่าเองเช่น -o dir :: cache = / tmp
ดูหน้า apt-cache (8) และ apt.conf (5) หน้าคู่มือสำหรับข้อมูลเพิ่มเติม
**

5
TLDR; ในที่สุดฉันก็พบว่าapt --installed listให้ผลลัพธ์ที่ดีที่สุด (ตามที่แนะนำในคำตอบด้านบน แต่apt-cache pkgnamesดูเหมือนว่าจะทำเคล็ดลับได้อย่างรวดเร็วก่อนมันรายการ "ทุกแพคเกจในระบบ" (ต่อข้อความช่วยเหลือด้านบน) ซึ่งรวมถึงแพคเกจที่รู้เกี่ยวกับ แต่ไม่ได้ติดตั้งจริง ๆ มี--installedตัวเลือก แต่ดูเหมือนจะใช้งานpkgnamesไม่ได้
sxc731

2
apt-cache pkgnames | wc -lให้55909แพคเกจ (ระบบรู้เกี่ยวกับ) ในขณะที่aptitude search '~i!~M' | wc -lให้2160(แพคเกจติดตั้งอย่างชัดเจนโดยไม่มีการอ้างอิง)
knb


18

คำสั่งด้านล่างจะแสดงรายการแพ็คเกจทั้งหมดที่ติดตั้ง

grep ' installed ' /var/log/dpkg.log /var/log/dpkg.log.1 | awk '{print $5}' | sort -u

.1 หมายถึงบันทึกถูกหมุนหากเป็นกรณีนั้นอาจเป็นการดีกว่าถ้า grep /var/log/dpkg.log*เพื่อรับบันทึกการหมุนทั้งหมด
Steve Buzonas

17

ช่วยวิกิชุมชนนี้ - เพิ่มโซลูชั่นที่ทันสมัย


dpkg, xargs & apt-get

คำสั่งนี้ควรสร้างไฟล์ข้อความที่มีแพ็คเกจที่ติดตั้งสำเร็จแล้ว:

dpkg -l | awk  '{print $2}' > package_list.txt

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

xargs < package_list.txt apt-get install -y

apt-cache, xargs, & apt-get

ใช้วิธีการนี้เฉพาะในกรณีที่คุณต้องการให้ติดตั้งแพ็กเกจปัจจุบันทั้งหมดโดยใช้รายการ ( ซึ่งรวมถึงการติดตั้งอัตโนมัติ ฯลฯ )

ส่งออกการตอบสนองของ 'apt-cache pkgnames' ไปยังไฟล์เราจะตั้งชื่อ "package_list.txt" คุณสามารถทำสิ่งนี้ได้ด้วย:

apt-cache pkgnames > package_list.txt

จากนั้นเมื่อคุณต้องการติดตั้งแพคเกจจาก "package_list.txt" คุณจะใช้คำสั่งนี้:

xargs < package_list.txt apt-get install -y

apt-mark, xargs, & apt-get

เราสามารถใช้คำสั่งapt-mark showmanualเพื่อให้รายการของแพคเกจที่ติดตั้งด้วยตนเองหรือเริ่มต้นกับ Ubuntu เราจะต้องการส่งออกไปยังไฟล์ที่เราจะเรียกว่า "package-list.txt" ใช้คำสั่งนี้เพื่อทำให้สำเร็จ:

apt-mark showmanual > package-list.txt

คำสั่งที่เราจะใช้ในการติดตั้งแพ็กเกจจากไฟล์ "package_list.txt" อยู่ด้านล่าง

xargs < package_list.txt apt-get install -y

Aptik Migration Utility

ยูทิลิตี้เพื่อลดความยุ่งยากในการติดตั้งแพคเกจซอฟต์แวร์อีกครั้งหลังจากการอัพเกรด / ติดตั้งการกระจายบน Ubuntu อีกครั้ง
[ Launchpad | Aptik ]

สำหรับข้อมูลเกี่ยวกับ Aptik ลองไปที่หน้าอย่างเป็นทางการของมันและสำหรับภาพหน้าจอคลิกที่นี่หรือดูส่วนท้ายของส่วนนี้

การติดตั้ง Aptikนั้นง่ายมาก ทำตามขั้นตอนเหล่านี้:

  1. เพิ่ม PPA ด้วย:
    sudo add-apt-repository -y ppa:teejee2008/ppa

  2. อัปเดต apt ด้วยคำสั่งด้านล่าง
    sudo apt-get update

  3. ติดตั้ง Aptik โดยใช้:
    sudo apt-get install aptik

Aptik Migration Utility v16.5.2



1
ผลลัพธ์จากapt-mark showmanualรวมถึง Bash, Unity และ Xorg รวมถึงกลุ่มอื่น ๆ พวกเขาควรจะอยู่ที่นั่นหรือไม่?
wjandrea

@wjandrea ผลลัพธ์ของ 'apt-mark showmanual' รวมถึง Bash & Unity ในรายการที่สร้างขึ้นของฉันด้วย ควรเป็นเรื่องปกติเนื่องจากคำสั่งจะแสดงรายการที่ติดตั้งด้วยตนเอง & ติดตั้งเริ่มต้นด้วย Ubuntu
เดวิดเพื่อนของคุณ

16

หากต้องการบันทึกรายการแพ็กเกจที่ติดตั้งลงในไฟล์ชื่อinstalled_packages.txtให้รัน:

dpkg-query --list >> installed_packages.txt

3

ฉันคิดว่ามันน่าสนใจที่จะทราบapt list --installedหรือdpkg-query --listใช้ไฟล์ที่เรียกว่า/var/lib/dpkg/statusด้านหลังซึ่งข้อมูลทั้งหมดเกี่ยวกับแพ็คเกจเป็นเครา

ดังนั้นหากคุณต้องการจัดการกับรายการแพคเกจcat /var/lib/dpkg/statusสุดพิเศษ

หมายเหตุ: อย่าแก้ไข/var/lib/dpkg/statusไฟล์


3

นอกจากนี้ในการAPTแพคเกจ, แพคเกจ GUI จำนวนมากมีการกระจายในปัจจุบันเป็นsnaps

หากไม่พบแพ็คเกจของคุณapt list --installedให้ลองsnap list:

$ snap list

Name                  Version                     Rev   Tracking  Publisher       Notes
gimp                  2.10.10                     165   stable    snapcrafters    -
gnome-calculator      3.32.1                      406   stable/…  canonical✓      -
keepassxc             2.4.1                       267   stable    keepassxreboot  -
...

เป็นความคิดที่ดีที่จะเพิ่ม/snap/binใน PATH เพื่อให้คุณสามารถเริ่มต้นจากเทอร์มินัล (ทำโดยอัตโนมัติสำหรับผู้ใช้ที่ไม่ใช่รูท)


1

แพ็กเกจdctrl-toolsจัดเตรียมgrep-statusเครื่องมือเพื่อรับรายการของแพ็กเกจที่ทำเครื่องหมายว่าติดตั้งบนระบบของคุณ:

sudo apt install dctrl-tools

การใช้งาน:

grep-status -FStatus -sPackage -n   "install ok installed"

ดู: man dctrl-tools


1

https://www.rosehosting.com/blog/list-all-installed-packages-with-apt-on-ubuntu/ :

1. รายการแพ็คเกจซอฟต์แวร์ที่ติดตั้งบน Ubuntu

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

sudo apt list --installed

ผลลัพธ์ของคำสั่งจะคล้ายกันมากกับสิ่งต่อไปนี้ขึ้นอยู่กับแพคเกจที่ติดตั้งในปัจจุบัน:

Listing...
acl/xenial,now 2.2.52-3 amd64 [installed]
adduser/xenial,xenial,now 3.113+nmu3ubuntu4 all [installed]
apache2/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed]
apache2-bin/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed,automatic]
apache2-data/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed,automatic]
apache2-doc/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed]
apache2-utils/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed]
apparmor/xenial-updates,now 2.10.95-0ubuntu2.5 amd64 [installed,automatic]
apt/xenial-updates,now 1.2.19 amd64 [installed]
apt-utils/xenial-updates,now 1.2.19 amd64 [installed]
...

2. ใช้โปรแกรมน้อยกว่า

หากต้องการอ่านเอาต์พุตทั้งหมดอย่างง่ายดายคุณสามารถใช้lessโปรแกรม

sudo apt list --installed | less

3. ใช้คำสั่ง GREP

คุณสามารถค้นหาแพ็คเกจเฉพาะผ่านเอาต์พุตโดยใช้ grepโปรแกรม

sudo apt list --installed | grep -i apache

4. แสดงรายการแพ็คเกจทั้งหมดที่รวม Apache

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

apache2/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed]
apache2-bin/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed,automatic]
apache2-data/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed,automatic]
apache2-doc/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed]
apache2-utils/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed]
libapache2-mod-php/xenial,xenial,now 1:7.0+35ubuntu6 all [installed,automatic]
libapache2-mod-php7.0/xenial-updates,now 7.0.13-0ubuntu0.16.04.1 amd64 [installed,automatic]
libapache2-mod-security2/xenial,now 2.9.0-1 amd64 [installed]
libapache2-modsecurity/xenial,xenial,now 2.9.0-1 all [installed]

Apt สนับสนุนรูปแบบเพื่อจับคู่ชื่อแพคเกจและตัวเลือกเพื่อแสดงรายการ(--installed)แพ็คเกจที่ติดตั้งแพคเกจที่สามารถอัพเกรดได้(--upgradeable) หรือ(--all-versions)รุ่นของแพ็คเกจที่มีทั้งหมด

5. ใช้โปรแกรม DPKG

อีกทางเลือกหนึ่งที่คุณสามารถใช้เพื่อแสดงรายการแพ็กเกจซอฟต์แวร์ที่ติดตั้งบนUbuntu VPSของคุณคือdpkgคำสั่ง

sudo dpkg -l

ผลลัพธ์ของคำสั่งจะให้ข้อมูลเช่นชื่อของแพ็คเกจรุ่นสถาปัตยกรรมและคำอธิบายสั้น ๆ เกี่ยวกับแพ็คเกจ แน่นอนคุณสามารถใช้grepโปรแกรมอีกครั้งเพื่อค้นหาแพคเกจเฉพาะ

sudo dpkg -l | grep -i apache

ผลลัพธ์ควรมีลักษณะดังนี้:

ii  apache2                       2.4.18-2ubuntu3.1                     amd64        Apache HTTP Server
ii  apache2-bin                   2.4.18-2ubuntu3.1                     amd64        Apache HTTP Server (modules and other binary files)
ii  apache2-data                  2.4.18-2ubuntu3.1                     all          Apache HTTP Server (common files)
ii  apache2-doc                   2.4.18-2ubuntu3.1                     all          Apache HTTP Server (on-site documentation)
ii  apache2-utils                 2.4.18-2ubuntu3.1                     amd64        Apache HTTP Server (utility programs for web servers)
rc  apache2.2-common              2.2.22-6ubuntu5.1                     amd64        Apache HTTP Server common files
ii  libapache2-mod-php            1:7.0+35ubuntu6                       all          server-side, HTML-embedded scripting language (Apache 2 module) (default)
rc  libapache2-mod-php5           5.5.9+dfsg-1ubuntu4.16                amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  libapache2-mod-php7.0         7.0.13-0ubuntu0.16.04.1               amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  libapache2-mod-security2      2.9.0-1                               amd64        Tighten web applications security for Apache
ii  libapache2-modsecurity        2.9.0-1                               all          Dummy transitional package
ii  libapr1:amd64                 1.5.2-3                               amd64        Apache Portable Runtime Library
ii  libaprutil1:amd64             1.5.4-1build1                         amd64        Apache Portable Runtime Utility Library
ii  libaprutil1-dbd-sqlite3:amd64 1.5.4-1build1                         amd64        Apache Portable Runtime Utility Library - SQLite3 Driver
ii  libaprutil1-ldap:amd64        1.5.4-1build1                         amd64        Apache Portable Runtime Utility Library - LDAP Driver
.

ด้วยการแข่งขันของบทช่วยสอนนี้คุณได้เรียนรู้วิธีแสดงรายการแพ็คเกจที่ติดตั้งใน Ubuntu เรียบร้อยแล้ว


0

มีหลายวิธีที่จะทำเช่นนั้น ในกรณีที่คุณใช้ CentOS อย่างฉันคุณสามารถใช้สิ่งเหล่านี้: 1. yum list installed 2.rpm -qa

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