रेपो के नए संस्करण होने पर विशेष संस्करण स्थापित करना?


13

चलो एक मेटापैकेज है जो निम्नलिखित पैकेजों पर निर्भर करता है

Depends: A (=2),
 B (=2),
 C (=2)

'=' पर ध्यान दें - मैं इन विशेष संस्करणों को स्थापित करना चाहता हूं, सबसे हाल के लोगों को नहीं।

इसके अतिरिक्त:

B A (> = 1) पर निर्भर करता है

C B (> = 1) और A (> = 1) पर निर्भर करता है

यदि रिपॉजिटरी में ए, बी, सी के सबसे हाल के संस्करण 2 हैं तो यह काम करता है।

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

The following packages have unmet dependencies:
  my-meta-package: Depends: B (= 2) but 3 is to be installed
                   Depends: A (= 2) but 3 is to be installed

यदि मैं मैन्युअल रूप से ए और बी के संस्करण 2 स्थापित करता हूं, तो रूपक सही ढंग से स्थापित होता है, जो दृढ़ता से सुझाव देता है कि ए 3 या बी 3 पर कोई छिपी निर्भरता नहीं है। यह समस्या का हल नहीं है क्योंकि कई मशीनों पर स्वचालित रूप से मेटाफ़ेज स्थापित किया जाता है।

प्रश्न: क्या करने के लिए sudo apt-get install my-meta-package install इंस्टॉल संस्करण 2,2,2?

इसके अतिरिक्त, वहाँ एक तरह से मैं एक विस्तारित जानकारी प्राप्त कर सकता है कि वास्तव में ए के संस्करण 3 और बी के संस्करण 3 की आवश्यकता क्या है?


ओह, मैंने जवाब देने से पहले पूरा सवाल नहीं पढ़ा है। क्या आप सिर्फ रूपक को पुनः प्राप्त कर सकते हैं?
int_ua

2
@int_ua मुझे समझ नहीं आ रहा है कि मेटापैकेज क्या करना है।
tymtam

@belacqua - मैं आपके साथ हूं, लेकिन हमें एक ठोस उत्तर की आवश्यकता है जो कवर करता है कि क्या होता है जब
उलटियां

क्या आपके रूपक की नियंत्रण फ़ाइल में निर्भर संस्करण का स्पष्ट संस्करण शामिल नहीं है, जैसे कि (a=2), (b=2)?
अनवर

जवाबों:


11

आपको स्थापित करने के लिए विशेष संस्करणों का चयन करना होगा, और उन सभी को उसी समय स्थापित करना होगा जब आप मेटा-पैकेज स्थापित करते हैं।

sudo apt-get install meta-package package1=2 package2=2 package3=2

जैसे int_ua का उत्तर कहता है, आप इसके साथ रिवर्स निर्भरता पा सकते हैं:

apt-cache rdepends package

यदि आप उन पैकेजों ( उपलब्ध संस्करण, निर्भरता और बहुत अधिक ) के बारे में अधिक जानकारी जानना चाहते हैं , तो इसका उपयोग करें:

apt-cache show package

जब आप उन्हें स्थापित करना समाप्त कर लेते हैं, और सिस्टम अपग्रेड करते समय उन्हें उन संस्करणों पर रखना चाहते हैं, तो आपको aac -pinning का उपयोग करना होगा जैसा कि belacqua द्वारा सुझाया गया है

एपीटी पिनिंग

APT पिनिंग सुविधा व्यवस्थापकों को APT को संकुल के विशेष संस्करणों को चुनने के लिए बाध्य करने की अनुमति देती है जो विभिन्न रिपॉजिटरी से विभिन्न संस्करणों में उपलब्ध हो सकते हैं। यह व्यवस्थापकों को यह सुनिश्चित करने की अनुमति देता है कि संकुल उन संस्करणों पर अपग्रेड नहीं है जो सिस्टम पर अन्य संकुल के साथ संघर्ष कर सकते हैं, या जिन्हें अवांछित परिवर्तनों के लिए पर्याप्त रूप से परीक्षण नहीं किया गया है। ऐसा करने के लिए, APT की प्राथमिकताओं फ़ाइल (/ etc / apt / वरीयताओं) में पिन को संशोधित किया जाना चाहिए।


मेरा मानना ​​है कि यह सही उत्तर है, = और फिर पैकेज का नाम संस्करण के साथ
LnxSlck

1
मैं टाइमेक का सहयोगी हूं और यह वास्तव में समस्या को हल करता है। बहुत बुरा हमें ऐसा करने के लिए इंजीनियर को उल्टा करना पड़ता है। कुछ रचनात्मक पायथन क्रम में है। धन्यवाद उत्तर के लिए ढेर।
इगोर ज़ेवाका

1
मुझे आश्चर्य है कि क्या समय बीतने के बाद कोई बेहतर समाधान दिखाई दिया?
21

1

आप पहले निर्भरता स्थापित करने का प्रयास कर सकते हैं

sudo apt-get install package=2 जहां 2 संस्करण है

आप पता लगा सकते हैं कि पैकेज किस पैकेज पर निर्भर हैं

apt-cache rdepends package


1
rdepends संस्करणों के बारे में एक विवरण जानकारी प्रदान नहीं करता है, है ना?
tymtam

2
पहले निर्भरता स्थापित करने से रूपक की अवहेलना होगी। यह एक समाधान है, लेकिन वह नहीं जिसकी मुझे तलाश है।
tymtam

1
ध्यान दें कि इसके लिए रिपॉजिटरी को काम करने के लिए आपके द्वारा निर्दिष्ट संस्करण का उपलब्ध संस्करण होना चाहिए, यदि वे ऐसा नहीं करते हैं तो यह त्रुटि हो जाएगी।
थॉमस वार्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.