'एप्टीट्यूड' का उपयोग करके किसी निश्चित तिथि पर स्थापित पैकेज कैसे देखें?


54

क्या किसी को पता है कि स्थापित किए गए पैकेजों की एक सूची को खोजने का एक आसान तरीका है, तारीख का हल, जब aptitude(या apt-get) का उपयोग कर ?

मैंने कुछ नया करने की कोशिश करने के लिए संकुल का एक गुच्छा स्थापित किया, लेकिन यह कारगर नहीं हुआ। मैं इन सभी पैकेजों को निकालना चाहता हूं, ताकि कुछ डिस्क स्थान वापस मिल सकें।

मैंने केवल .deb फ़ाइलों की सूची देखने की कोशिश की है, लेकिन यह ऐसा करने के बजाय पीछे की ओर की तरह लगता है (हालांकि यह काम नहीं किया)।

जवाबों:


43

दुर्भाग्य से, dpkg (पैकेज हैंडलर एप्टीट्यूड शीर्ष पर काम करता है) विशेष रूप से पैकेज की स्थापित तिथि को नहीं बचाता है, हालांकि इसे जोड़ने के विचार हैं। हालाँकि, इंस्टॉल्ड डेट डायरेक्टरी को लिखी गई फाइल्स की डेट स्टैम्प को देखकर मिल सकती है /var/lib/dpkg/info


4
यदि आप इस दृष्टिकोण का उपयोग करते हैं, तो केवल *.listफाइलों पर टाइमस्टैम्प की जांच करना सुनिश्चित करें, क्योंकि पैकेज की तारीख के साथ अन्य फाइलों पर मुहर लगी है।
डेव

20

मैंने लॉग ( /var/log/aptitude) में लिखने के लिए योग्यता को कॉन्फ़िगर किया है । यह इस तरह से उत्पादन करता है;

Aptitude 0.4.11.11: log report
Mon, Feb  9 2009 13:21:28 +0100

IMPORTANT: this log only lists intended actions; actions which fail due to
dpkg problems may not be completed.

Will install 6 packages, and remove 0 packages.
4096B of disk space will be used
===============================================================================
[UPGRADE] apt 0.7.20.1 -> 0.7.20.2
[UPGRADE] apt-utils 0.7.20.1 -> 0.7.20.2
[UPGRADE] base-passwd 3.5.19 -> 3.5.20
[UPGRADE] libgnutls26 2.4.2-5 -> 2.4.2-6
[UPGRADE] libpq5 8.3.5-1 -> 8.3.6-1
[UPGRADE] ucf 3.0015 -> 3.0016
===============================================================================

Log complete.

यह सटीक तिथि और संकुल दिखाता है जो अभिवृत्ति स्थापित करता है। इसे कॉन्फ़िगर करने के लिए, उपयुक्त संदर्भ का पालन करें;

Option:Aptitude::Log

Default:/var/log/aptitude

Description: If this is set to a nonempty string, aptitude will log the package
installations, removals, and upgrades that it performs. If the value of
Aptitude::Log begins with a pipe character (ie, ``|''), the remainder of its
value is used as the name of a command into which the log will be piped: for
instance, |mail -s 'Aptitude install run' root will cause the log to be emailed
to root. To log to multiple files or commands, you may set this option to a list
of log targets.

आपको एप्टीट्यूड मैन पेज में एप्टीट्यूड रेफरेंस का लिंक मिलेगा।


1
कृपया लिंक पोस्ट करें और इसे कैसे लागू करें। कुछ मैनुअल टेक्स्ट का जिक्र करना बहुत मददगार नहीं है।
not2qubit

17

सभी संकुल स्थापना तिथि को देखने का एक सरल तरीका है। बस निष्पादित करें:

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

परिणामस्वरूप आपको सटीक तिथि और समय के साथ सभी स्थापित पैकेजों की एक सूची मिल जाएगी।

टिप्पणियों के लिए धन्यवाद जो मुझे उस समाधान की ओर ले जाता है।


2
cdआदेश अगर आप में पूर्ण पथ का उपयोग आवश्यक नहीं है catआदेश ...
papukaija

1
उपलब्ध dpkg.log फ़ाइलों की जाँच करने के cdलिए कमांड का उद्देश्य lsइस निर्देशिका के अंदर था । लेकिन ls /var/log | grep 'dpkg.log'लॉग फ़ाइलों को सूचीबद्ध करने के लिए बेहतर समाधान चल रहा होगा । गंदगी के लिए खेद है।
जमरसीली

2
या सिर्फ "grep install /var/log/dpkg.log*"?
मार्क वैन डेले

1
हुह, मुझे नहीं पता cat | catथा कि आप ऐसा कर सकते हैं। लेकिन दोनों फाइलों को एक कमांड में कैट क्यों नहीं? (या और भी बेहतर:। बस क्या @MarcVanDaele कहते हैं)
mwfearnley

13

मुझे यह यहाँ वेब पर मिला। यह dpkg लॉग फ़ाइल से dpkg का इतिहास बनाता है।

यह बहुत सरल दिखता है।

function apt-history(){
      case "$1" in
        install)
              cat /var/log/dpkg.log | grep 'install '
              ;;
        upgrade|remove)
              cat /var/log/dpkg.log | grep $1
              ;;
        rollback)
              cat /var/log/dpkg.log | grep upgrade | \
                  grep "$2" -A10000000 | \
                  grep "$3" -B10000000 | \
                  awk '{print $4"="$5}'
              ;;
        *)
              cat /var/log/dpkg.log
              ;;
      esac
}

स्रोत

संपादित करें

मैंने उबंटू 8.10 सर्वर पर इस स्क्रिप्ट की कोशिश की और यह बहुत अच्छी तरह से काम करता है। क्या आप कुछ जानकारी प्रदान कर सकते हैं, आपने अपनी समस्या को कैसे हल किया?


5
  • Dpkg लॉग का उपयोग करें

    locate dpkg.log | xargs cat {} | grep " install "
    
  • या अगर आपके पास नहीं है locate

    find /var/log/ -name 'dpkg.log' | xargs cat {} | grep " install "
    
  • sortउचित समय आधारित ऑर्डर सुनिश्चित करने के लिए उपयोग करें

    locate dpkg.log | xargs cat {} | grep " install " | sort
    
  • नवीनतम 4 प्रविष्टियाँ प्राप्त करने के लिए tac(उल्टा cat) *, सिर का उपयोग करें

    locate dpkg.log | xargs cat {} | grep " install " | sort | tac | head -n4
    

उदाहरण के लिए, अंतिम आदेश के लिए मुझे:

2014-10-08 18:56:12 install xorg-server-source:all <none> 2:1.16.1-1
2014-10-08 18:49:34 install libelementary-data:all <none> 0.7.0.55225-1
2014-10-08 18:46:57 install e17:i386 <none> 0.17.6-1
2014-10-08 18:46:56 install libedje-bin:i386 <none> 1.8.6-2.1+b1

1
आप इसके बजाय tac+ का उपयोग क्यों करेंगे ? headtail
ज़न्ना

1
थोड़ी देर हो गई है, मैं भूल गया हूं कि क्यों - लेकिन यह संभव है कि इसके लिए एक पूरी तरह से अच्छा कारण है .. या शायद मेरे पास एक गोरा क्षण था: डी
ए 20

4

आप /var/log/apt/term.log, और पुरानी फ़ाइलों term.log.1.gz आदि) की जाँच करके अपनी पिछली क्रियाओं को भी ट्रैक कर सकते हैं। इसमें टाइमस्टैम्प है और इंस्टॉल के दौरान संदेशों से पूर्ण लॉग।


2

[अनुवर्ती कार्रवाई], हां, किसी विशेष तिथि पर स्थापित किए गए पैकेजों को देखने का एक आसान तरीका है, भले ही इसे apt-get का उपयोग करके टर्मिनल के अंदर किया गया हो।

यदि आप सिनैप्टिक पैकेज मैनेजर स्थापित करते हैं, जो कि उबंटू सॉफ्टवेयर सेंटर से स्वतंत्र रूप से इंस्टॉल किया जा सकता है, तो आपको केवल इसका फ़ाइल मेनू खोलने और "इतिहास" विकल्प चुनने की आवश्यकता है। वहां आप सभी जोड़े और हटाए गए एप्लिकेशन पैकेजों का लेखा-जोखा देखेंगे, तिथि के अनुसार व्यवस्थित किए जाएंगे, भले ही वे कैसे स्थापित या हटाए गए हों।


2

वास्तव में एक 'आधिकारिक' pkginstall.shस्क्रिप्ट है जो ऐसा कर सकती है। आधिकारिक दस्तावेज में दिए गए निर्देशों का पालन करें । संक्षेप में, उपरोक्त लिंक से स्क्रिप्ट डाउनलोड करें, सुनिश्चित करें कि यह निष्पादन योग्य है और फिर इसके साथ चलें:

~/pkginstalls.sh

यह pkginstalls.txtआपके होम डायरेक्टरी में फाइल बनाएगा जिसमें तारीख के आधार पर सभी स्थापित पैकेज होंगे।

BTW, यह स्क्रिप्ट की सामग्री है:

#!/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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.