एक विशिष्ट पैकेज को स्थापित करने के लिए कैसे मना किया जाए?


27

क्या मैं किसी विशिष्ट पैकेज को स्थापित करने के लिए उबंटू को कभी भी कॉन्फ़िगर नहीं कर सकता हूं, भले ही यह मेरे द्वारा स्थापित दूसरे पैकेज द्वारा आवश्यक हो?


आप इसकी निर्भरता के बिना एक पैकेज स्थापित नहीं कर सकते, जब तक आप अपने सिस्टम को तोड़ना नहीं चाहते।
22

2
@enzotib, सबसे पहले आप गलत हैं: पैकेज निर्भरता बेमानी हो सकती है। कई उदाहरण हैं, या आपने एक आवश्यक पैकेज के बराबर एक और तरीका स्थापित किया हो सकता है (उदाहरण के लिए मेरे पास ओपनजेडके -6 स्थापित है क्योंकि यह रिपॉज में सभी जावा अनुप्रयोगों द्वारा आवश्यक है, लेकिन मैं वास्तव में ओपनजेडके -6 का उपयोग नहीं करता हूं, मैं उदाहरण के लिए। Openjdk-7 या Oracle JDK 7 का उपयोग करने के लिए सब कुछ सेट करें)। और दूसरी बात - मैंने यह नहीं कहा कि मैं चाहता हूं कि आश्रित पैकेज स्थापित किया जाए - यह सिर्फ इस मामले में एक त्रुटि फेंक सकता है, मैं सिर्फ यह सुनिश्चित करना चाहता हूं कि एक विशेष पैकेज वैसे भी स्थापित नहीं है।
इवान

जवाबों:


28

जैसा कि डेबियन में हम उबंटू में संस्करण और स्थापना नियंत्रण के लिए एप्ट-पिनिंग का भी उपयोग कर सकते हैं ।

किसी दिए गए पैकेज की स्थापना को अवरुद्ध करने के लिए हम निम्नलिखित पंक्तियों को डाल सकते हैं /etc/apt/preferences

Package: <nameofpackage>
Pin: origin ""
Pin-Priority: -1

इस पिन के लिए एक नकारात्मक प्राथमिकता देने से हम <nameofpackage>अपने स्थानीय रिपॉजिटरी यानी आगे निर्दिष्ट मूल से नहीं की स्थापना को रोक देंगे । बेशक हम apt-pinning का उपयोग एक निश्चित पैकेज संस्करण या विशिष्ट मूल को पिन करने के लिए कर सकते हैं।

इससे पहले कि आप आगे बढ़ें यह apt_preferences से ऊपर दिए गए दस्तावेज़ और मैनपेज को पढ़ने के लिए दृढ़ता से अनुशंसित है क्योंकि इन फ़ाइलों में त्रुटियों को apt द्वारा जाँच नहीं की जाती है और यदि वे होती हैं तो आपके पैकेज प्रबंधन को तोड़ सकती हैं।

एक विकल्प के लिए, और दिए गए पैकेज के अद्यतन को रोकने के लिए देखें:


क्या आप जानते हैं कि यह Ubuntu 12.04 में काम कर सकता है? एक और सवाल यह है कि शायद यह काम नहीं करता है।
लुसियो

1
@ लुसियो: निश्चित - यह अभी भी काम करता है; सिर्फ 12.10 में काम करने के लिए यह परीक्षण किया।
21

3
इन Package:-लाइन में, आप रिक्त स्थान के साथ अलग-अलग कई संकुल को सूचीबद्ध कर सकते हैं, जैसे: पैकेज: मेटासिटी मेटासिटी-कॉमन लिबासिटी-प्राइवेट0 ए। (पैकेज जैसे पैटर्न की तरह लगता है: मेटासिटी * भी संभव है)
वोल्कर सिएगेल

5
Ubuntu 16.04 में Pin: origin ""मेरे लिए काम नहीं किया, लेकिन Pin: release *किया।
बारबाज़

3

डेबियन में आप एक पैकेज को ब्लॉक कर सकते हैं, और वह पैकेज अब और अपग्रेड नहीं करेगा

# echo name_of_package hold | dpkg --set-selections

लेकिन मुझे यकीन नहीं है कि आप मना कर सकते हैं


मैंने इसे Ubuntu 15.10 (विली) पर आज़माया और इसने पैकेज को अवरुद्ध नहीं किया; बस मुझे एक चेतावनी दीpackage not in database
ब्रेंट बाकला

2

मेरे पास एक पैकेज है जो वापस अंदर घुस रहा है और गिट को तोड़ रहा है

sudo apt-mark hold libgnutls-deb0-28

उस पैकेज को स्थापित होने से रोकना चाहिए

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