จะแสดงรายการแพ็คเกจที่ติดตั้งและรายละเอียดบน Ubuntu ได้อย่างไร?


27

ฉันยังใหม่กับอูบุนตูและพยายามหาวิธีในการแสดงรายการแพ็คเกจที่ติดตั้งทั้งหมดและรายละเอียดต่าง ๆ เช่นเวอร์ชัน, รุ่น, เวลาติดตั้ง, ประเภทบน Ubuntu พบว่าคำสั่งต่อไปนี้จะช่วยให้ฉันได้รับข้อมูลนี้:

1) dpkg -l

2) dpkg-query -W -f='${PackageSpec}\t${version}\t${Description}\n'

ซึ่งแตกต่างจาก Redhat เวลาการติดตั้งและข้อมูลหมวดหมู่จะหายไปในนี้ ใครสามารถรู้วิธีการดึงรายละเอียดเหล่านี้?

ขอบคุณล่วงหน้า.

คำตอบ:


33

เรียบง่ายและสง่างาม:

sudo dpkg -l | more

หรือ

sudo dpkg -l | less

หากคุณต้องการได้รับคำอธิบายเกี่ยวกับแพคเกจบางอย่างจะพูดว่าfirefox:

sudo dpkg -l | grep firefox

นี่คือผลลัพธ์ของฉัน:

$ sudo dpkg -l | more
 Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                        Version                                 Description
+++-===========================================-=======================================-==============================================================
================
ii  accountsservice                             0.6.15-2ubuntu9.4                       query and manipulate user account information
ii  acl                                         2.2.51-5ubuntu1                         Access control list utilities
ii  acpi-support                                0.140                                   scripts for handling many ACPI events
ii  acpid                                       1:2.0.10-1ubuntu3                       Advanced Configuration and Power Interface event daemon
ii  activity-log-manager-common                 0.9.4-0ubuntu3.2                        blacklist configuration for Zeitgeist (assets)
ii  activity-log-manager-control-center         0.9.4-0ubuntu3.2                        blacklist configuration for Zeitgeist (control center integrat
ion)
ii  adduser                                     3.113ubuntu2                            add and remove users and groups
ii  adium-theme-ubuntu                          0.3.2-0ubuntu1                          Adium message style for Ubuntu
ii  aisleriot                                   1:3.2.3.2-0ubuntu1                      Solitaire card games
ii  akonadi-backend-mysql                       1.7.2-0ubuntu1                          MySQL storage backend for Akonadi
ii  akonadi-server                              1.7.2-0ubuntu1                          Akonadi PIM storage service
ii  alacarte                                    0.13.2-2ubuntu4                         easy GNOME menu editing tool
ii  alsa-base                                   1.0.25+dfsg-0ubuntu1                    ALSA driver configuration files
ii  alsa-utils                                  1.0.25-1ubuntu5                         Utilities for configuring and using ALSA
ii  anacron                                     2.3-14ubuntu1                           cron-like program that doesn't go by time
ii  apg                                         2.2.3.dfsg.1-2                          Automated Password Generator - Standalone version
ii  app-install-data                            0.12.04.4                               Ubuntu applications (data files)
ii  app-install-data-partner                    12.12.04.1                              Application Installer (data files for partner applications/rep
ositories)
ii  apparmor                                    2.7.102-0ubuntu3.7                      User-space parser utility for AppArmor
ii  appmenu-gtk                                 0.3.92-0ubuntu1.1                       Export GTK menus over DBus
ii  appmenu-gtk3                                0.3.92-0ubuntu1.1                       Export GTK menus over DBus
ii  appmenu-qt                                  0.2.6-0ubuntu1                          appmenu support for Qt
ii  apport                                      2.0.1-0ubuntu17.1                       automatically generate crash reports for debugging
ii  apport-gtk                                  2.0.1-0ubuntu17.1                       GTK+ frontend for the apport crash report system
ii  apport-symptoms                             0.16.1                                  symptom scripts for apport
ii  apt                                         0.8.16~exp12ubuntu10.7                  commandline package manager
ii  apt-transport-https                         0.8.16~exp12ubuntu10.7                  https download transport for APT
ii  apt-utils                                   0.8.16~exp12ubuntu10.7                  package managment related utility programs
--More--

เพื่อรับวันที่และเวลาของแพ็คเกจที่กำลังติดตั้ง

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

วิธีขอรับแพ็คเกจเฉพาะ:

$cat /var/log/dpkg.log | grep " install " | grep banshee
2013-12-12 12:51:48 install banshee <none> 2.4.1-3ubuntu1~precise2
2013-12-12 12:51:51 install banshee-extensions-common <none> 2.4.0-1ubuntu1
2013-12-12 12:51:51 install banshee-extension-radiostationfetcher <none> 2.4.0-    1ubuntu1
2013-12-12 12:51:51 install banshee-extension-soundmenu <none> 2.4.1-3ubuntu1~precise2

เพื่อรับส่วน

$apt-cache show firefox | grep Section
Section: web

ดูเพิ่มเติมที่: ListInstalledPackagesByDate


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

ดูเหมือนว่า apt cache สามารถลบได้และคำสั่งนั้นจะไม่ส่งคืนข้อมูลทั้งหมด ถูกต้องฉันถ้าฉันผิด dpkg --print-avail <package_name> จะช่วยให้ฉันได้รับรายละเอียดเดียวกันหรือไม่หากมีการลบแคช apt
user1787572

@ user224730: ฉันไม่รู้ว่าคุณจะลบapt-cacheอย่างไร แต่ใช่คุณพูดถูก dpkg --print-availจะทำงานเดียวกันถ้าคุณต้องการได้รับข้อมูลที่เพียงพอ สิ่งหนึ่งที่คุณควรทราบว่าsudo apt-cache showคำสั่งจะให้ข้อมูลเพิ่มเติมเสมอ คุณสามารถตรวจสอบได้โดยการเปรียบเทียบผลลัพธ์ทั้งสองคำสั่ง 1. sudo apt-cache show firefox | wcและ 2. sudo dpkg --print-avail firefox | wcคุณจะพบว่า1คำสั่งผลตอบแทนจำนวนมากของสายคำและตัวอักษรกว่า2หนึ่ง ตอบถ้าคุณยังสงสัยอยู่บ้าง ..
Saurav Kumar

apt-get clean คือคำสั่งที่ฉันเรียนรู้เกี่ยวกับการลบแคช ฉันรันทั้งคำสั่งที่คุณพูดถึงในระบบของฉันและพบว่า apt-cache แสดง firefox | wc ส่งคืนบันทึกมาให้ฉัน แต่ dpkg --print-avail | ห้องสุขาไม่ได้ ฉันตรวจสอบว่าติดตั้ง firefox บนระบบของฉันหรือไม่โดยใช้ dpkg -l | grep firefox และฉันไม่มีอะไร ฉันรันคำสั่งเดียวกันสำหรับแพคเกจที่ติดตั้งบนระบบและพบว่าคำสั่ง apt-cache show ยังพิมพ์ข้อมูลเกี่ยวกับแพตช์ล่าสุดที่พร้อมใช้งานสำหรับแพ็คเกจนี้ นั่นหมายความว่าแพ็คเกจเป็นตัวเลือกสำหรับการอัปเดต
user1787572

นั่นทำให้ฉันตัดสินใจได้ว่า dpkg --print-avail เป็นคำสั่งที่ฉันกำลังค้นหาซึ่งให้ข้อมูลจริงของระดับแพ็คเกจที่ติดตั้งในระบบ
user1787572

5

apt-cache showpkg <package> จะให้รายละเอียดเกี่ยวกับรุ่นของแพ็คเกจที่มีอยู่การส่งต่อและการย้อนกลับเป็นต้น

apt-cache show <package> จะให้คำอธิบายหมวดหมู่ (ส่วน) เป็นต้น

ฉันไม่ทราบวิธีการดูเวลาที่ติดตั้งแพคเกจ


3

ตอนนี้มันง่ายกว่าที่จะได้รับรายละเอียดการติดตั้งแพ็กเกจ

นี่คือขั้นตอนง่าย ๆ :

  1. pkgdetailsคัดลอกและวางสคริปต์ต่อไปนี้ในแฟ้มและบันทึกที่มีชื่อพูดใด ๆ

    #!/bin/bash
    
    #Get the details and section of installed packages
    # usage:
    # pkgdetails <pkgname1> <pkgname2>
    
    #first append all info from archived logs
    
    i=2
    mycount=$(ls -l /var/log/dpkg.log.*.gz | wc -l)
    nlogs=$(( $mycount + 1 ))
    
    while [ $i -le $nlogs ]
    do
    if [ -e /var/log/dpkg.log.$i.gz ]; then
    zcat /var/log/dpkg.log.$i.gz | grep "\ install\ " >> $HOME/pkgtmp.txt
    fi
    i=$(( $i+1 ))
    
    done
    
    #next append all info from unarchived logs
    
    i=1
    nulogs=$(ls -l /var/log/dpkg.log.* | wc -l)
    nulogs=$(( $nulogs - $nlogs + 1 ))
    while [ $i -le $nulogs ]
    do
    if [ -e /var/log/dpkg.log.$i ]; then
    cat /var/log/dpkg.log.$i | grep "\ install\ " >> $HOME/pkgtmp.txt
    fi
    i=$(( $i+1 ))
    
    done
    
    #next append current log
    
    cat /var/log/dpkg.log | grep "\ install\ " >> $HOME/pkgtmp.txt
    
    #sort text file by date
    
    sort -n $HOME/pkgtmp.txt > $HOME/pkginstalls.txt
    
    rm $HOME/pkgtmp.txt
    
    # Now displaying the installation details of packages passed as arguments
    
    for pkg in $@
    do
    echo "--------------------- Installation Details of $pkg ----------------------"
    echo 
    cat $HOME/pkginstalls.txt | grep -i $pkg
    echo
    apt-cache show $pkg | grep "Section" | sort -u
    echo
    done
    
    exit 0
    
  2. ทำให้ไฟล์เรียกทำงานและคัดลอก/binไปใช้เป็นคำสั่ง

    chmod a+x pkgdetails && sudo cp pkgdetails /bin/
    
  3. ตอนนี้ใช้pkgdetailsคำสั่งเพื่อรับรายละเอียดการติดตั้งและส่วนของแพ็คเกจ:

    pkgdetails qbittorrent artha
    

นี่คือผลลัพธ์ของฉัน:

--------------------- Installation Details of qbittorrent ----------------------

2013-07-24 07:52:27 install qbittorrent <none> 2.9.7-1
2013-07-24 09:11:32 install qbittorrent <none> 3.0.x-0~4366-20130722~precise1
2013-10-19 05:32:27 install qbittorrent <none> 3.0.x-0~4389-20130802~precise1

Section: net
Section: universe/net

--------------------- Installation Details of artha ----------------------

2013-07-11 23:50:16 install artha <none> 1.0.2-1ubuntu1

Section: universe/utils

1

เปิดตัวแก้ไขข้อความและวางตามด้วย anyname.sh และทำให้สามารถใช้งานได้

chmod +x  anyname.sh   

รหัส:

#!/bin/bash
#pkginstalls.sh
#creates text file with a list of all packages installed by date

#first append all info from archived logs

i=2
mycount=$(ls -l /var/log/dpkg.log.*.gz | wc -l)
nlogs=$(( $mycount + 1 ))

while [ $i -le $nlogs ]
do
if [ -e /var/log/dpkg.log.$i.gz ]; then
zcat /var/log/dpkg.log.$i.gz | grep "\ install\ " >> $HOME/pkgtmp.txt
fi
i=$(( $i+1 ))

done

#next append all info from unarchived logs

i=1
nulogs=$(ls -l /var/log/dpkg.log.* | wc -l)
nulogs=$(( $nulogs - $nlogs + 1 ))
while [ $i -le $nulogs ]
do
if [ -e /var/log/dpkg.log.$i ]; then
cat /var/log/dpkg.log.$i | grep "\ install\ " >> $HOME/pkgtmp.txt
fi
i=$(( $i+1 ))

done

#next append current log

cat /var/log/dpkg.log | grep "\ install\ " >> $HOME/pkgtmp.txt

#sort text file by date

sort -n $HOME/pkgtmp.txt > $HOME/pkginstalls.txt

rm $HOME/pkgtmp.txt

exit 0

เครดิตไปที่ชุมชนอูบุนตู


ขอบคุณสำหรับการตอบกลับ. สคริปต์จะต้องได้รับการแก้ไขเพื่อรับรายละเอียดเพิ่มเติมเช่นหมวดหมู่
user1787572

1

ใช้ฉลาด

นอกจากนี้คุณยังสามารถแสดงรายการชุดข้อมูลที่ติดตั้งด้วย:

apt list --installed

แพ็คเกจที่ติดตั้งด้วยตนเองของคุณจะแสดงด้วย:

apt list --manual-installed

และทุกรุ่นด้วย:

apt list --all-versions

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

apt list --installed | awk -F/ -v ORS=" " 'NR>1 {print $1}' > apt_packages.txt

หรือถ้าคุณต้องการแพ็คเกจที่ติดตั้งแบบแมนนวลเท่านั้น

 apt list --manual-installed | awk -F/ -v ORS=" " 'NR>1 {print $1}' > apt_packages.txt   

ตอนนี้แพกเกจ apt-package ทั้งหมดของคุณพร้อมที่จะติดตั้งบนระบบ Ubuntu อื่นหรือที่ติดตั้งใหม่

sudo apt-get install < apt_packages.txt

คำอธิบายโดยละเอียด

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

/var/log/apt

ไดเรกทอรี ค้นหาในhistory.logไฟล์; ใช้sed , awk , grepหรือแก้ไขข้อความอย่างง่ายเพื่อค้นหาไฟล์ประวัติของคุณ



0

ฉันมีคำตอบบางส่วน (และจุดตัวแทนไม่เพียงพอที่จะทำให้ความคิดเห็น) - บันทึกการติดตั้งอยู่ที่นี่:

sudo less /var/log/apt/term.log 

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

http://lists.debian.org/debian-user/2002/08/msg01219.html

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