मैं डेबियन परीक्षण या स्थिर पर अस्थिर से एकल पैकेज कैसे स्थापित कर सकता हूं?


41

मैं अपने व्हीजी सिस्टम पर डेबियन जेसी से "सब कुछ और किचन सिंक" को जेसी संस्करणों में अपग्रेड किए बिना सिंगल पैकेज (और इसकी निर्भरता के लिए, लेकिन केवल वो जो व्हीजे में संतोषजनक नहीं हैं) को स्थापित करना चाहता हूं। विशेष रूप से, मैं kpcli को स्थापित करना चाहूंगा , जो जेसी में उपलब्ध है, लेकिन व्हीजी में नहीं।

मुझे जो कुछ भी मिला है वह बताता है कि मुझे अपने स्रोतों की सूची में जेसी रिपॉजिटरी को जोड़ना चाहिए, सब कुछ मट्ठे पर रखने के लिए पिनिंग सेट करना चाहिए और केवल एक पैकेज को जेसी से लेना चाहिए, और यह बहुत अधिक जगह पर गिर जाएगा। हालाँकि, यह मेरे लिए जगह में नहीं गिर रहा है। यदि मैं निम्नलिखित सामग्री के साथ /etc/apt.d/sources.list.d/jessie.list बनाता हूं:

deb ftp://ftp.debian.org/debian/ jessie main
deb-src ftp://ftp.debian.org/debian/ jessie main

और फिर /etc/apt/preferences.d/jessie बनाएं:

Package: *
Pin: release a=wheezy
Pin-Priority: 1001

Package: kpcli
Pin: release a=jessie
Pin-Priority: 450

और apt-get -u updateउसके बाद चला apt-get -u install kpcli/jessie, तो मुझे उम्मीद है कि kpcli में खींचने के लिए apt-get हो सकता है और शायद Jessie से दूसरे पैकेजों का एक छोटा सा हिस्सा, और मेरे स्थापित सिस्टम के शेष हिस्से को अछूता छोड़ दें। (मेरा सिस्टम व्हीजी की स्थापना के लिए पूरी तरह से अद्यतित है।) वैकल्पिक रूप से, अगर मुझे पिन प्राथमिकता बहुत कम मिलती है, तो मुझे उम्मीद है कि यह कुछ भी नहीं करेगा। बल्कि, मेरे सिस्टम पर, apt-get कई सौ पैकेजों को अपग्रेड करना चाहता है।

क्या, वास्तव में, मेरे Wheezy सिस्टम के शेष को छोड़े हुए एक जेसी संस्करण के सिर्फ एक सिंगल पैकेज को स्थापित करने की आवश्यकता है?

ध्यान दें कि इस विशेष मामले में, सॉफ्टवेयर वास्तव में पर्ल में लिखा गया है, इसलिए बाइनरी या उस तरह की किसी भी चीज का कोई संकलन नहीं है; हालाँकि, वहाँ पर्ल मॉड्यूल निर्भरता का एक मुट्ठी भर है। इसलिए, एक संभावित विकल्प .deb स्थापित करना होगा (मैन्युअल रूप से डाउनलोड किया गया) जो केवल कुछ का उपयोग करके (1) एक एकल, स्थानीय .deb संग्रह को निर्दिष्ट करने की अनुमति देता है, जैसे dpkg -i, और (2) एक बुद्धिमान तरीके से निर्भरता को संभालता है। , जो सादे dpkg -iनहीं है। हालाँकि, सभी खोजों के लिए मैंने कई अवसरों पर किया है और यह कैसे करना है के लिए एक सरल-से-अनुसरण गाइड के साथ आने में विफल रहा, एक सामान्य समाधान (एक जो बाइनरी, संकलित पैकेजों के लिए भी काम करता है) बहुत अच्छा होगा ।


4
इसे संभालने का सामान्य तरीका बैकपोर्टिंग द्वारा है - पैकेज का पुनर्निर्माण डेबियन स्रोतों से व्हीजी पर करना। आप जिस पैकेज का उपयोग कर रहे हैं वह पर्ल प्रतीत होता है (या कम से कम इस पर निर्भर करता है), इसलिए शायद बैकपोर्ट करना मुश्किल नहीं है। यदि आप अधिक विवरण चाहते हैं, तो कृपया कहें। यदि आप वास्तव में इसकी आवश्यकता है तो मैं शायद एक पूर्वाभ्यास प्रदान कर सकता हूं।
फहीम मीठा

जवाबों:


15

प्रत्येक प्रविष्टि (स्थिर, परीक्षण, अस्थिर) के लिए आपके पास पिन-प्राथमिकता 500 है। आपको पिन> 1000 का उपयोग नहीं करना चाहिए। मैं केवल 1001 का उपयोग करता हूं जब मैं कुछ डाउनग्रेड करना चाहता हूं। मेरे पास /etc/apt/sources.listनिम्न /etc/apt/preferencesफ़ाइल में परीक्षण + साइड + प्रायोगिक प्रविष्टियाँ हैं :

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=experimental
Pin-Priority: 130

मान 500 अस्थिर के लिए डिफ़ॉल्ट है। तो, आइक्यूसेल की जांच करने की कोशिश करते हैं:

# apt-cache policy iceweasel
iceweasel:
  Installed: (none)
  Candidate: 17.0.10esr-1~deb7u1
  Version table:
     26.0-1 0
        130 http://ftp.pl.debian.org/debian/ experimental/main amd64 Packages
     24.2.0esr-1 0
        500 http://ftp.pl.debian.org/debian/ sid/main amd64 Packages
     17.0.10esr-1~deb7u1 0
        900 http://ftp.pl.debian.org/debian/ testing/main amd64 Packages

इसलिए, अगर मैंने iceweasel को स्थापित करने की कोशिश की, तो इसे परीक्षण शाखा से डाउनलोड किया जाएगा क्योंकि इसमें सर्वोच्च प्राथमिकता है।

प्राथमिकताओं को बदलने की कोशिश करें:

Package: *
Pin: release a=wheezy
Pin-Priority: 900

Package: kpcli
Pin: release a=jessie
Pin-Priority: 910

sudo apt-get -u install kpcli/jessieअभी भी मुझे 316 upgraded, 137 newly installed, 251 to remove and 1688 not upgraded.आपकी सुझाई गई प्राथमिकताओं के साथ देता है । अगर मैं apt-cache policy perl(संकुल में से एक को अपग्रेड करना चाहता हूँ) यह ५.१-5.१-५ को प्राथमिकता ५०० पर एक उम्मीदवार के रूप में दिखाता है, और ५.१४.२-२१ + डिबेट .2११ भी प्राथमिकता ५०० पर स्थापित किया है। यह लगभग किसी भी कारण से, जैसा दिखता है, उपयुक्त प्राथमिकताओं को नहीं उठा रहा है ...
एक CVn

ठीक है, मुझे कुछ मिला। ऐसा लगता है कि चाल का उपयोग करना था Package: kpcli*(बजाय Package: kpcli) और फिर Package: * Pin: release o=Debian Pin-Priority: -10अंत में। फिर निश्चित रूप से मुश्किल निर्भरताएं हैं जो पर्ल के संस्करणों के लिए अग्रणी हैं जो केवल जेसी में उपलब्ध हैं, जो बदले में एक नए libc6 की आवश्यकता है! मैं उस मार्ग पर जाने के लिए नहीं हूँ, ईमानदारी से, लेकिन यह कम से कम मुझे वह परिणाम मिला जो मैं उसके बाद था। धन्यवाद!
एक CVn

25

वहाँ वास्तव में एक तरीका है इसे बिल्कुल भी उपयोग किए बिना / प्राथमिकताओं के बिना। इसके बजाय, आप निर्दिष्ट कर सकते हैं कि आप किस डिफ़ॉल्ट रिलीज़ से पैकेज स्थापित करेंगे, जिसे तब तक उपयोग किया जाएगा जब तक कि लक्ष्य रिलीज़ पैरामीटर का उपयोग करके निर्दिष्ट नहीं किया जाता है। यह उसी तरह से काम करता है यदि आप केवल उदाहरण के लिए बैकपैक से चयनित पैकेज को स्थापित करना चाहते हैं।

मैं इसे स्ट्रेच से जेसी में पैकेज स्थापित करने के लिए दिखाऊंगा, क्योंकि वे मौजूदा स्थिर / परीक्षण हैं, लेकिन यह व्हीजी में जेसी पैकेज को स्थापित करने के लिए उसी तरह काम करता है जैसे यह मूल रूप से पूछा गया था।

सबसे पहले, भंडार के रूप में खिंचाव जोड़ें, उदाहरण के लिए /etc/apt/sources.list.d/stretch.list:

deb http://ftp.debian.org/debian stretch main

फिर, डिफ़ॉल्ट रिलीज़ को सेट करने के लिए, /etc/apt/apt.conf.d/default-releaseजिसमें एक फ़ाइल शामिल है:

APT::Default-Release "jessie";

(व्हीजी में, मुझे लगता है apt.conf.dकि अस्तित्व में नहीं था और आपको उस स्निपेट को डालने की आवश्यकता होगी /etc/apt/apt.conf)।

फिर, परीक्षण से पैकेज स्थापित करना aptitude -t stretch install kpcliबिना प्राथमिकता के चिंता करने की आवश्यकता के बिना सरल है ।

नोट: @amc टिप्पणी है कि अगर आप का उपयोग में बताया aptबजाय aptitude, आप का उपयोग करने के लिए है "stable"के रूप में Default-Releaseके बजाय "jessie"। धन्यवाद! (बेशक, आप aptitudeउस सेटिंग के साथ भी उपयोग कर सकते हैं ।)


... यह ऐसा करने के लिए वास्तव में चालाक तरीका है। यह आधिकारिक रूप से क्यों स्वीकार नहीं किया जाता है ??
जेम्स दिवालीवूड

1
मुझे मिलता हैThe value 'stretch' is invalid for APT::Default-Release as such a release is not available in the sources
स्टीवन पेनी

1
आपको डिफ़ॉल्ट रिलीज़ के लिए "जेसी" / "स्ट्रेच" के बजाय "स्थिर" / "परीक्षण" / आदि का उपयोग करने की आवश्यकता है और
18-30 में

6

Pin: release a=wheezyहोना चाहिए Pin: release n=wheezy, शायद।

से आदमी पेज :

निम्नलिखित रिकॉर्ड किसी भी वितरण से संबंधित सभी पैकेज संस्करणों के लिए एक उच्च प्राथमिकता प्रदान करता है जिसका कोडनेम "जेसी" है।

           Package: *
           Pin: release n=jessie
           Pin-Priority: 900

तो यह सही है!


3
यह jessy से सभी संकुल स्थापित नहीं करेगा ?
रूबॉन्77 7
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.