डेबियन जेसी बहुत सारे बैकपोर्ट स्थापित कर रही है


9

मेरे पास डेबियन जेसी है और उसने इन सभी निर्देशों के अनुसार बैकपोर्ट जोड़े हैं :

echo "deb http://http.debian.net/debian jessie-backports main contrib non-free" | sudo tee /etc/apt/sources.list.d/backports.list

(मैंने एक नया कर्नेल प्राप्त करने के लिए ऐसा किया, जैसा कि मुझे ज़रूरत थी, अपने लैपटॉप में कुछ हार्डवेयर के लिए।)

निर्देश कहते हैं कि कुछ भी नहीं होना चाहिए, जब तक कि मैं स्पष्ट रूप से एक बैकपोर्ट पैकेज के लिए नहीं कहता। उदा apt-get -t jessie-backports install "package"

हालाँकि अब मुझे लगता है कि मेरे सिस्टम का पूरा भार बैकपोर्स से है, और एक पैकेज अन-इंस्टॉल किया गया है, क्योंकि यह एक सटीक संस्करण पर निर्भर करता है, जो कि बैक-पोर्ट्स में अपडेट किया गया था।

तो मेरा सवाल:

  • मैं इसे सबसे पहले कैसे रोकूं, ताकि कोई और बैकपोर्ट स्थापित न हो?
  • मैं मौजूदा बैकपोर्ट कैसे निकालूं?

नोट: इसे उन स्थापित पैकेजों की एक सूची मिलती है, जो बैकपोर्ट से हैं (और प्रारूप में जिसे पारित किया जा सकता है apt-get install, किसी कारण sudo apt-get installपाइपलाइन के अंत में प्रतिध्वनि के स्थान पर काम नहीं करता है):

cat /var/log/dpkg.log.1 |grep -v linux | grep -v xserver | grep -v firmware | grep "status installed" | grep bpo | cut -d" " -f 5 | cut -d: -f 1 | xargs -i{} -n1 bash -c "dpkg-query -s {} >/dev/null && echo {}" | sed -r -e "s~.*~\0/jessie~" | xargs echo

सावधान:

कुछ पैकेज स्वचालित रूप से इंस्टॉल हो जाते हैं, इसलिए यदि आप उन सभी को फिर से इंस्टॉल करते हैं, तो इन स्वचालित रूप से स्थापित पैकेजों को मैन्युअल रूप से स्थापित के रूप में चिह्नित किया जाएगा। इस प्रकार जब जरूरत न हो तो हटाया नहीं।

किसी को भी कोई विचार है कि इसे कैसे हल किया जाए?

जवाबों:


10
  1. निम्न को या तो /etc/apt/apt.confफ़ाइल में जोड़ने का प्रयास करें /etc/apt/apt.conf.d:

    APT::Default-Release "jessie";

  2. मौजूदा बैकपोर्ट को हटाने के लिए, आपको एक सूची प्राप्त करने की आवश्यकता होगी कि कौन से इंस्टॉल किए गए थे, और उन्होंने किस संस्करण को प्रतिस्थापित किया। सौभाग्य से, यह जानकारी बहुत आसानी से निकाली जा सकती है/var/log/dpkg.log

उदा grep ' upgrade ' /var/log/dpkg.logआपको निम्न की तरह कई लाइनें देगा:

2016-02-15 11:06:32 upgrade python-numpy:amd64 1:1.11.0~b2-1 1:1.11.0~b3-1

यह कहता है कि 15 फरवरी को पूर्वाह्न 11:06 पर, मैंने संस्करण 1: 1.11.0 ~ b2-1 से संस्करण 1: 1.11.0 ~ b3-1 में अजगर-सुन्न को उन्नत किया

अगर मैं पिछले संस्करण को डाउनग्रेड करना चाहता था, तो मैं चलाऊंगा:

apt-get install python-numpy=1:1.11.0~b2-1

नोट: इस विशेष मामले में, यह शायद काम नहीं करेगा क्योंकि मैं डेबियन sidउर्फ को चलाता हूं unstableइसलिए पुराने संस्करण संभवतः अब डिबेटरी में उपलब्ध नहीं है। यदि आप चला रहे हैं jessieऔर एक पैकेज के jessie संस्करण को jessie-backports संस्करण में डाउनग्रेड के रूप में पुनः स्थापित कर रहे हैं, तो यह अपेक्षित रूप से काम करेगा।

इसी प्रकार, यदि एक पैकेज निकाल दिया गया तो आप इसे और के लिए grepping द्वारा अपने सटीक संस्करण पा सकते हैं removeमें /var/log/dpkg.log


कई पैकेजों के थोक डाउनग्रेडिंग को मानक उपकरण जैसे awkऔर का उपयोग करके बड़े पैमाने पर स्वचालित रूप से स्वचालित किया जा सकता है grep। उदाहरण के लिए, यदि आप जानते हैं कि आपके द्वारा स्थापित किए गए jessie-backports का उन्नयन एक विशेष दिन (उदाहरण 2016-02-15) पर किया गया था, तो आप पिछले संस्करणों को कुछ इस तरह से डाउनग्रेड कर सकते हैं:

 apt-get -d -u install $(awk '/2016-02-15 ..:..:.. upgrade / {print $4 "=" $5}'
    /var/log/dpkg.log)

(लाइन-फीड और इंडेंटेशन क्षैतिज स्क्रॉल-बार से बचने के लिए जोड़ा गया)

-d( --download-only) विकल्प के उपयोग पर ध्यान दें । कमांड को फिर से चलाएं और आपके द्वारा सत्यापित किए जाने के बाद उस विकल्प को हटा दें apt-get install, जो आप चाहते हैं, और केवल वही करें जो आप चाहते हैं।

मैं awkपहले से ही उस कमांड के केवल एक हिस्से को चलाने की सिफारिश करूंगा ताकि आप वास्तव में एक सूची देख सकें कि कौन से पैकेज और संस्करण फिर से स्थापित होंगे।


1
'बड़े पैमाने पर स्वचालित' से मेरा मतलब है कि जबकि यह ज्यादातर समस्याओं के बिना काम करेगा, यह हमेशा पूरी तरह से नहीं चलेगा (इसमें शामिल सटीक पैकेजों पर निर्भर करता है और उनकी निर्भरता / संघर्ष / आदि लाइनों की सिफारिश करता है)। वहाँ एक या दो संकुल आप मैन्युअल रूप से स्थापना करने या हटाने के साथ या तो करने के लिए है हो सकता है apt-getया dpkg। जब तक आप घबराते नहीं हैं, चिंता की कोई बात नहीं है। पैकेजिंग सिस्टम के साथ ज्यादातर समस्याएं लोगों को बिना सोचे समझे घबराने और प्रतिक्रिया देने के कारण होती हैं .... इसे धीरे से लें और कार्य करने से पहले सोचें।
कैस

क्या उसे @cas को बैकपार्ट करने के लिए नए कर्नेल पैकेज को पिन नहीं करना चाहिए?
रुई एफ रिबेरो

यह चोट नहीं करेगा, लेकिन यह आवश्यक नहीं है, और पिनिंग केवल Apt :: Default-release को सेट करने की तुलना में थोड़ा अधिक जटिल और कठिन है। apt-getजब तक आप स्पष्ट रूप से इसे नहीं बताएंगे, तब तक पहले से स्थापित पैकेज को डाउनग्रेड नहीं करेंगे। और @richard ने कहा कि वह jessieडिफ़ॉल्ट रूप से पैकेजों को स्थापित करना चाहता था जब तक कि वह स्पष्ट रूप से निर्दिष्ट नहीं करता jessie-backports- मैं मानता हूं कि इच्छा कर्नेल पैकेजों पर भी लागू होती है।
कैस

उन्होंने कहा कि उन्होंने एक नए कर्नेल के लिए बैकपार्ट को शामिल किया, शायद मेरी तरह, जेसी में कर्नेल 4 करने के लिए।
रुई एफ रिबेरो

1
मुझे लगता है कि जो लोग stable+ का उपयोग करते हैं वे stable-backportsशायद मेरे द्वारा किए जाने वाले पिनिंग के बारे में बहुत अधिक ध्यान रखते हैं और इसके बारे में अधिक जानने के प्रयास में हैं। मैं unstableअपने सिस्टम को नवीनतम रूप से नियमित रूप से (कभी-कभी एक्स्ट्रा कलाकार के साथ experimental) ले जाता हूं , ताकि पिनिंग की बहुत कम आवश्यकता हो। केवल एक बार जब मैंने gnome3 के लिए संक्रमण के दौरान वर्षों पहले इसका उपयोग किया था, जब मैं नहीं चाहता था कि मेरे gnome2 संकुल को प्रतिस्थापित किया जाए - मुझे याद है कि पिन करने के लिए संकुल की लगातार बदलती सूची को बनाए रखना एक PITA था। मैंने तब से xfce और purged gnome पर स्विच किया है।
कैस

1

ऐसा लगता है कि आपने ठीक से सेटअप नहीं किया है /etc/apt/preferences। निम्नलिखित कुछ भी jessie-backports से स्थापित होने से रोकता है जो यह बताता है कि इसे स्थापित करने के लिए क्या है (जैसे कि backported कर्नेल)। आपके पास अभी भी समस्याएँ हैं यदि निर्दिष्ट पैकेजों को सूचीबद्ध नहीं होने वाले बैकपोर्ट से अन्य पैकेजों की आवश्यकता होती है।

Package: *
Pin: release n=jessie-backports
Pin-Priority: -1

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

# this will allow you to not have to use '-t jessie-backports install'
Package: linux-doc linux-headers-amd64 linux-image-amd64 linux-source
Pin: release n=jessie-backports
Pin-Priority: 1000

यदि आप स्थापित किए गए बैकपैक पैकेजों की एक सूची प्राप्त करना चाहते हैं, तो आप निम्नलिखित स्क्रिप्ट (या इसके कुछ हिस्सों) का उपयोग कर सकते हैं:

chmod a+x name_of_script ./name_of_script > name_of_output_file

#!/bin/bash
RELEASES="jessie-backports"

echo  "Searching for installed packages from" >&2
echo $RELEASES | sed s/^/" * "/ | sed s/\|/"\n * "/g >&2

for package in $(dpkg -l | grep -i ^ii | awk '{print $2}')
do
check=$( apt-cache policy $package 2>&1 | grep -i -A 1 "[*]" | egrep $RELEASES )
if [ "$check" == "" ] ; then
 echo -ne "." >&2
else
 echo -ne "#" >&2
 echo
 apt-cache policy $package
fi
done
echo >&2
echo

यदि आप उपरोक्त स्क्रिप्ट द्वारा सूचीबद्ध किसी भी पैकेज को डाउनग्रेड करना चाहते हैं, तो निम्नलिखित को संलग्न करें /etc/apt/preferences:

Package: package1 package2 package3
Pin: release n=jessie
Pin-Priority: 1000

फिर भागो:

sudo apt-get upgrade

1

/ Etc / apt / वरीयताओं और /etc/apt/preferences.d/ में उपयुक्त के लिए अपना पिनिंग कॉन्फ़िगरेशन जांचें

क्या यह संभव है कि आपने कस्टम पिनिंग कॉन्फ़िगरेशन जोड़ा हो और इसके बारे में भूल गए हों? यही एकमात्र तरीका है जिसके बारे में मैं सोच सकता हूँ कि यह बैकपार्ट्स को पसंद करेगा क्योंकि यह आपको लगता है। अन्यथा, यह सिर्फ निर्भरता को खींच रहा है - जो आपके द्वारा निर्दिष्ट पैकेजों की आवश्यकता है।

आधिकारिक बैकपोर्ट पहले से ही कम हैं (100) बैकपीस पैकेज में जेसी की तुलना में बैकपोर्ट रेपो में रिलीज़ फ़ाइल। आप किसी भी उपयुक्त विन्यास को करने के लिए नहीं करना चाहिए।

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