เป็นไปได้หรือไม่ที่จะได้รับรายชื่อแพ็คเกจที่เพิ่งติดตั้งล่าสุด?


157

เป็นไปได้ไหมที่จะได้รับรายชื่อแพ็คเกจที่ติดตั้งล่าสุดผ่าน apt-get?



1
ตอนนี้ถ้ามีใครบางคนเท่านั้นที่จะบอกฉันถึงวิธีการแสดงรายการแพคเกจติดตั้งด้วยตนเองที่ฉันยังไม่ได้ลบ ถอนหายใจ, Linux
Aleksandr Dubinsky

1
@AleksandrDubinsky apt-mark showmanual | lessทำไม่ได้เหรอ?
GKFX

@GKFX ฉันหมายถึงในบริบทของแพ็คเกจที่เพิ่งติดตั้ง
Aleksandr Dubinsky

@AleksandrDubinsky คุณจะต้องใช้comm -12 a bกับaสำเนาที่เรียงลำดับapt-mark showmanualแล้วและbเรียงลำดับรายการจากหนึ่งในคำตอบด้านล่าง
GKFX

คำตอบ:


180

คำสั่งไปยังรายการแพ็กเกจที่เพิ่งติดตั้งซึ่งติดตั้งผ่านวิธีใด ๆ ( apt-get, Software Center และคณะ):

grep " install " /var/log/dpkg.log

ตัวอย่างผลลัพธ์:

2010-12-08 15:48:14 install python-testtools <none> 0.9.2-1
2010-12-08 15:48:16 install quickly-widgets <none> 10.09
2010-12-08 22:21:31 install libobasis3.3-sdk <none> 3.3.0-17
2010-12-09 12:00:24 install mc <none> 3:4.7.0.6-1
2010-12-09 23:32:06 install oggconvert <none> 0.3.3-1ubuntu1
2010-12-09 23:34:50 install mpg123 <none> 1.12.1-3ubuntu1
2010-12-09 23:34:52 install dir2ogg <none> 0.11.8-1
2010-12-09 23:34:53 install faad <none> 2.7-4
2010-12-09 23:34:54 install wavpack <none> 4.60.1-1
2010-12-10 11:53:00 install playonlinux <none> 3.8.6

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

awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log

คำสั่งสู่รายการประวัติของapt-get(หมายเหตุ: นี่ไม่ได้ติดตั้งรายการการพึ่งพามันเพียงแค่รายการapt-getคำสั่งก่อนหน้านี้ที่ถูกเรียกใช้):

grep " install " /var/log/apt/history.log

ตัวอย่างผลลัพธ์:

Commandline: apt-get install libindicate-doc
Commandline: apt-get install googlecl
Commandline: apt-get --reinstall install ttf-mscorefonts-installer
Commandline: apt-get install valac libvala-0.10-dev
Commandline: apt-get install libgtksourceview-dev
Commandline: apt-get install python-sphinx
Commandline: apt-get install python-epydoc
Commandline: apt-get install quickly-widgets
Commandline: apt-get install libreoffice3* libobasis3.3*
Commandline: apt-get install mc

มีปัญหากับ synaptic คือว่ามันไม่ได้แสดงสิ่งที่คุณจะทำอย่างไรกับความถนัด apt-get และ dpkg ด้วยเหตุผลนี้ +1 สำหรับตัวเลือกนี้
hhlp

คำสั่งนี้จะไม่แสดงการอัปเดต ใช้ศูนย์ซอฟต์แวร์เพื่อดูทุกสิ่ง
บันทึก HD

1
อาจเป็นการดีกว่าถ้าคุณบันทึกไฟล์ข้อความแบบนี้cat /var/log/apt/history.log | grep "\ install\ " > install.log
CrandellWS

4
grep " install " /var/log/dpkg.logจะพอเพียง catไม่มีความจำเป็นที่จะใช้เป็น ดูสิ่งนี้ด้วย
สิงหาคม

1
โปรดทราบว่านี่เป็นเพียงการค้นหาแพ็คเกจที่เพิ่งติดตั้งใหม่ แพ็คเกจที่ติดตั้งเวอร์ชันใหม่ปรากฏupgradeในdpkg.log
Andre Holzner

14

Software Center ของ Ubuntu แสดงประวัติทั้งหมดของแพ็คเกจทั้งหมดที่ติดตั้ง / อัพเกรด / ลบออก เพียงคลิก "ประวัติ" ที่ด้านล่างของรายการทางซ้าย


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

คำถามนี้ไม่ได้ระบุสภาพแวดล้อมบนเดสก์ท็อป (GUI) แต่คำตอบที่ยอมรับนั้นใช้ได้ทั้งในสถานการณ์ GUI และที่ไม่ใช่ GUI
msanford

@HDave ไม่เป็นความจริงแน่นอนdpkg.logบันทึกการปรับปรุง
GKFX

10

หากต้องการดูแพ็คเกจเก่าที่เรียงตามเวลาที่ติดตั้ง:

grep " install " /var/log/dpkg.log.1 /var/log/dpkg.log

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

gunzip -c `ls -tr /var/log/dpkg.log.*.gz` | grep " install "

ผมพบว่าแพคเกจที่มีการติดตั้ง 2 วันที่ผ่านมาในแต่ไม่ได้อยู่ใน/var/log/dpkg.log /var/log/apt/history.logยังไม่รู้ว่าทำไม ...
Samuel Li

5

เคล็ดลับต่อไปนี้ตอบคำขอของ Aleksandr Dubinsky เพื่อ จำกัด สิ่งนี้ให้กับแพ็คเกจที่ติดตั้งด้วยตนเอง:

comm -12 <(apt-mark showmanual | sort) <(grep " install " /var/log/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)
  • comm -12 แสดงรายการบรรทัดทั่วไปสำหรับไฟล์ที่เรียงสองไฟล์
  • <(command)commandขยายไปยังชื่อของไฟล์ที่มีการส่งออกของ
  • apt-mark showmanualแสดงรายการแพ็กเกจที่ติดตั้งด้วยตนเอง กล่าวคือ ที่ไม่ควรถูกลบโดยอัตโนมัติ
  • grep " install " /var/log/dpkg.log ถูกนำมาจากคำตอบที่ยอมรับ

ทางเลือกที่แสดงข้อมูลเพิ่มเติมตามลำดับเวลาและการเข้าถึงบันทึกที่มีอยู่ทั้งหมดคือ:

zcat -f /var/log/dpkg.log* | grep " install " | sort > /tmp/dpkg.log
grep -F "`comm -12 <(apt-mark showmanual | sort) <(cat /tmp/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)`" /tmp/dpkg.log | grep \<none\>

grep \<none\>จำกัด ผลลัพธ์สำหรับการติดตั้งใหม่ ตัวอย่างเช่นคุณสามารถใช้ grep เพื่อ จำกัด การค้นหาเป็นระยะเวลาสามเดือนโดยเพิ่มgrep 2016-0[567]ไปที่ขั้นตอนแรก มันยืดหยุ่นมาก


นี่คือการใกล้ชิด สิ่งที่ควรปรับปรุง: 1) แสดงแพ็คเกจตามลำดับเวลา 2) แสดงรายละเอียดเพิ่มเติมเช่นวันที่ / เวลาติดตั้งเวอร์ชันหรือแม้แต่ขนาด 3) แสดงแพ็คเกจทั้งหมดที่ติดตั้งตั้งแต่ติดตั้งระบบปฏิบัติการ
Aleksandr Dubinsky

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

@AleksandrDubinsky ขอบคุณสำหรับการแก้ไขนั้น ฉันได้แก้ไขคำอธิบายเพื่อให้ตรงกับการเปลี่ยนแปลงที่คุณทำ
GKFX

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

1
มีข้อบกพร่องในคำสั่งสุดท้ายเพราะgrep -Fพบการแข่งขันบางส่วน ตัวอย่างเช่นหากpython3ติดตั้งแล้วมันจะจับคู่ไลบรารี python3 ทั้งหมด ( python3-click-package) รวมถึงไลบรารีที่ไม่ได้ติดตั้งอีกต่อไป ยิ่งกว่านั้นgrep -Fwไม่ช่วยเพราะ-เป็นขอบเขตของคำ
Aleksandr Dubinsky

5

ทั้งหมดในหนึ่งบรรทัด; สำหรับการใช้คำสั่ง

เลือกและพิมพ์เฉพาะชื่อแพ็กเกจที่เพิ่งติดตั้งทั้งหมดในหนึ่งบรรทัด

หากต้องการทำเช่นนั้นให้เปลี่ยนคำตอบที่โหวตมากที่สุดเป็น:

cat /var/log/dpkg.log |awk '/ install / {printf "%s ",$4}'

ผลลัพธ์นี้ในชื่อแพคเกจบรรทัดเดียว บรรทัดดังกล่าวสามารถเพิ่มลงในsudo apt-get purgeคำสั่งได้อย่างง่ายดาย

ตัวอย่างผลลัพธ์

libgnome-media-profiles-3.0-0 gstreamer0.10-gconf gnome-media gnome-menus librest-0.7-0 libgoa-1.0-common libgoa-1.0-0 libwacom-common libwacom2 ubuntu-docs apg libgnome-control-center1 libgnomekbd-common libgnomekbd7 gnome-control-center-data gnome-icon-theme-symbolic gnome-settings-daemon ubuntu-system-service gnome-control-center gnome-online-accounts gnome-session-bin indicator-power mousetweaks

รายการแพคเกจหนึ่งด้านล่างอื่น

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

cat /var/log/dpkg.log |awk '/ install / {printf "%s\n",$4}'

อย่าแยกเอาต์พุตของcatคำสั่ง แล้วเรื่องนี้awk '$3~/^install$/ {print $4;}' /var/log/dpkg.logล่ะ?
Avinash Raj

@AvinashRaj awkคำสั่งของคุณพิมพ์แพ็คเกจหนึ่งด้านล่างอื่น; ฉันหนึ่งต่อไปอีก นั่นคือเหตุผลที่ตัวอย่างเอาต์พุตอาจมีประโยชน์เป็นครั้งคราว
Serge Stroobandt

2

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

wajig help
Common JIG commands:

 update         Update the list of downloadable packages

 new            List packages that became available since last update
 newupgrades    List packages newly available for upgrading

 install        Install (or upgrade) one or more packages or .deb files
 remove         Remove one or more packages (see also purge)

 toupgrade      List packages with newer versions available for upgrading
 upgrade        Upgrade all of the installed packages or just those listed

 listfiles      List the files that are supplied by the named package
 listnames      List all known packages or those containing supplied string
 whatis         For each package named obtain a one line description
 whichpkg       Find the package that supplies the given command or file

Run 'wajig -v commands' for a complete list of commands.

5
ฉันไม่แน่ใจว่าwajigจะช่วยรายการแพคเกจล่าสุดได้อย่างไร ฉันไม่เห็นคำสั่งหลังจากนั้นคร่าวๆดูคำสั่ง คุณรู้หรือไม่ว่าคำสั่งคืออะไร?
Ehtesh Choudhury

1

นอกจากคำตอบของ DoR สำหรับผู้ที่ชอบ GUI แล้วยังมีรายการเมนูไฟล์ -> ประวัติใน Synaptic


2
และตามที่rafalcieslakชี้ให้เห็นฟังก์ชั่นนี้มีอยู่ใน Software Center เช่นกัน
belacqua

3
ประวัติ Synaptic จะแสดงเฉพาะสิ่งที่คุณติดตั้งผ่านทาง Synaptic ... ไร้ประโยชน์โดยสิ้นเชิง
HDave

1

นี่คือเชลล์ที่จะแสดงรายการไฟล์ที่ติดตั้ง dpkg (ซึ่งควรรวมถึงแพกเกจ apt / aptitude / software / ติดตั้ง synaptic ทั้งหมด)

grep -A 1 "Package: " /var/lib/dpkg/status | \
grep -B 1 -Ee "ok installed|half-installed|unpacked|half-configured|config-files" -Ee "^Essential:yes" | \
grep "Package:" | cut -d\  -f2

ไม่รวมข้อมูลเวลา / วันที่ติดตั้ง แต่อาจมีประโยชน์ในการกำหนดความแตกต่างใด ๆ ในแพ็คเกจที่ติดตั้งจากระบบปฏิบัติการ os เป็นปัจจุบัน


-1

ปัญหาในการดูประวัติการติดตั้งใน Software Center หรือ Synaptic นั้นยากที่จะคัดลอก / วางเนื้อหาลงในอีเมล (เช่นเมื่อพูดคุยกับฝ่ายสนับสนุนด้านเทคนิค!) ทางเลือกคือการดูเนื้อหาของไฟล์บันทึกใน/var/log/aptฐานะที่เป็นรูท


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