क्या हाल ही में स्थापित पैकेजों की सूची प्राप्त करना संभव है?


157

क्या उन पैकेजों की सूची प्राप्त करना संभव है जो हाल ही में apt-get के माध्यम से स्थापित किए गए थे?



1
अब, अगर केवल कोई मुझे बताएगा कि मैन्युअल रूप से स्थापित पैकेजों को कैसे सूचीबद्ध किया जाए जो मैंने पहले ही नहीं हटाया है। आहें, लिनक्स।
अलेक्सांद्र डबिन्स्की

1
@AleksandrDubinsky apt-mark showmanual | lessऐसा नहीं करता है?
GKFX

@GKFX का मतलब हाल ही में स्थापित पैकेजों के संदर्भ में था।
हांग्जो डबिन्सकी

@AleksandrDubinsky आप उपयोग करने के लिए होगा comm -12 a bके साथ aका एक हल कर प्रतिलिपि apt-mark showmanualऔर bनीचे दिए गए उत्तर से एक से एक क्रमबद्ध सूची।
GKFX

जवाबों:


180

हाल ही में स्थापित पैकेजों को सूचीबद्ध करने की कमान जो किसी भी विधि ( apt-get, सॉफ्टवेयर सेंटर एट अल।) के माध्यम से स्थापित किए गए थे :

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

अन्तर्ग्रथनी के साथ समस्या यह है कि यह नहीं दिखाती है कि आप क्या करते हैं, इस योग्यता के साथ, apt-get और dpkg, इस कारण से +1 इस विकल्प के लिए है
hhlp

यह कमांड अपडेट नहीं दिखाएगा। सब कुछ देखने के लिए सॉफ़्टवेयर केंद्र का उपयोग करें।
एचडीवी

1
इस तरह एक पाठ फ़ाइल को बचाने के लिए बेहतर हो सकता हैcat /var/log/apt/history.log | grep "\ install\ " > install.log
CrandellWS

4
grep " install " /var/log/dpkg.logपर्याप्त होगा। उपयोग करने की कोई आवश्यकता नहीं है cat। यह भी देखें इस
22

1
ध्यान दें कि यह केवल उन पैकेजों को खोजने के लिए लगता है जो नए इंस्टॉल किए गए थे। संकुल जिसके लिए एक नया संस्करण स्थापित किया गया था के रूप में प्रकट upgradeमेंdpkg.log
आंद्रे Holzner

14

उबंटू का सॉफ्टवेयर सेंटर उन सभी पैकेजों का पूरा इतिहास दिखाता है जो स्थापित / उन्नत / हटाए गए थे। बस बाईं ओर सूची के नीचे "इतिहास" पर क्लिक करें।


4
यह इतिहास बटन अब जीयूआई के शीर्ष पर है और इंस्टॉल किए गए पैकेज और अपडेट दिखा सकता है। यह सवाल का स्वीकृत उत्तर होना चाहिए क्योंकि इसका एकमात्र उत्तर अपडेट के लिए काम करता है।
एचडीवी

यह प्रश्न डेस्कटॉप (GUI) वातावरण को निर्दिष्ट नहीं करता है, लेकिन स्वीकृत उत्तर GUI और गैर-GUI दोनों परिदृश्यों में मान्य है।
एमएसनफोर्ड

@ एचडी निश्चित रूप से सच नहीं है, 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। अभी भी पता नहीं क्यों ...
शमूएल ली

5

निम्नलिखित ट्रिक ने मैन्युअल रूप से इंस्टॉल किए गए पैकेजों तक इसे सीमित करने के लिए हांग्जो डबिन्सकी के अनुरोध का जवाब दिया:

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 2016-0[567]पहली पाइपलाइन को जोड़कर खोज को तीन महीने की अवधि तक सीमित करने के लिए grep का उपयोग कर सकते हैं ; यह बहुत लचीला है।


यह करीब हो रहा है। जिन चीजों में सुधार किया जा सकता है: 1) संकुल को कालानुक्रमिक क्रम में दिखाते हैं, 2) इंस्टॉल दिनांक / समय जैसे अधिक विवरण दिखाते हैं, संस्करण, शायद आकार 3 भी) ओएस स्थापित होने के बाद से स्थापित सभी पैकेज दिखाते हैं।
डबलिनस्की

गजब का! क्या आपको बुरा लगता है अगर मैं आपके उत्तर को प्रत्येक कमांड के बारे में अधिक स्पष्टीकरण के साथ संक्षिप्त होने के लिए साफ़ कर दूं?
हांग्जो डबिन्सकी

@AleksandrDubinsky उस संपादन के लिए धन्यवाद; मैंने विवरण सही किया है ताकि यह आपके द्वारा किए गए परिवर्तनों से मेल खाए।
GKFX

क्या आपको बुरा लगता है अगर मैं "निम्नलिखित ट्रिक्स के जवाब दे रहा हूँ। शामिल?
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?
अविनाश राज

@AvinashRaj आपका awkआदेश प्रिंट संकुल एक नीचे एक और; मेरा एक अगले एक और। यही कारण है कि समय-समय पर एक आउटपुट उदाहरण उपयोगी हो सकता है।
सर्ज स्ट्रोबंड

2

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

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नवीनतम पैकेजों को सूचीबद्ध करने में कैसे मदद मिलती है। मैं उस आदेश के लिए सरसरी नज़र के बाद उसके लिए एक आदेश नहीं देखता। क्या आप जानते हैं कि कमांड क्या है?
एहतेश चौधरी

1

DoR के उत्तर के अलावा, जो लोग GUI पसंद करते हैं, उनके लिए Synaptic में एक फ़ाइल -> इतिहास मेनू आइटम है।


2
और जैसा कि rafalcieslak बताते हैं, यह फ़ंक्शन सॉफ्टवेयर सेंटर में भी उपलब्ध है।
बेलाक्वा 22

3
Synaptic इतिहास केवल वही दिखाता है जो आपने Synaptic के माध्यम से स्थापित किया है ... पूरी तरह से बेकार।
एचडीवी

1

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

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

इसमें स्थापित समय / दिनांक जानकारी शामिल नहीं है। लेकिन ओएस स्थापित से वर्तमान तक स्थापित पैकेजों में किसी भी मतभेद को निर्धारित करने में उपयोगी हो सकता है।


-1

सॉफ़्टवेयर सेंटर या सिनेप्टिक में इंस्टॉलेशन हिस्ट्री देखने के साथ समस्या यह है कि किसी ईमेल में सामग्री को कॉपी / पेस्ट करना मुश्किल है (उदाहरण के लिए टेक सपोर्ट के साथ बात करते समय!)। विकल्प के /var/log/aptरूप में लॉग फ़ाइलों की सामग्री को रूट के रूप में देखने के लिए है ।


2
बस स्पष्ट करने के लिए, केवल सामग्री को देखने के लिए /var/log/apt, आपको रूट करने की आवश्यकता नहीं है, या किसी भी व्यवस्थापक के विशेषाधिकार के साथ।
शमूएल ली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.