कैसे apt-get के माध्यम से एक पैकेज को डाउनग्रेड करने के लिए?


309

मैं किसी पुराने संस्करण के पैकेज को कैसे डाउनग्रेड कर सकता हूं apt-get?

अन्य उपकरण भी स्वीकार्य हैं लेकिन apt-getपसंद किए जाते हैं।

जवाबों:


306

यदि आपके पास संस्करण संख्या, या लक्ष्य रिलीज़ है, तो apt-getकिसी विशेष संस्करण या लक्ष्य रिलीज़ को चुनने का समर्थन करता है। अधिक विवरण apt-get के मैनुअल पेज पर पाए जा सकते हैं । इसे टर्मिनल से टाइप करके भी एक्सेस किया जा सकता हैman apt-get

sudo apt-get install <package-name>=<package-version-number> या

sudo apt-get -t=<target release> install <package-name>

चलाने की आज्ञा है। इसका उपयोग किसी विशिष्ट संस्करण के पैकेज को डाउन-ग्रेड करने के लिए किया जा सकता है।

टिप्पणी में यह मददगार बताया गया है

  • apt-cache showpkg <package-name>सभी उपलब्ध संस्करणों को सूचीबद्ध करता है। (एच / टी स्पार्कॉक )
  • apt-mark hold <package-name> वर्तमान संस्करण में पैकेज को "पकड़" रखता है, स्वचालित उन्नयन को रोकता है। (एच / टी लुइस डी सूसा )

57
इसके अलावा, apt-cache showpkg <package-name>उपलब्ध संस्करणों को सूचीबद्ध करने के लिए उपयोग करें।
स्पार्कवॉक

16
और बाद में आप चलाने की इच्छा भी कर सकते हैं: apt-mark hold <package-name>स्वचालित उन्नयन से बचने के लिए।
लुइस डी सोसा

4
मैंने पाया कि aptitudeनिर्भरता को बेहतर से कम कर दिया apt-get
krispy

5
apt-cache policy <package-name>केवल स्थापित और उपलब्ध संस्करणों को दिखाता है
माइकल लैंटन

18
और क्या होगा यदि showpkgआप उस संस्करण को नहीं दिखाते हैं जिसमें आप रुचि रखते हैं?
डिमांगोलेम

103

उपयोग

apt-get install «pkg»=«version»

या

sudo aptitude install «pkg»=«version»

जहां «pkg» पैकेज का नाम है, और «संस्करण» संस्करण संख्या है।


3
जब मैं apt-get install pkg=versionapt-get ऑफर सभी स्थापित पैकेजों में से लगभग आधे को हटा देता हूं जो निश्चित रूप से नहीं जो मैं करना चाहता हूं
Dfr

जैसा कि (अन्यथा समरूप) उत्तर में अधिक मतों के साथ बताया गया है, यह उन प्रमुख मामलों में से एक है, जहां की aptitudeतुलना में कहीं अधिक बेहतर काम होता है apt-get। मेरे मामले में apt-getसपाट रूप से डाउनग्रेड रिक्वेस्ट से इनकार कर दिया, जबकि aptitudeबताया कि अन्य pkgs थे जो नए संस्करण पर निर्भर थे (और उसी समय डाउनग्रेडिंग की आवश्यकता थी)।
sxc731

28

यदि आपके पास ppa का उपयोग करके सॉफ़्टवेयर अपग्रेड किया गया है, तो आप इसका उपयोग करके इसे डाउनग्रेड कर सकते हैं ppa-purge। पहले आपको ppa-purgeइस कोड का उपयोग करके इंस्टॉल करना होगा:

sudo apt-get install पीपा-पर्ज

तब आप कमांड का उपयोग करके ppa को हटा सकते हैं

sudo ppa-purge ppa: उपयोगकर्ता / ppa-name

यह स्वचालित रूप से सॉफ्टवेयर को उसके मूल संस्करण में डाउनग्रेड कर देगा जिसे उबंटू के साथ भेज दिया गया है।


1
पैकेज की निर्भरता के मामले में यह समाधान सिर्फ बेजोड़ है, जिसे भी डाउनग्रेड करना पड़ता है। धन्यवाद!
और

1
हाँ, यह वह समाधान है जो कुबंटु-पीपा / बैकपोर्ट से केडीई / प्लाज्मा डेस्कटॉप को अपग्रेड करने के लिए मेरे लिए सबसे अच्छा काम करता है - एक चीज जो मैंने देखी है वह है पीपीए की .list फ़ाइल में डिबेट टिप्पणी नहीं होनी चाहिए, ताकि ppa-purge सभी फाइलों को संदर्भित कर सके। कि पर्स के लिए निकालने की जरूरत है। मुझे यह पता लगाने में एक मिनट लगा कि यह पहले काम क्यों नहीं कर रहा था। आशा है कि अन्य लोगों की मदद करता है!
averyFreeman

10

डाउनग्रेड करने के लिए आपको एक कमांड की तरह करना होगा

 sudo apt-get install pkg_name=version

अपने टर्मिनल में।

versionपिछले संस्करण को रखने के स्थान पर आप डाउनग्रेड करना चाहते हैं।


यह कम से कम लिनक्स-जेनेरिक के लिए काम नहीं करता है जो पैकेजों पर निर्भर करता है जिन्हें डाउनग्रेड भी किया जाना चाहिए। मुझे paste.ubuntu.com/p/NWSmf2ZwTy
mymedia

9

मेरी राय में, आपको पहले पैकेज को अनइंस्टॉल या शुद्ध करना चाहिए, जैसे:

sudo apt-get remove <package>

या

sudo apt-get purge <package>

फिर, आप उस संस्करण को डाउनलोड कर सकते हैं जिसे आप इंस्टॉल करना चाहते हैं और इसे एक फ़ोल्डर में रखें, abc.debडाउनलोड में कहें । टर्मिनल खोलें, cdकमांड का उपयोग करके फ़ोल्डर में जाएं और पिछले संस्करण का उपयोग करके इंस्टॉल करें dpkg:

sudo dpkg -i abc.deb

या फिर, एक छोटी सी उपयोगिता है जिसे ppa-purgeपीपीए के माध्यम से अद्यतन पैकेज को डाउनग्रेड करने का मतलब है।

इस धागे को देखें: http://www.webupd8.org/2009/12/remove-ppa-repositories-via-command.html


3
पैकेज हटाने से कई आश्रितों को हटाया जा सकता है, जिसके परिणामस्वरूप अनुपयोगी प्रणाली हो सकती है। ppapurge हालांकि दिलचस्प लगता है।
टाइप करें

12
क्या आप बता सकते हैं कि आप क्यों मानते हैं कि हमें पुराने संस्करणों को स्थापित करने से पहले पैकेज (एक अलग कदम के रूप में) की स्थापना रद्द करनी चाहिए?
एलियाह कगन


1
@temoto कि लिंक डाउनग्रेड रिलीज के लिए है unstable-> testing-> stableव्यक्तिगत पैकेज को डाउनग्रेड करने के लिए नहीं।
ब्रियम

0

यह प्रश्न पुराना है, लेकिन Google ने मुझे यहां तक ​​पहुंचाया और मुझे साधारण आत्माभिव्यक्ति नहीं मिली, जिसे पुराने रिलीज के लिए संकुल के डाउनग्रेड करते समय मैनुअल संस्करण को पारित करने की आवश्यकता नहीं होती है।

तो हो सकता है कि किसी को भी जरूरत है कि उपयोगी मेरे समाधान भी मिल जाएगा।

एक उपकरण है जिसे बुलाया apt-show-versionsसंस्करण स्थापित करता है।

आप ठीक-ट्यूनिंग रेगेक्स द्वारा सभी आवश्यक पैकेजों को आसानी से डाउनग्रेड कर सकते हैं लेकिन यहां यह है:

$ sudo apt-get install $(apt-show-versions | grep -P 'newer than version in archive' | awk -F: '{print $1"/jessie"}')

इसके बजाय jessieआप अपनी जरूरतों के आधार पर buster/ xenial/ आदि का उपयोग कर सकते हैं।


या स्वचालित रूप से अप-टू-डेट स्थापित रिलीज के लिए डाउनग्रेड sudo apt-get install -V $(apt-show-versions | grep -F 'newer than version in archive' | awk -F: '{print $1"/'$(lsb_release -cs)'"}'):। मैं यहां के -Fलिए उपयोग करना पसंद करता हूं grep
जर्नो

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