सभी उपयोगकर्ता-स्थापित पैकेज खोजें


38

क्या उबंटू प्रणाली पर सभी उपयोगकर्ता-स्थापित पैकेजों की सूची प्राप्त करने का कोई तरीका है, अर्थात जो पैकेज डिफ़ॉल्ट इंस्टॉल किए गए संकुल के शीर्ष पर स्थापित किए गए थे?

(यह विचार एक व्यापक सूची प्राप्त करने के लिए है जिसका उपयोग स्वच्छ उबंटू स्थापना पर एक ही पैकेज को स्थापित करने के लिए किया जा सकता है)

जवाबों:


15

इन फाइलों को देखें,

  1. ' /var/log/installer/initial-status.gz' - आपकी प्राथमिक स्थापना
    • यह फ़ाइल तिथि आपकी स्थापना तिथि होगी (मुझे लगता है)
    • ' /var/log/dpkg.log' अपडेट टाइमलाइन (यह वही है जो आप चाहते हैं)
    • ' /var/log/apt/term.log' - aptआपके सिस्टम पर अपडेट की गई चीजें
    • 'में इंस्टॉलेशन के लिए डाउनलोड किए /var/cache/apt/archives/'गए debपैकेज होंगे

अद्यतन: नई इंस्टॉल की सटीक सूची के लिए निम्नलिखित दो चरणों का उपयोग करें:

  1. निष्पादित: grep -w install /var/log/dpkg.log > full-list.log
  2. /var/log/installer/initial-status.gzटाइमस्टैम्प से परे लाइनों को देखें

चूंकि आप इन पैकेजों के साथ किसी अन्य सिस्टम पर एक क्लीन इंस्टॉलेशन प्राप्त करना चाहते हैं, इसलिए आप 'कैश / एप्ट / आर्काइव्स' पथ से 'डिब' फाइलों को भी नए इंस्टॉलेशन के लिए कॉपी कर सकते हैं और उन्हें एक शॉट में इंस्टॉल कर सकते हैं (बिना डाउनलोड किए उन्हें दोबारा)।


पारितोषिक के लिए धन्यवाद। यह उपयोगी है, हालांकि मैं इस सूची को प्राप्त करने के लिए एकल कमांड के लिए अधिक देख रहा था। cat /var/log/dpkg.log | अगर मैं स्थापना तिथि / समय तक स्थापित आइटमों को अनदेखा करता हूं, तो grep 'इंस्टॉल' करीब आता है
Rabarberski

डाउन वोट के लिए एक कारण जोड़ने से जवाब में एक समस्या को समझने में मदद मिलेगी, अगर कोई है। इससे भविष्य में बेहतर उत्तर भी मिलेंगे।
nik

ओप्स, डाउनवोट गलती से मेरा था। मैंने पहले ही आपके उत्तर को रद्द कर दिया था। जब मैंने आपके जवाब को 'अंतिम' के रूप में चिह्नित करने की कोशिश की, तो मैंने मिस वोट किया और नीचे वोट तीर मारा। इसे पूर्ववत करने की कोशिश करने से यह संदेश प्रदर्शित होता है: "जब तक इस उत्तर को संपादित नहीं किया जाता है, तब तक वोट दिया जाना चाहिए।" क्षमा करें, दोनों नीच और भ्रम के लिए। :-(
राबार्शस्की 13

@ रबारकी, अच्छी तरह से होता है ... कोई नुकसान नहीं हुआ।
nik

काम नहीं करता है अगर / var / लॉग / इंस्टॉलर मौजूद नहीं है, जैसे सर्वर इंस्टाल। यदि आप "उबंटू" के बारे में बात कर रहे हैं, तो यह भी मतलब होगा कि "उबंटू" - जो कि उबंटू है?

8

सिर्फ ग्रिन के लिए, मैंने एक-लाइनर (यहां स्पष्टता के लिए विभाजन) को एक साथ रखा, जो कि स्थापित किए गए पैकेजों को मैन्युअल रूप से स्थापित करते हैं, शुरू में स्थापित किए गए और स्वचालित रूप से स्थापित किए गए किसी भी पैकेज को छोड़कर:

comm -13 \
  <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort) \
  <(comm -23 \
    <(dpkg-query -W -f='${Package}\n' | sed 1d | sort) \
    <(apt-mark showauto | sort) \
  )

यह दोनों में काम करता है bashऔर में zsh


यह लगभग पूरी तरह से काम करता है, सिवाय इसके कि शुरुआती स्थापना के दौरान स्थापित पुस्तकालयों का एक गुच्छा प्रिंट करने के लिए लगता है। का एक गुच्छा है libtiff, libxcbआदि, जो मैंने खुद को स्थापित नहीं किया था। यह उत्तर: superuser.com/a/105000/24349 सिस्टम की स्थापना के समय को स्थापित करने और समय को हटाने से पहले सब कुछ हटाने के अनुसार हल करता है। शेल का महान (एब) उपयोग!
२३:१२ बजे

3

उपरोक्त जानकारी के आधार पर, मैंने उन पैकेजों को सूचीबद्ध करने के लिए एक छोटी पायथन स्क्रिप्ट लिखी जो मैन्युअल रूप से स्थापित की गई थीं। इस लिंक को देखें ।

इसका उपयोग करने के लिए स्वतंत्र महसूस करें, हालांकि मैं इसके लिए कोई जिम्मेदारी नहीं लेता हूं। हालांकि, प्रतिक्रिया और सुझावों का हमेशा स्वागत है।


प्रतिभाशाली! इसे चलाने में थोड़ा समय लगता है, लेकिन इसका एकमात्र समाधान मुझे मिला है, जो मुझे वही चाहिए जो मुझे चाहिए!
हैक्सनी

2
दुर्भाग्य से लिंक अब टूट गया है (एक अजगर ट्रेसबैक दिखाता है) जो यहां जवाब देने के मूल्य को प्रदर्शित करता है (विशेष रूप से "लघु अजगर स्क्रिप्ट" के लिए
डेविड लजंग मैडिसन स्टेलर

स्क्रिप्ट के साथ एक github रेपो मिला: github.com/gerjantd/bin/blob/master/… डाउनलोड करने के लिए 'कच्चे' पर क्लिक करें, और 'python list_manually_installed_packages.py
David Ljung Madison Stellar

2
गिथब लिंक अब टूट गया है, भी ...
सुजाना

2

संबंधित प्रश्न के लिए यहां मेरे उत्तर की जांच करें : मैं अपने डेबियन सिस्टम पर स्थापित सभी पैकेजों की सूची कैसे प्रदर्शित कर सकता हूं? । सवाल पर कुछ अन्य उत्तरों में भी इस तरह की सूची प्राप्त करने पर अच्छे सुझाव हैं।

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


1

यह मानते हुए कि आपके पास एक सुसंगत इतिहास है और योग्यता का उपयोग करें:

history | grep -e "^..... aptitude install"

केवल उन पैकेजों को सूचीबद्ध करेगा जिन्हें आपने एप्टीट्यूड इंस्टॉल के साथ स्थापित किया है ... डुह


1

यह एक हैक-जॉब है, लेकिन यह पूरी तरह से काम करता है।

सबसे पहले, http://releases.ubuntu.com/maverick/ (या उबंटू का जो भी संस्करण आप उपयोग कर रहे हैं) पर जाएं और जो आप उपयोग कर रहे हैं, *.manifest fileवह उबंटू के संस्करण से जुड़ा हुआ है।

फिर, निम्न स्क्रिप्ट (रिप्लेसिंग <manifest file>, कोण कोष्ठक और सभी, आपके द्वारा डाउनलोड की गई फ़ाइल के पथ के साथ) चलाएं । आप हमेशा > outputफ़ाइल डंप करने के लिए अंत में संलग्न कर सकते हैं ।

diff --suppress-common-lines <(sed 's/ .*//' <manifest file>) <(dpkg --get-selections | sed 's/[ \t].*//') | grep '>' | sed 's/[>] //'

1

धन्यवाद geekosaur, अच्छा कोड। मैंने इसका इस्तेमाल किया लेकिन यह पता लगाने में थोड़ा समय लगा कि इसे कैसे काम करना है। मैंने इसे उबंटू 11.10 में कैसे किया - यह बाश टर्मिनल में काम करता है:

comm -13 \
  <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort) \
  <(comm -23 \
    <(dpkg-query -W -f='${Package}\n' | sed 1d | sort) \
    <(apt-mark showauto | sort) \
  ) > user-installed-packages

फिर प्रत्येक पंक्ति पर एक टैब जोड़ने के लिए- \tऔरinstall

sed 's/$/\tinstall/' user-installed-packages >uip

फिर नई मशीन पर:

sudo dpkg --set-selections < uip

और पैकेज स्थापित करने के लिए:

sudo apt-get dselect-upgrade

0

ऐसा करने का एक अन्य तरीका यह निर्धारित करना है कि आपके "कार्यों" के आधार पर क्या स्थापित किया गया है जो आपकी प्रारंभिक आवश्यकताओं के अनुसार स्थापित करने के लिए आधार पैकेज निर्धारित करता है।

tasksel --list-tasks

बहुत कम से कम आपके पास होगा server। हालाँकि, आप अधिक के लिए चुन सकते हैं। आपके द्वारा इंस्टॉल किए गए उन कार्यों में से प्रत्येक के लिए, आप उन पैकेजों की एक सूची प्राप्त कर सकते हैं जो निम्नलिखित कमांड स्थापित हैं, यह सब एक पंक्ति में (स्पष्टता के लिए टूटा हुआ) उन लोगों के लिए करता है जिन्हें मैंने अपनी स्थापना में चुना है:

(tasksel --task-packages server ; \
 tasksel --task-packages openssh-server ; \
 tasksel --task-packages lamp-server) | sort | uniq

उपरोक्त के लिए एक सामान्य दृष्टिकोण होगा:

(for a in $( tasksel --list-tasks | grep "^i" | awk '{ print $2 }' ) ; \
 do tasksel --task-packages $a; done) | sort | uniq

अब apt-cache depends --installed -i --recurse <packagename> | grep -v "^ "कार्य में परिभाषित सभी पैकेजों द्वारा उपयोग की जाने वाली निर्भरता की एक सूची प्राप्त करने के लिए उपयोग करें। यह एक पंक्ति में निम्नानुसार किया जा सकता है

apt-cache depends --installed -i --recurse \
     $(for a in $( tasksel --list-tasks | \
                   grep "^i" | \
                   awk '{ print $2 }' ) ; \
       do tasksel --task-packages $a; done) | grep -v "^ " | sort | uniq

निम्नलिखित आपके सिस्टम में स्थापित सभी पैकेजों को सूचीबद्ध करता है (निर्भरता सहित नहीं)।

dpkg --get-selections | grep "[[:space:]]install" | awk '{print $1}'

अब commकमांड का उपयोग उन लोगों को खोजने के लिए करें जो केवल दूसरी सूची में हैं (यानी उन दोनों फ़ाइलों और केवल पहली फ़ाइल में हैं)

comm -13 <(apt-cache depends --installed -i --recurse \
              $(for a in $( tasksel --list-tasks | \
                            grep "^i" | \
                            awk '{ print $2 }' ) ; \
                do tasksel --task-packages $a; done) | grep -v "^ " | sort ) \
         <( dpkg --get-selections | grep "[[:space:]]install" | \
            awk '{print $1}' | sort)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.