एक विशिष्ट पैकेज के लिए, क्या मुझे पता चल सकता है कि यह क्यों स्थापित है?
तो, क्या मैं देख सकता हूं या यह मैन्युअल रूप से स्थापित है, या यह किसी अन्य पैकेज की निर्भरता के रूप में स्थापित है? या कि यह डिस्ट्रो के हिस्से के रूप में स्थापित है?
एक विशिष्ट पैकेज के लिए, क्या मुझे पता चल सकता है कि यह क्यों स्थापित है?
तो, क्या मैं देख सकता हूं या यह मैन्युअल रूप से स्थापित है, या यह किसी अन्य पैकेज की निर्भरता के रूप में स्थापित है? या कि यह डिस्ट्रो के हिस्से के रूप में स्थापित है?
जवाबों:
एक टर्मिनल में निम्नलिखित कमांड दर्ज करने के लिए एक त्वरित समाधान है:
aptitude why $package
या, यदि आप केवल परम कारण में रुचि रखते हैं:
aptitude why $package --show-summary
पैकेज के नाम के साथ $ पैकेज बदलें , और आपको aptitude
पहले पैकेज को स्थापित करने की आवश्यकता हो सकती है ।
यहां वह आउटपुट है जो आपको मिल सकता है aptitude why aspell --show-summary
Packages requiring aspell:
inkscape
अधिक विस्तार के लिए आप दौड़ेंगे aptitude why aspell
। आप निम्नानुसार उदाहरण आउटपुट पढ़ सकते हैं: "आपने मैन्युअल रूप से स्थापित किया है inkscape
, जिसके लिए आवश्यकता होती है libgtkspell
, जिसकी आवश्यकता होती है libenchantic2a
, aspell
"। ( i
मार्कर इंस्टॉल किए गए पैकेज इंगित करते हैं; A
मार्कर स्वचालित रूप से इंस्टॉल किए गए पैकेज दर्शाते हैं।)
i inkscape Depends libgtkspell0 (>= 2.0.10)
i A libgtkspell0 Depends libenchant1c2a (>= 1.6.0)
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en Depends aspell (>= 0.60.3-2)
अंत में, निम्न आदेश
apt-cache rdepends --installed $package
आपके कंप्यूटर पर स्थापित अन्य पैकेजों को सूचीबद्ध करता है जो सीधे $ पैकेज पर निर्भर करते हैं । आप उन --recurse
सभी पैकेजों को सूचीबद्ध करने का विकल्प जोड़ सकते हैं जो इस पर प्रत्यक्ष या अप्रत्यक्ष रूप से निर्भर करते हैं।
apt-cache rdepends --recurse $package
शायद बहुत सारे पैकेज देता है। मैं --installed
स्थापित पैकेजों को प्रतिबंधित करने का विकल्प जोड़ूंगा। -i
विकल्प पूर्व-निर्भरता और निर्भरता संबंधित पैकेजों के लिए प्रतिबंधित है। लेकिन एक पैकेज स्थापित किया जा सकता है क्योंकि यह दूसरे पैकेज द्वारा अनुशंसित है। इस तरह की सिफारिश से संबंधित पैकेजों को शामिल करने के लिए, मुझे लगता है कि यह सही होगा:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
एक निश्चित पैकेज क्यों स्थापित किया गया था इस पर एक त्वरित और संक्षिप्त तर्क एक टर्मिनल ( Applications -> Accessories -> Terminal
) में निम्नलिखित कमांड टाइप करके पाया जा सकता है :
aptitude why <package-name>
उस पैकेज के नाम से बदलें जिसे आप रुचि रखते हैं। उदाहरण के लिए, टाइपिंग aptitude why libgoo-canvas-perl
निम्नलिखित आउटपुट देता है:
i shutter Suggests libgoo-canvas-perl
मूल रूप से इसका मतलब है कि shutter
इस मामले में पैकेज को libgoo-canvas-perl
स्थापित करने का सुझाव दिया गया है। तब टाइप करके aptitude why shutter
मैं डिपेंडेंसी चेन पर चल सकता हूं।
हालांकि, एक चेतावनी है। मैं अक्सर ध्यान देता हूं कि स्थिति के लिए सबसे प्रशंसनीय स्पष्टीकरण पाया जाता है जो वास्तविक मामला नहीं हो सकता है, लेकिन फिर भी आपको आगे देखने के लिए एक सुराग देगा।
मेरे मामले में, shutter
सुझाव देता है libgoo-canvas-perl
- हालांकि, सुझाए गए पैकेज स्वचालित रूप से डिफ़ॉल्ट रूप से स्थापित नहीं होते हैं। फिर भी, यह स्क्रीनशॉट को संपादित करने में सक्षम नहीं होने के साथ "अनुभव" की मेरी मेमोरी को जॉग करता है shutter
जिसके साथ मुझे मैन्युअल रूप से स्थापित करने का नेतृत्व कियाligbgoo-canvas-perl
अंत में, आप यह जान सकते हैं कि क्या कोई पैकेज स्वचालित रूप से स्थापित किया गया था (मतलब पैकेज प्रबंधन प्रणाली द्वारा तय की गई निर्भरता को देखते हुए अनिवार्य रूप से और अन्य पैकेजों की सिफारिशों से जिसे आपने इसे स्थापित करने के लिए कहा था)।
aptitude show <package-name>
यह नीचे की तरह एक पंक्ति का उत्पादन करेगा (आउटपुट की तीसरी पंक्ति):
Automatically installed: no
अधिक जानकारी के लिए info aptitude
(टर्मिनल में) रन करें या एप्टीट्यूड विकी पेज पर जाएं
यह पता लगाने के लिए कि एक विशेष पैकेज कब स्थापित किया गया था, 2 विकल्प हैं:
Install
स्थापना के संबंध में सभी प्रविष्टियों को सूचीबद्ध करने के लिए (मामले को ध्यान में रखकर) खोज सकते हैं । हालाँकि, यह केवल Synaptic का उपयोग करके स्थापित संकुल को दिखाएगाकिसी टर्मिनल में निम्न कमांड चलाएँ। यह स्थापना इतिहास प्रविष्टियों के लिए dpkg लॉग खोजेगा। हालांकि, इन लॉग्स में से कितने को बरकरार रखा गया है, इसकी अधिकतम सीमा है, इसलिए यदि आप जिस पैकेज की तलाश कर रहे हैं वह बहुत समय पहले स्थापित किया गया था, तो आप इसे नहीं पा सकते हैं। अधिक जानकारी यहाँ
zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
हां, आप कर सकते हैं, और यह वास्तव में एक बहुत स्पष्ट आदेश है। आपके द्वारा स्थापित एप्टीट्यूड को मानते हुए, आप एक टर्मिनल विंडो विज्ञापन प्रकार खोल सकते हैं:
aptitude why package
उस पैकेज की सूची देनी चाहिए जो उस विशिष्ट पैकेज पर निर्भर करता है। यदि यह मैन्युअल रूप से स्थापित पैकेज है, तो यह कुछ ऐसा कहेगा "पैकेज स्थापित करने का कारण खोजना संभव नहीं था"।
यहां एक सरल तरीका है जो भरोसा नहीं करता है aptitude
, जो कि 10.10 डिफ़ॉल्ट रूप से अब जहाज नहीं करता है।
Synaptic खोलें और इसे निकालने का प्रयास करें।
यदि कोई संवाद आपको अन्य पैकेजों को हटाने के लिए कहता है, तो वे पैकेज हैं जो (पुनरावर्ती) इस पर निर्भर करते हैं।
apt-get remove package_name_goes_here -s
फिर, परिणाम के रूप में हटाए जाने वाले पैकेज वे सभी हैं जो (पुनरावर्ती) उस पर निर्भर करते हैं। ( -s
पैरामीटर apt-get
वास्तव में पैकेज को नहीं हटाने के लिए कहता है।)
y/N
कन्फर्मेशन रिक्वेस्ट होनी चाहिए जो आपको टाइपो चाहिए -s
। मैंने हालांकि एक चेतावनी जोड़ी।