मैं यह कैसे निर्धारित कर सकता हूं कि एप-गेट पैकेज क्यों स्थापित करेगा?


18

यह प्रश्न समान है कि मैं कैसे पता लगा सकता हूं कि पैकेज क्यों स्थापित किया गया था? , लेकिन मेरे मामले में मैं वास्तव में पैकेज स्थापित करने से पहले जानना चाहता हूं कि यह एक विशेष निर्भरता क्यों स्थापित करेगा।

इसलिए उदाहरण के लिए मैं चला सकता हूं

sudo apt-get install superfoo

और आउटपुट कुछ ऐसा कहेगा:

The following extra packages will be installed:
  foo bar baz ... libderp libjunk

और यह एक बहुत बड़ी सूची हो सकती है। कुछ उदाहरणों में, मैं कुछ ऐसा देखूंगा जो स्थापित होने वाला है जो वास्तव में मेरे लिए कोई मायने नहीं रखता है जो मैं स्थापित कर रहा हूं, इसलिए मैं जानना चाहता हूं कि उस विशेष निर्भरता को क्यों स्थापित किया जा रहा है।

उपरोक्त उदाहरण में, मान लें कि मैं समझना चाहता हूं कि क्यों libderpस्थापित किया जाएगा। मैं जानता हूँ कि किसी भी तरह वहाँ के बीच निर्भरता की एक श्रृंखला है कि superfooऔर libderpलेकिन संकुल की विशाल सूची स्थापित होने के लिए यह देखने के लिए मुश्किल है कि इस श्रृंखला है बनाता है।

एक बार जब मैं निर्भरता श्रृंखला को जानता हूं, तो मैं यह तय कर सकता हूं कि क्या मैं वास्तव में मूल पैकेज को स्थापित करना चाहता हूं या नहीं, और / या मुझे उस पैकेज के अनुचर के साथ संपर्क में रहना चाहिए या नहीं यह देखने के लिए कि क्या उन्हें वास्तव में उन निर्भरता की आवश्यकता है।


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

जवाबों:


14

क्या आप वास्तव में पूछ रहे हैं "मैं आरेख निर्भरता कैसे करते हैं?" इसलिए आप देख सकते हैं कि कौन से पैकेज किस निर्भरता में खींचते हैं।

आपको apt-cacheकमांड से पाठ और आरेखित दोनों निर्भरताएं मिलती हैं (उपयुक्त पैकेज में शामिल हैं, डिफ़ॉल्ट इंस्टॉल का हिस्सा)।

पाठ प्रारूप में 'हैलो' पैकेज की निर्भरता सूचीबद्ध करने के लिए apt-cache का उदाहरण यहां दिया गया है। टेक्स्ट आउटपुट हमेशा केवल एक स्तर का होगा।

$ apt-cache depends hello
hello
  Depends: libc6
 |Depends: dpkg
  Depends: install-info

आप किसी भी dotfile दर्शक का उपयोग करके आरेख को पढ़ सकते हैं, जैसे कि dotty( ग्राफविज़ पैकेज में शामिल है, डिफ़ॉल्ट इंस्टॉल का भी हिस्सा)

यहाँ चित्रमय प्रारूप में पूर्ण निर्भरता वृक्ष प्राप्त करने, फिर उसे प्रदर्शित करने का एक उदाहरण दिया गया है। ग्राफिकल आउटपुट हमेशा पूर्ण पेड़ होगा।

$ apt-cache dotty hello > dotfile
$ dotty dotfile

इसे देखते हुए, आप देख सकते हैं कि 'हैलो' पैकेज पर्ल पैकेज के एक टन में खींचता है ... और जो निर्भरता इसे करता है।


जबकि वह काम करेगा, यह इस तरह से करना कुछ गंभीर काम होगा कि यह देखने के लिए कि किसी निश्चित पैकेज में क्या खींच रहा है अगर पैकेज एक निर्भरता का आधार था।
tgm4883

हर्गिज नहीं। केवल डॉटफाइल चित्र को देखें।
user535733

1
apt-cache depends --recurseआपको पूरी तस्वीर देगा, लेकिन नीचे दिए गए शब्द बेहतर हैं क्योंकि यह केवल वास्तविक निर्भरता का पालन करता है, अनुशंसित या सुझाए गए नहीं।
मुहस्तिथ

जब तक आप --no-install-recommendsध्वज का उपयोग नहीं करते हैं, तब तक उपयुक्त-वास्तव में अनुशंसित निर्भरता स्थापित होगी ।
मुहस्तिथ

2
उस पट्टी का क्या मतलब है? |
CMCDragonkai

9

apt-rdependsयह ऐसा करता है, जैसे 50+ लाइब्रेट की स्थापना के बिनाubuntu-dev-tools

durr@scraper:~$ apt-rdepends mercurial
Reading package lists... Done
Building dependency tree
Reading state information... Done
mercurial
  Depends: libc6 (>= 2.14)
  Depends: mercurial-common (= 2.8.2-1ubuntu1)
  Depends: python (<< 2.8)
  Depends: ucf (>= 2.0020)
libc6
  Depends: libgcc1
libgcc1
  Depends: gcc-4.9-base (= 4.9-20140406-0ubuntu1)
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
gcc-4.9-base
multiarch-support
  Depends: libc6 (>= 2.3.6-2)
mercurial-common
  Depends: python (<< 2.8)
  Depends: python:any (>= 2.7.1-0ubuntu2)
python
  Depends: libpython-stdlib (= 2.7.5-5ubuntu3)
  Depends: python-minimal (= 2.7.5-5ubuntu3)
  Depends: python2.7 (>= 2.7.5-1~)
libpython-stdlib
  Depends: libpython2.7-stdlib (>= 2.7.5-1~)
libpython2.7-stdlib
  Depends: libbz2-1.0
  Depends: libc6 (>= 2.15)
  Depends: libdb5.3
  Depends: libexpat1 (>= 2.1~beta3)
  Depends: libffi6 (>= 3.0.4)
  Depends: libncursesw5 (>= 5.6+20070908)
  Depends: libpython2.7-minimal (= 2.7.6-8)
  Depends: libreadline6 (>= 6.0)
  Depends: libsqlite3-0 (>= 3.5.9)
  Depends: libssl1.0.0 (>= 1.0.0)
  Depends: libtinfo5
  Depends: mime-support
libbz2-1.0
  Depends: libc6 (>= 2.4)
  PreDepends: multiarch-support
libdb5.3
  Depends: libc6 (>= 2.17)
  PreDepends: multiarch-support
libexpat1
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
libffi6
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
libncursesw5
  Depends: libc6 (>= 2.15)
  Depends: libtinfo5 (= 5.9+20140118-1ubuntu1)
  PreDepends: multiarch-support
libtinfo5
  Depends: libc6 (>= 2.15)
  PreDepends: multiarch-support
libpython2.7-minimal
libreadline6
  Depends: libc6 (>= 2.15)
  Depends: libtinfo5
  Depends: readline-common
  PreDepends: multiarch-support
readline-common
  Depends: dpkg (>= 1.15.4)
  Depends: install-info
dpkg
  PreDepends: libbz2-1.0
  PreDepends: libc6 (>= 2.14)
  PreDepends: liblzma5 (>= 5.1.1alpha+20120614)
  PreDepends: libselinux1 (>= 2.1.0)
  PreDepends: tar (>= 1.23)
  PreDepends: zlib1g (>= 1:1.1.4)
liblzma5
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
libselinux1
  Depends: libc6 (>= 2.14)
  Depends: libpcre3
  PreDepends: multiarch-support
libpcre3
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
tar
  PreDepends: libacl1 (>= 2.2.51-8)
  PreDepends: libc6 (>= 2.17)
  PreDepends: libselinux1 (>= 1.32)
libacl1
  Depends: libattr1 (>= 1:2.4.46-8)
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
libattr1
  Depends: libc6 (>= 2.4)
  PreDepends: multiarch-support
zlib1g
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
install-info
  Depends: libc6 (>= 2.14)
  PreDepends: dpkg (>= 1.16.1)
libsqlite3-0
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
libssl1.0.0
  Depends: debconf (>= 0.5)
  Depends: debconf-2.0
  Depends: libc6 (>= 2.14)
  PreDepends: multiarch-support
debconf
  PreDepends: perl-base (>= 5.6.1-4)
perl-base
  PreDepends: dpkg (>= 1.14.20)
  PreDepends: libc6 (>= 2.14)
debconf-2.0
mime-support
python-minimal
  Depends: dpkg (>= 1.13.20)
  Depends: python2.7-minimal (>= 2.7.5-1~)
python2.7-minimal
  Depends: libpython2.7-minimal (= 2.7.6-8)
  Depends: zlib1g (>= 1:1.2.0)
  PreDepends: libc6 (>= 2.15)
python2.7
  Depends: libpython2.7-stdlib (= 2.7.6-8)
  Depends: mime-support
  Depends: python2.7-minimal (= 2.7.6-8)
python:any
ucf
  Depends: coreutils (>= 5.91)
  Depends: debconf (>= 1.5.19)
coreutils
  PreDepends: libacl1 (>= 2.2.51-8)
  PreDepends: libattr1 (>= 1:2.4.46-8)
  PreDepends: libc6 (>= 2.17)
  PreDepends: libselinux1 (>= 1.32)

मेरे क्लीन ubuntu सर्वर इंस्टाल पर, apt-rdependsकेवल libapt-pkg-perlइंस्टॉलेशन के लिए आवश्यक है। यह बहुत हल्का है ubuntu-dev-tools, और अभी भी पुनरावर्ती है, इसलिए आपको सभी निर्भरताएं मिलती हैं , बल्कि फिर apt-cache dependsरिटर्न की तरह पहले-क्रम की निर्भरताएं ।


क्षमा करें यदि मुझे गलत समझा गया है, लेकिन मुझे लगता है कि apt-rdepends रिवर्स-निर्भर के समान नहीं है। apt-rdepends किसी पैकेज के पुनरावर्ती निर्भरता को सूचीबद्ध करता है, जबकि रिवर्स-निर्भर उन पैकेजों को सूचीबद्ध करता है जो दिए गए पैकेज पर निर्भर करते हैं।
रसारेज़

apt-rdepends -r रिवर्स निर्भरता को सूचीबद्ध करता है।
कीथ

8

ऐसा करने का एक आसान तरीका हो सकता है, लेकिन अगर आप रिवर्स-निर्भर का उपयोग करते हैं तो यह किया जा सकता है। आपको ubuntu-dev-tools पैकेज को स्थापित करने की आवश्यकता होगी

apt-get install ubuntu-dev-tools

या इस बटन पर क्लिक करके:

सॉफ्टवेयर केंद्र के माध्यम से स्थापित करें

एक बार स्थापित होने के बाद, आप एक विशिष्ट पैकेज पर निर्भर करता है देखने के लिए रिवर्स-निर्भर का उपयोग कर सकते हैं। उदाहरण के लिए, यदि आप कुछ ऐसा स्थापित करने का प्रयास करते हैं जो अतिरिक्त पैकेज का एक गुच्छा स्थापित करना चाहता है और आप यह देखना चाहते हैं कि "libsmpeg0" क्यों स्थापित किया जा रहा है, तो आप चलाते हैं

reverse-depends libsmpeg0

जो निम्नलिखित उत्पादन होगा।

Reverse-Recommends
==================
* sandboxgamemaker

Reverse-Depends
===============
* btanks
* fenix-plugin-mpeg [armel armhf i386 powerpc]
* fillets-ng
* gltron [amd64 armel i386 powerpc]
* libalien-sdl-perl
* libsdl-perl [i386]
* libsmpeg-dev
* libtaoframework-sdl1.2-cil
* python-pygame
* ruby-sdl
* sdlbrt
* smpeg-gtv
* smpeg-plaympeg
* tdfsb

Packages without architectures listed are reverse-dependencies in: amd64, armel, armhf, i386, powerpc

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

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


2
जबकि मुझे यकीन है कि यह जवाब काम करेगा, यह उस समस्या को व्यक्त करता है जिससे ओपी बचने की कोशिश कर रहा है। ubuntu-dev-toolsनिम्नलिखित पैकेजों में परिणाम स्थापित किए जा रहे हैं। bzr bzr-builddeb dctrl-tools debian-archive-keyring debian-keyring debootstrap devscripts diffstat distro-info distro-info-data dput genisoimage gettext hardening-includes intltool-debian libapt-pkg-perl libarchive-zip-perl libasprintf-dev libassuan0 libauthen-sasl-perl libautodie-perl libclone-perl libcommon-sense-perl libcroco3 libdigest-hmac-perl libdistro-info-perl libemail-valid-perl libencode-locale-perl liberror-perl
नकली नाम

2
[जारी] python-launchpadlib python-lazr.restfulclient python-lazr.uri python-oauth python-paramiko python-reportbug python-secretstorage python-simplejson python-soappy python-support python-wadllib python3-debian python3-magic quilt reportbug t1utils unzip wdiff xdelta (नोट: ऊपर एक साफ सुथरे ubuntu सर्वर इंस्टेंस पर सिर्फ आवश्यक पैकेज था sudo apt-get install ubuntu-dev-tools)। यदि आप भारी मात्रा में क्रॉफ्ट स्थापित करने से बचने की कोशिश कर रहे हैं , तो यह संभवतः सबसे खराब समाधान है।
नकली नाम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.