सवाल कुछ निर्भरताओं को नजरअंदाज करने के लिए मैं कैसे उपयुक्त हो सकता हूं?


मैं कुछ निर्भरताओं को अनदेखा कैसे कर सकता हूं? उदाहरण के लिए, मैं स्थापित करना चाहता था mailx तो मैं क्रॉन स्क्रिप्ट / रिपोर्ट-जनरेटिंग टूल्स से ईमेल भेजने के लिए इसका उपयोग कर सकता हूं। हालांकि, मेलक्स स्थापित करना भी इंस्टॉल करता है exim4 और निर्भरताओं का एक पूरा समूह (मेरे पास पहले से ही पोस्टफिक्स स्थापित है) मुझे वास्तव में आवश्यकता नहीं है और मुझे लगता है कि मेलक्स भी बिना रह सकता है।

मैं कुछ निर्भरताओं को अनदेखा कैसे करूं लेकिन अभी भी एक अच्छा टूल है क्योंकि एपीटी-गेट का उपयोग करें?


66
2018-03-22 08:17


मूल


पोस्टफिक्स कैसे स्थापित है? डेबियन पैकेज के माध्यम से? या आपने स्रोत से पोस्टफिक्स स्थापित किया है? - stew
हां, पोस्टफिक्स स्रोत से स्थापित किया गया था - FrancisV
डेबियन का मेलएक्स पैकेज केवल 'अनुशंसा करता है' exim4, इसकी आवश्यकता नहीं है। यदि आप अनुशंसित पैकेज स्थापित नहीं करना चाहते हैं, तो बस जोड़ें APT::Install-Recommends "false"; आपके apt.conf। - ruief


जवाब:


आप कोशिश कर सकते हैं --nodeps के साथ झंडा apt-get
या पैकेज डाउनलोड करें और इसका उपयोग कर स्थापित करें dpkg विकल्प के साथ --ignore-depends

उदाहरण के लिए, यदि आप पैकेज स्थापित करना चाहते हैं foo निर्भरता के बिना bar:

dpkg --ignore-depends=bar -i foo_1.2.3_amd64.deb

22
2018-03-22 08:24



आपके पास कौन सा एपीटी संस्करण है? मेरी (0.8.10) में ऐसा कोई विकल्प नहीं है। - Tshepang
deppencies को नजरअंदाज करने के लिए dpkg बता रहा है उसके लिए एक विकल्प नहीं है। यह केवल इस लेनदेन के लिए निर्भरताओं को अनदेखा करने के लिए डीपीकेजी को बताता है, फिर भी आप निर्भरताओं को पूरा करने की कोशिश करेंगे या अगली बार जब आप कुछ भी करेंगे तो पॅकक को हटा दें। - stew
एपीटी 0.8.16 बीटीडब्ल्यू के साथ अभी भी कोई भाग्य नहीं है। बहुत खराब है क्योंकि उचित विकल्प नहीं लगते हैं। इसे काम करने के लिए 2011 में आपने किस संस्करण का उपयोग किया था? - Christian
आप एपीटी-डाउनलोड डाउनलोड और फिर डीपीकेजी का उपयोग कर सकते हैं - Frederick Roth
--no-install-recommends मेरे लिए काम किया - Olle Härstedt


आप इस तरह के डेब पैकेज की निर्भरताओं को बदल सकते हैं:

  1. अनपैक डेब: ar x golden-linux.deb (यानी तीन फाइलें बनायेगी: डेबियन-बाइनरी control.tar.gz data.tar.gz)
  2. नियंत्रण संग्रह अनपैक करें: tar xzf control.tar.gz (बना देगा: postinst postrm preinst prerm md5sums नियंत्रण)
  3. में निर्भरता तय करें control (एक पाठ संपादक का उपयोग करें)
  4. Repack control.tar.gz: tar --ignore-failed-read -cvzf control.tar.gz {post,pre}{inst,rm} md5sums control
  5. रिपैक डेब: ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz (आदेश महत्वपूर्ण है! देखें [नोट])

[नोट]: डीपीकेजी एक पैकेज के मेटाडेटा को जल्दी से पढ़ने में सक्षम नहीं होगा अगर उसे खोजना था कि डेटा अनुभाग कहां समाप्त हुआ था!


47
2018-04-27 21:29



अच्छा, यह मुझे "raring8" से "raring6" के लिए निर्भरताओं का एक विशेष मामला हल करता है लेकिन एक ही संस्करण = (, बहुत धन्यवाद - Felipe Alcacibar
मुझसे भी धन्यवाद; मुझे इसका इस्तेमाल करना पड़ा क्योंकि एक आवेदन की आवश्यकता थी libmng1.so.1 भले ही यह एक symlink सेट के साथ पूरी तरह से काम किया libmng1.so.2। apt-get बस परेशान नहीं किया जा सकता था और मुझे अनमेट निर्भरताओं के बारे में परेशान करता था (यहां तक ​​कि जब कुछ पूरी तरह से असंबंधित स्थापित होता है!)। बकवास अवधारणा का कितना भार है। - syntaxerror
+1 यह मेरे लिए भी काम किया। पैकेज gnome-settings-daemon चाहता था gnome-settings-daemon-schemas=3.8.6.1-0ubuntu11 लेकिन मेरे पास पहले से ही है gnome-settings-daemon-schemas=3.8.6.1-0ubuntu11.2 (<- अंत में ".2" नोटिस)। इस प्रक्रिया ने मुझे पैकेज को संपादित करने और इसे नए 11.2 संस्करण का उपयोग करने के लिए मजबूर करने की अनुमति दी। धन्यवाद! - Eric Duncan
महान समाधान, धन्यवाद। मैंने चरण 2 और 4 को थोड़ा सा संशोधित किया: 2। FILES=$(tar zxvf control.tar.gz) एक चर में फ़ाइल सूची स्टोर करने के लिए। 4। tar zcf control.tar.gz $FILES - मूल फ़ाइल सूची (संशोधन के बाद) का उपयोग कर पाइप के बिना एक ही चरण में संग्रह बनाएं या रीडायरेक्ट करें। - Brett
एक और जोड़े सुझाव। # 4 के लिए: जोड़ें --ignore-failed-read ताकि tar बाकी कमांड लाइन से गायब फाइलों को अनदेखा करता है। (उदाहरण के लिए, prerm,postrm कई पैकेजों से अनुपस्थित हैं।) इसके अलावा, टैरबॉल हो सकते हैं .xzबजाय .gz डेबियन संग्रह प्रारूप के नए संस्करणों में (उदा। data.tar.xz)। - Dan Lenski


सरल और आसान समाधान: बस एक अतिरिक्त के साथ अवांछित संकुल निर्दिष्ट करें - उनमें से प्रत्येक के बाद।

बिना उदाहरण के - स्विच:

root@debian:~# apt-get install bsd-mailx 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  exim4-base exim4-config exim4-daemon-light liblockfile-bin liblockfile1
[...]

स्विच का उपयोग कर उदाहरण स्थापित करने से बचें  exim4-base। ध्यान दें - अतं मै:

root@debian:~# apt-get install bsd-mailx exim4-base-
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'exim4-base' is not installed, so not removed
The following extra packages will be installed:
  liblockfile-bin liblockfile1 ssmtp
[...]

जैसा कि आप देख सकते हैं, apt-get अब स्थापित करने की कोशिश नहीं करता है exim4-base पैकेज, और यह अपनी विभिन्न निर्भरताओं को स्थापित करने की कोशिश नहीं करता है (exim4-config आदि)।

और यदि आप गलत थे और इसकी आवश्यकता थी exim4-base निर्भरता सभी के बाद, आप बस कर सकते हैं apt-get install बाद में!


32
2018-01-30 19:43



यह सबसे अच्छा तरीका है स्थापित करने से बचें कोई विशिष्ट निर्भरता। अन्य उत्तरों या तो सभी निर्भरताओं को स्थापित करने से बचें, स्थापित होने के बाद निर्भरता अनइंस्टॉल करें, या संकुचित रूप से संकुल संपादन का सुझाव दें। - Neil
यह वही था जो मुझे चाहिए था! (स्थापित करने gnupg2 के बिना pinentry-gtk2 एक्स डीपीएस से बचने के लिए) - lapo
यह वास्तव में बहुत अच्छा है, हालांकि, मेरे मामले में apt-get "unmet निर्भरता" (जिसे मैंने इस विधि का उपयोग करके निर्दिष्ट किया है) के साथ पैकेज स्थापित करने से इंकार कर दिया है। विशेष रूप से एक 100 मेगाबाइट दस्तावेज़ पैकेज जो मुझे परवाह नहीं है। - Rolf
केवल वैकल्पिक निर्भरताओं के साथ काम करता है, आवश्यक लोगों के साथ नहीं। त्रुटि rmessage: Depends: xxx but it is not going to be installed। आप सभी वैकल्पिक पैकेजों को छोड़ सकते हैं apt-get install --no-install-recommends PACKAGE - koppor


पैकेज के साथ स्थापित करने के बाद --ignore-depends  विकल्प, जाओ और संपादित करें /var/lib/dpkg/status फ़ाइल, और जो भी निर्भरता आपको लगता है उसे हटा दें। बस बहुत सावधान रहें। एक प्रतिनिधि के क्रम में। आवश्यक होने के लिए, यह संभावना से अधिक है BE अपेक्षित


29
2018-05-11 21:33



अद्यतन करने के बाद /var/lib/dpkg/status स्थापना के साथ खत्म करना आवश्यक हो सकता है sudo apt-get -f install (पैकेज निर्दिष्ट करने की कोई आवश्यकता नहीं है)। - Zmicier Zaleznicenka
यहां भी पाया गया: superuser.com/a/815371/127024। - Johann


चूंकि आपने स्रोत से पोस्टफिक्स स्थापित किया है, इसलिए आपको "डमी" पैकेज इंस्टॉल करना होगा जो मेल-ट्रांसपोर्ट-एजेंट निर्भरता मेलक्स (या बीएसडी-मेलएक्स) को पूरा करेगा। डेबियन में "इक्विस" पैकेज ऐसे डमी पैकेज को बनाने के लिए मौजूद है जिसे आप डीपीकेजी को बताने के लिए इंस्टॉल कर सकते हैं "यह निर्भरता संतुष्ट है"

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


12
2018-03-23 22:40



यह उत्तर भी देखें जो एक ट्यूटोरियल से लिंक करता है (हालांकि यह अत्यधिक जटिल है) superuser.com/a/416560/128960। लघु संस्करण है: रन equivs-control <name>, सही निर्भरता प्रदान करने के लिए उत्पादित फ़ाइल को संपादित करें और एक अच्छा नाम रखें, फिर चलाएं equivs-build <name> और अंत में dpkg -i परिणामी .deb फ़ाइल। - Christian
आईएमएचओ यह वास्तव में सबसे अच्छा समाधान है। यहां अनुरोध किए गए सभी अन्य समाधान थोड़ा सा हैकिश हैं। इसे केवल एक बार किया जाना है और आप बाद में स्वयं संकलित सॉफ़्टवेयर के आधार पर किसी भी सॉफ्टवेयर को इंस्टॉल कर सकते हैं ... तो चलिए इस जवाब को ऊपर उठाएं! - rugk


मैं इस विकल्प को उबंटू 12.04 सर्वर पर ज़ेन चला रहा हूं। मेरे डोमेन में मैं -वर्तनीय कर्नेल का उपयोग करता हूं, और एपीटी ने लगातार हर कर्नेल पैकेज अपग्रेड के साथ ग्रब स्थापित करने का प्रयास किया। पी [yv] grub का उपयोग करते समय domub के अंदर ग्रब की आवश्यकता नहीं है।

मैं -nodeps विकल्प को भी प्राप्त करने के लिए देख रहा हूं, लेकिन यह काम नहीं करता है, इसलिए प्रत्येक कर्नेल अपग्रेड के बाद अनइंस्टॉलिंग / पुर्जिंग ग्राब * समाप्त हो गया।

आखिरकार, वास्तव में पढ़ना एक मैन पेज कभी-कभी मदद करता है - यह 12.04 पर एक समान एपीटी-प्राप्त विकल्प दिखाता है - नो-इंस्टाल-अनुशंसा करता है, जो वास्तव में इस मामले में काम करता है, क्योंकि ग्राब को पैकेज जानकारी में 'अनुशंसित' के रूप में सूचीबद्ध किया गया है (मुझे लगता है तो यह एक "असली" निर्भरता नहीं है?)।

मैं इसे यहां जोड़ रहा हूं क्योंकि मेरे मामले में यह एक समान समस्या हल करता है, और '--no-install-Recommends' के संकेत का अभी तक उल्लेख नहीं किया गया था।


7
2017-11-14 12:18





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

उदाहरण के लिए यदि मैं mypackage डाउनलोड करना चाहता हूं लेकिन यह libperl5.14 पर निर्भर करता है और मैं libperl5.14 इंस्टॉल नहीं करना चाहता क्योंकि मेरे पास एक अलग संस्करण है, मैं इस निर्भरता को निम्नानुसार अनदेखा कर सकता हूं:

apt-get download mypackage
dpkg -i --ignore-depends=libperl5.14 mypackage.deb

6
2017-08-21 11:16



बस उल्लेख करने के लिए कि यह आपको "टूटा" उपयुक्त छोड़ देगा। जब तक आप लापता निर्भरता को ठीक नहीं करते हैं, तब तक यह आपको अन्य पैकेज इंस्टॉल नहीं करने देगा। - drpexe


निर्भरताओं को मैन्युअल रूप से ट्विक करने का एक वैकल्पिक तरीका यह है:

apt-get download yourpackage
dpkg-deb -x yourpackage.deb PackageFolder
dpkg-deb --control yourpackage.deb PackageFolder/DEBIAN
vim PackageFolder/DEBIAN/control
dpkg -b PackageFolder yourpackage2.deb
apt-get install ./yourpackage2.deb

3
2017-07-05 04:14