मुझे उबंटू पर "apt-get install" का इतिहास कैसे मिला?


85

मैं एक सर्वर को एक उबंटू बॉक्स से दूसरे में ले जाने वाला हूं। मैं पुराने बॉक्स को नए से नहीं बांध रहा हूं; मैं एक नई प्रणाली बना रहा हूं और आवश्यकतानुसार डाटा स्थानांतरित करूंगा। मैं सभी सॉफ़्टवेयर स्थापित करना चाहता हूं जो मेरे पास पुराने बॉक्स पर नए पर हैं।

क्या समय के साथ मेरे द्वारा दिए गए "sudo apt-get install" कमांड के इतिहास को खोजने का एक सरल तरीका है? यही है, dpkg -l मुझे उन सभी पैकेजों को दिखाता है जो इंस्टॉल किए गए हैं, लेकिन नहीं जो शीर्ष-स्तरीय पैकेज ने उन्हें स्थापित किया है। यदि मुझे स्थापित पैकेज देने के लिए dpkg के लिए कोई रास्ता है, तो मैं वहां अद्वितीय पा सकता हूं; अन्यथा, मैं कुछ और कहना चाहता हूं "आपने इन 24 पैकेजों को स्थापित किया है"।



क्या आप नीचे एक उत्तर स्वीकार कर सकते हैं? उत्तर देने वाले लोगों के प्रति आभारी होना।
एम-रिक


ये समाधान केवल यह जांचेंगे कि पिछले लॉग रोटेशन के बाद क्या हुआ है। वे सभी इतिहास की जांच नहीं करते हैं।
२१:२१ बजे क्रांग प्राइम

इस सवाल का सरल और तेज़ तरीका इस उत्तर से दिया गया है, askubuntu.com/a/250530/197730 , इस प्रश्न के लिए कि कैसे इन स्थापित पैकेजों को सूचीबद्ध किया जाए
TooTone

जवाबों:


68

aptमें इतिहास है /var/log/apt/history.log, जैसा कि ऊपर एक टिप्पणी में कहा। उस ने कहा, यह उन पैकेजों को सूचीबद्ध नहीं करेगा जो मैन्युअल रूप से इंस्टॉल किए गए थे, dpkgजैसे कि GUI या gdebi। उन सभी पैकेजों को देखने के लिए जो आप गए थे dpkg, आप देख सकते हैं /var/log/dpkg.log


8

5
पहले लिंक में प्रक्रिया स्वचालित रूप से स्थापित संकुल और मैन्युअल रूप से स्थापित संकुल के बीच अंतर नहीं करती है। /var/log/apt/history.log(आपको स्थान गलत btw मिल गया) कुछ महीनों के बाद दूर चला जाएगा।
गिल्स

गिल्स दोनों काउंट पर सही है। मेरे पास केवल उन लॉग के महीने का मूल्य है, और मैं यह भी नहीं देख सकता कि लॉग हटाने की दर कैसे निर्धारित की गई है (यह FreeBSD पर 'newsyslog' के साथ किया गया है)। इसलिए मेरे पास अभी भी समाधान नहीं है, लेकिन मेरे पास कुछ संकेत हैं। मैं क्लोनिंग लेख में कमांड से आउटपुट को कम से कम पकड़ सकता हूं, "उच्च-स्तरीय" नामों की तलाश कर सकता हूं, उन्हें नए पर स्थापित कर सकता हूं, नए बॉक्स पर एक ही काम कर सकता हूं, दो परिणामों को अलग कर सकता हूं, और संतुष्ट होने तक दोहरा सकता हूं। मैं अभी भी अधिक विचारों को सुनने के लिए ove होगा।
पॉल हॉफमैन

7

आप उन पैकेजों को सूचीबद्ध कर सकते हैं जिनकी स्थापना के साथ स्पष्ट रूप से अनुरोध किया गया है apt-mark

apt-mark showmanual

यदि आप डेबियन की एक प्राचीन रिलीज़ चला रहे हैं, तो यहां एक मैनुअल तरीका है।

निम्न आदेश उन पैकेजों की सूची देता है जिनकी स्थापना का अनुरोध किया गया था, चाहे वे मैन्युअल रूप से या स्वचालित रूप से। जब तक आप पैकेजों को स्थापित करने (डी) के बीच में होते हैं, यह स्थापित पैकेजों की सूची है।

dpkg --get-selections | sed -n 's/\t\+install$//p'

निम्न आदेश स्वचालित रूप से स्थापित संकुल का सुपरसेट देता है:

</var/lib/apt/extended_states awk -v RS= '/\nAuto-Installed: *1/{print$2}'

यह सब एक साथ रखते हुए, निम्न कमांड मैन्युअल रूप से स्थापित संकुल को सूचीबद्ध करता है:

comm -23 <(dpkg --get-selections | sed -n 's/\t\+install$//p') \
         <(</var/lib/apt/extended_states \
           awk -v RS= '/\nAuto-Installed: *1/{print$2}' |sort)

1
--- से बहुत अलग परिणामcomm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
Cbhihe

डेबियन पर, apt-mark showmanualआपकी अंतिम कमांड के बराबर है।
अधिकतम

3
grep -i "Commandline" /var/log/apt/history.log

आपके द्वारा इंस्टॉल किए गए सभी पैकेज दिखाता है: sudo apt-get install xxxxx


यह @ sufficientfink के उत्तर से पर्याप्त रूप से भिन्न नहीं है और इस पर एक टिप्पणी होनी चाहिए।
कार्ल रिक्टर

2

टैक / हेड संयोजन के बजाय, पूंछ का उपयोग करना बेहतर है (पिछले 25 लाइनों के लिए):

tail -n 25 /var/log/apt/history.log

यह @ sufficientfink के उत्तर से पर्याप्त रूप से भिन्न नहीं है और इस पर एक टिप्पणी होनी चाहिए।
कार्ल रिक्टर

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

0

अन्य उत्तरों ने मदद की लेकिन मुझे बहुत अधिक आउटपुट दिया। उत्पादन में कटौती करने के लिए, मैं के साथ शुरू apt-mark showmanualमें के रूप में इस सवाल का जवाब है, और संकुल तो फिल्टर करके निकाल मूल रूप से स्थापित है (देखें इस सवाल का जवाब कैसे संकुल मूल रूप से स्थापित की एक सूची प्राप्त करने के लिए, मैं ubuntu उपयोग कर रहा हूँ 18.04.2 इसलिए नीचे दिए गए लिंक) ।

BASE_PACKAGES_MANIFEST=http://releases.ubuntu.com/18.04.2/ubuntu-18.04.2-desktop-amd64.manifest
REMOVE_VERSIONS_REGEX='[0-9][.-][0-9][.-][0-9]|[0-9][.-][0-9]|[0-9]'
paste  <( apt-mark showmanual ) <( apt-mark showmanual | sed -r "s/$REMOVE_VERSIONS_REGEX//g" ) |
    grep -vf <( curl $BASE_PACKAGES_MANIFEST | cut -f1 | sed -r "s/$REMOVE_VERSIONS_REGEX|:amd//g" ) |
    cut -f1 |
    sort |
    uniq

स्क्रिप्ट उन पैकेजों को फ़िल्टर करती है जो संस्करण-स्वतंत्र तुलना करके मूल प्रकट में थे, ताकि उन्नत पैकेज सूची में दिखाई न दें। मैं लगभग 60 पैकेजों की सूची के साथ समाप्त हुआ।

दूसरा तरीका मुझे पसंद है यह उत्तर है जो सभी उपयुक्त लॉग को खोजता है


-1

अवरोही क्रम में सबसे हाल ही में स्थापित पैकेजों की सूची प्राप्त करने के लिए, मुझे उपयोग करना पसंद है (उदाहरण के लिए 25 लाइनें):

tac /var/log/apt/history.log |head --lines=25

1
अधिक कुशल (और अनुप्रास) होगा:tail -25 /var/log/apt/history.log | tac
अगस्त

यह @ sufficientfink के उत्तर से पर्याप्त रूप से भिन्न नहीं है और इस पर एक टिप्पणी होनी चाहिए।
कार्ल रिक्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.