सवाल सभी स्थापित संकुलों को कैसे सूचीबद्ध करें


मैं सभी स्थापित संकुलों की एक सूची को एक टेक्स्ट फ़ाइल में आउटपुट करना चाहता हूं ताकि मैं इसकी समीक्षा कर सकूं और किसी अन्य सिस्टम पर थोक-इंस्टॉल कर सकूं। यह मैं कैसे करूंगा?


1578
2017-12-17 02:08


मूल


यह पहले से ही उत्तर दिया गया था यहाँ। - Simon Quigley
वाह, जवाबों के माध्यम से जा रहा है यह पूरा करने के कई तरीके हैं: / - Madivad
मैं इस तरह की एक टेक्स्ट फ़ाइल से एक नई प्रणाली पर थोक स्थापना कैसे करूं? - Elysium
@Madivad इन पैकेज प्रबंधकों को एक बार जीवन को आसान बनाना था ... - René Nyffenegger
इसी तरह का सवाल unix.stackexchange.com "स्थापना दिनांक द्वारा संकुल सूची" - JamesThomasMoon1979


जवाब:


उबंटू 14.04 और ऊपर

apt उबंटू 14.04 और ऊपर के उपकरण को यह बहुत आसान बनाता है।

apt list --installed

पुराने संस्करण

स्थानीय रूप से स्थापित संकुलों की एक सूची प्राप्त करने के लिए इसे अपने टर्मिनल में करें:

dpkg --get-selections | grep -v deinstall

( -v गैर-मिलान वाली लाइनों को वापस करने के लिए "inverts" grep टैग करें)

स्थापित एक विशिष्ट पैकेज की सूची प्राप्त करने के लिए:

dpkg --get-selections | grep postgres

उस सूची को एक टेक्स्ट फ़ाइल में सहेजने के लिए कहा जाता है packages अपने डेस्कटॉप पर यह अपने टर्मिनल में करें:

dpkg --get-selections | grep -v deinstall > ~/Desktop/packages

वैकल्पिक रूप से, बस उपयोग करें

dpkg -l

(आपको सुपरसियर के रूप में इनमें से कोई भी आदेश चलाने की आवश्यकता नहीं है, इसलिए नहीं sudo या यहां आवश्यक किसी भी अन्य प्रकार)


1730
2017-12-17 03:02



फिर, नए कंप्यूटर पर स्थापित करते समय, करें cat ~/Desktop/packages > sudo dpkg --set-selections && sudo apt-get dselect upgrade  स्रोत - koanhead
डीपीकेजी के लिए वाक्यविन्यास 2006 से थोड़ा बदल सकता है क्योंकि वह आदेश मेरे लिए काम नहीं करता है, @koanhead। sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrade उसने चाल चली। - James
ध्यान दें कि यह ट्रैक नहीं रखेगा कि उपयोगकर्ता द्वारा कौन से संकुल स्पष्ट रूप से स्थापित किए गए थे और जिन्हें निर्भरता के रूप में स्थापित किया गया था। इसका अर्थ यह है कि यदि आप किसी अन्य मशीन पर अपना सेटअप फिर से बनाने के लिए इस विधि का उपयोग करते हैं, तो जब आप किसी दिए गए पैकेज को हटाते हैं तो एपीटी अनियंत्रित निर्भरताओं को हटाने में सक्षम नहीं होगा। - intuited
यह दुखद और आश्चर्यजनक है कि @intuited की टिप्पणी समुदाय द्वारा बेहतर समझ में नहीं आती है। क्या अधिक "उच्च रेटेड" योगदानकर्ता सलाह देने से पहले और अधिक सोचने से रोकेंगे कि नए यूबंटू संस्करण पर पुराने पैकेज को पुनः लोड करना एक अच्छा विचार नहीं है (?)। सभी डीपीकेजी विकल्पों के साथ मैं अभी भी एक ऐसा नहीं देखता जो उपयोगकर्ता द्वारा 'स्पष्ट रूप से' स्थापित संकुल खींचता है ताकि उस सूची को पुनः लोड किया जा सके और इसकी निर्भरता स्थापित हो सके; मुझे यह जानना अच्छा लगेगा - कृपया उस जानकारी को साझा करें। इस बीच, उन पैकेजों की एक सूची बनाएं जिन्हें आपको वास्तव में पुनः स्थापित करने और चलाने के लिए आवश्यक है - Ricalsin
हम सभी जानते हैं कि लिनक्स फोटोग्राफिक मेमोरी के बिना लोगों को भेदभाव करता है, लेकिन गंभीरता से, इसमें क्या गलत होगा apt list installed। किसी दिन हमें "सरल चीजों को आसान रखना" सिद्धांत में व्यवस्थित रूप से विफल होना चाहिए।


केवल उन संकुलों को प्राप्त करने के लिए जो स्पष्ट रूप से स्थापित थे (न केवल निर्भरताओं के रूप में स्थापित), आप चला सकते हैं

aptitude search '~i!~M'

इसमें एक संक्षिप्त विवरण भी शामिल होगा, जिसे आप चाहें। यदि नहीं, तो विकल्प भी जोड़ें -F '%p'जैसा कि कार्तिक 87 द्वारा उल्लेख किया गया है।


फिर भी एक और विकल्प फ़ाइल की प्रतिलिपि बनाना प्रतीत होता है /var/lib/apt/extended_states, जो इस प्रारूप में एक टेक्स्ट फ़ाइल डेटाबेस है:

Package: grub-common
Architecture: amd64
Auto-Installed: 0

Package: linux-headers-2.6.35-22-generic
Architecture: amd64
Auto-Installed: 1

Auto-Installed: 0 इंगित करता है कि पैकेज स्पष्ट रूप से स्थापित किया गया था और केवल एक निर्भरता नहीं है।


380
2017-08-28 21:35



यह सही जवाब होना चाहिए। निर्भरता सूची क्यों? - Stavros Korokithakis
इस चाहिए जवाब हो, लेकिन उपयोग कर रहे हैं योग्यता मल्टीचर्च की वजह से थोड़ा अविश्वसनीय है वर्तमान में (रास्ते पर फिक्स), दुर्भाग्य से। अभी भी स्पष्ट रूप से स्थापित पैकेजों को सूचीबद्ध करने और इसे करने का एक तरीका इंगित करने के लिए +1 है (इसके बावजूद यह वर्तमान में 11.10+ पर काम नहीं करेगा)। - gertvdijk
सटीक (कुछ समय पहले) के लिए @intuited "फिक्स रिलीज़"। :) - gertvdijk
यह सभी संकुल सूचीबद्ध करता है, न कि उबंटू 13.10 पर मैन्युअल रूप से स्थापित संकुल। - Eamon Nerbonne
उबंटू -1510 पर, पहले योग्यता स्थापित करना चाहिए जैसे: sudo apt-get install aptitude - Mark Mikofski


वर्तमान में कौन से पैकेज स्थापित हैं इसका बैकअप बनाएं:

dpkg --get-selections > list.txt

फिर (किसी अन्य सिस्टम पर) उस सूची से इंस्टॉलेशन को पुनर्स्थापित करें:

dpkg --clear-selections
sudo dpkg --set-selections < list.txt

बालों के पैकेज से छुटकारा पाने के लिए:

sudo apt-get autoremove

बैकअप समय पर स्थापित करने के लिए (यानी द्वारा निर्धारित संकुल को संस्थापित करने के लिए dpkg --set-selections):

sudo apt-get dselect-upgrade

179
2018-05-16 18:26



एक और मशीन पर बहाल करने के बारे में महान युक्ति। +1। - Drew Noakes
2 अलग-अलग उबंटू 12.04 मशीनों के बीच माइग्रेट करने से इस दृष्टिकोण ने मेरी प्रणाली तोड़ दी। इसमें थोड़ी देर लग गई जब तक मुझे एहसास हुआ कि किसी भी तरह से ubuntu-desktop अनइंस्टॉल किया गया - शायद डीपीकेजी कमांड में से एक के कारण। सावधान रहें, मुझे नुकसान की मरम्मत के लिए घंटे लग गए! - Karl Frisk
और कभी-कभी सिस्टम एक ऐप अपडेट करता है जिसे आप विशेष रूप से सिस्टम को कभी भी स्पर्श नहीं करना चाहते हैं, आदेशों के अंत में इसे आग लगाएं sudo apt-mark hold name-your-package  । यह एपीटी-प्राप्त को मौजूदा संस्करण में अपग्रेड करने से रोक देगा जो प्रक्रिया को अद्यतन करने के लिए डिफ़ॉल्ट है। - Faron


सभी संकुलों को सूचीबद्ध करने के लिए जानबूझकर स्थापित (निर्भरता के रूप में नहीं) apt कमांड द्वारा, निम्न चलाएं:

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep '^Commandline:'

यह पहले सूचीबद्ध सूचीबद्ध पुराने आदेशों के साथ एक रिवर्स टाइम आधारित दृश्य प्रदान करता है:

Commandline: apt-get install k3b
Commandline: apt-get install jhead
...

स्थापना डेटा भी synaptic उपयोग दिखा रहा है, लेकिन विवरण के बिना (स्थापना की तारीख के साथ ही):

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep -B1 '^Commandline:'

निम्नलिखित प्रदान करना:

Start-Date: 2012-09-23  14:02:14
Commandline: apt-get install gparted
Start-Date: 2012-09-23  15:02:51
Commandline: apt-get install sysstat
...

174
2018-02-02 10:39



या (zgrep के साथ और अद्यतन संदेशों को हटा रहा है): zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:' - belacqua
क्या यह दृष्टिकोण मिस पैकेज स्थापित है dpkg?? - drevicko
जबकि उपरोक्त सरल उत्तर सामान्य उपयोगकर्ता के लिए अच्छे हैं। मशीन द्वारा किए गए सभी अनुकूलन को पीछे हटाना सबसे अच्छा तरीका है, क्योंकि यह भी दिखाता है कि मूल छवि से क्या हटाया गया था या जोड़ा गया था, क्योंकि यह उन्हें अनुक्रम में सूचीबद्ध करता है, और आपको याद रखने में मदद करता है कि कौन सा है उन्हें एक और सिस्टम में वापस जोड़ने के लिए सही अनुक्रम। - AllGamer
@drevicko आप सही हैं, यह डीपीकेजी के साथ स्थापित संकुल सूचीबद्ध नहीं करता है - Steve Buzonas
संगठित रखने के लिए यह बहुत आसान है - मेरा दिमाग किसी भी कारण से इसे इस तरह से पसंद करता है .. - JeremyFelix


apt-mark showmanual

मैन पेज राज्य:

मैन्युअल रूप से स्थापित संकुल की एक सूची मुद्रित करेगा

इसलिए, इन संकुलों को स्थापित करने के कारण इसमें सभी निर्भरताओं को शामिल किए बिना, केवल स्पष्ट रूप से स्थापित संकुलों की एक सूची देनी चाहिए (हालांकि इसमें संकुल शामिल हैं जो डिफ़ॉल्ट प्रारंभिक स्थापना का हिस्सा थे)।

परिणाम को एक टेक्स्ट फ़ाइल में आउटपुट करने के लिए:

apt-mark showmanual >list-installed.txt

60
2017-07-10 13:43



डेबियन "एपीटी-मार्क शोमेनुअल" पर "निचोड़" पर काम नहीं किया लेकिन "wheezy" पर काम किया - Wadih M.
अधिकांश अन्य उत्तरों की तरह, apt-mark showmanual वास्तव में नहीं है यह स्वचालित रूप से स्थापित इंस्टॉलेशन के टन सूचीबद्ध करता है, शायद बेस इंस्टॉल का हिस्सा। - mivk
वैसे सवाल स्थापित संकुल के लिए था और यह स्वचालित रूप से स्थापित निर्भरताओं को कम से कम स्थापित संकुल देता है। इसमें प्रारंभिक इंस्टॉलेशन के हिस्से के रूप में प्रारंभिक पैकेज शामिल हैं। मुझे लगता है कि आप इसे डिफ़ॉल्ट इंस्टॉल की सूची प्राप्त करने के लिए एक नए इंस्टॉलेशन पर चला सकते हैं और फिर अंतर को देखने के लिए इसे घटा सकते हैं। - Tim Tisdall


dpkg-query (के बजाय dpkg --get-selections, जो कुछ संकुल सूचीबद्ध करता है जो स्थापित नहीं हैं) निम्नानुसार हैं:

dpkg-query -W -f='${PackageSpec} ${Status}\n' | grep installed |  sort -u | cut -f1 -d \ > installed-pkgs

या:

dpkg -l | grep ^ii | sed 's_  _\t_g' | cut -f 2 > installed-pkgs

38
2018-05-16 18:40



Typying # for pkg in `cat installed-pkgs`; do apt-get install -y $pkg; done दूसरी प्रणाली में मैंने इसे बनाया है ताकि यह पैकेज स्थापित करेगा। - xyz
@julianromera: apt-get install -y $(< installed-pkgs) यह ऐसा कर देगा ताकि उपयुक्त एक बार चल सके और एक ही समय में सभी निर्भरताओं का ख्याल रखे। - jamadagni
@ जुलीयन्रोमेरा ... अगर मुझे गलत लगता है तो मुझे सही करें लेकिन इंस्टॉल करने से पहले निर्भरताओं के साथ एक ऐप बनाने के लिए आमतौर पर होगा sudo apt-get build-dep name-package; sudo apt-get install name-package;  ? - Faron


सभी स्थापित संकुलों को सूचीबद्ध करने के लिए,

dpkg -l |awk '/^[hi]i/{print $2}' > 1.txt

या

aptitude search -F '%p' '~i' > 1.txt

या

dpkg --get-selections > 1.txt

ध्यान दें:
आपको अपने घर फ़ोल्डर में परिणाम 1.txt फ़ाइल मिल जाएगी या आप अपना रास्ता निर्दिष्ट कर सकते हैं।


36
2017-12-17 03:35





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

इस से सहेजी गई फ़ाइल को सिनैप्टिक में "फ़ाइल / पठन चिह्नों" का उपयोग करके एक नई मशीन में लोड किया जा सकता है।


33
2017-12-17 04:46