समस्याओं को ठीक करने में असमर्थ, आपने टूटे हुए पैकेजों को पकड़ रखा है


216

10.04 से 12.04 तक अपग्रेड करने के बाद मैं विभिन्न पैकेजों को स्थापित करने की कोशिश कर रहा हूं। उदाहरण के लिए ia32-libs और स्काइप (4.0)।

जब इन्हें स्थापित करने की कोशिश की जा रही है, तो मुझे 'समस्याओं को ठीक करने में असमर्थ, आपके पास टूटे हुए पैकेज' त्रुटि संदेश है।

आदेशों का उत्पादन:

sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

इसे चलाने के बाद:

sudo dpkg --configure -a
foo@foo:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

3
यह मदद कर सकता है यदि आपने हमें वह कमांड दिखाया जो आप वास्तव में (जैसे sudo apt-get install ia32-libs) और उस कमांड से आउटपुट के रूप में देख रहे हैं । इसके अलावा, क्या sudo apt-get dist-upgradeकोई अद्यतन उपलब्ध है?
1

3
मुझे नहीं पता कि आपके प्रश्न में क्या गलत है, मुझे कोई वास्तविक त्रुटि नहीं दिख रही है, और न ही आप अपने शीर्षक में वर्णन करते हैं।
ब्रिअम


जवाबों:


237

वह विशेष त्रुटि संदेश इंगित कर सकता है कि आपने पैकेज बनाए हैं, लेकिन यह एक अलग समस्या का संकेत भी हो सकता है।

आप के साथ वास्तविक आयोजित संकुल की एक सूची प्राप्त कर सकते हैं :

dpkg --get-selections | grep hold

यदि कोई नहीं है, या कोई भी संबंधित नहीं दिखता है, तो यह शायद कुछ और है। त्रुटि संदेश मिलने पर आप जिस कमांड की कोशिश कर रहे थे, उसके आउटपुट को ध्यान से देखें, क्योंकि त्रुटि संदेश से हटकर, उस कमांड से पूर्ण आउटपुट में अन्य सुराग हो सकते हैं।

अपने पैकेज को स्थापित करने का प्रयास करने के लिए समस्या निवारण का एक और तरीका उपयुक्तता के बजाय योग्यता का उपयोग करना हो सकता है:

sudo aptitude install <packagename>

एप्टीट्यूड कम आसानी से छोड़ देगा, और उन समाधानों को खोजने का प्रयास करेगा जिनमें अन्य पैकेजों को संशोधित करना शामिल हो सकता है। यह आपको समस्या और इसे ठीक करने के विकल्पों के बारे में अधिक जानकारी दे सकता है।

कभी-कभी अभिवृत्ति आपके अनुरोध को पूरा करने के लिए बड़ी संख्या में पैकेजों को हटाने या डाउनग्रेड करने के लिए उत्सुक होगी, इस मामले में -fअपनी प्राथमिकताओं को बदलने के साथ पुन: प्रयास करना और उन समाधानों के साथ आने में मदद करता है, जिसमें कम पैकेजों को हटाने / डाउनग्रेड करना शामिल है, भले ही इसका मतलब है कि आप सभी से अनुरोध न करें। आगे जा सकते हैं:

sudo aptitude -f install <packagename>

6
किसी भी विचार कैसे एक पैकेज को रोकने के लिए? :-)
यूजीन वैन डेर मेरवे


59
एप्टीट्यूड की तुलना में एप्टीट्यूड मेरे लिए अधिक मददगार था, संकेत के लिए धन्यवाद।
szx

9
एक बात का ध्यान रखें कि योग्यता आपके सिस्टम को और अधिक नुकसान पहुंचाना आसान बना सकती है। उदाहरण के लिए, यदि उपयुक्त-विरोधी विवादों के कारण कुछ स्थापित करने में विफल रहता है तो यह हार मान लेगा। हालाँकि, अभिवृत्ति आगे बढ़ने की पेशकश कर सकती है, लेकिन उन संघर्षों को संतुष्ट करने के लिए - या यहां तक ​​कि अपग्रेड पैकेजों को पूरा करने के लिए अन्य पैकेजों की एक पूरी गुच्छा की स्थापना रद्द करें। आपको बस इसके बारे में पता होना चाहिए कि यह क्या सुझाव दे रहा है और केवल तभी आगे बढ़ें जब यह एक अच्छा विचार हो।
थोमसट्रेटर

4
"ऑन होल्ड" पैकेज का संदेश से कोई लेना-देना नहीं है, बस इसे दबाए रखने से संघर्ष से बचा गया था (स्थापित नहीं हो रहा है, अपग्रेड नहीं कर रहा है, डाउनग्रेड कर रहा है या हटा रहा है)।
ब्रिअम

33

यही मेरे साथ भी हुआ था। मैंने जो कुछ किया था sudo apt-get updateऔर उसने अपना मुद्दा तय किया। सौभाग्य।


9

मैं लापता आश्रितों के संबंध में एक समान परिदृश्य में भाग गया। मेरे मामले में मैं ubuntu saucy समन्दर 13.10 पर कर्ल स्थापित करने की कोशिश कर रहा था ...

त्रुटि ने कहा कि निर्भरता को कर्ल 3 लाइब्रेरी के पुराने संस्करण की आवश्यकता थी।

मैं पहले संस्करण के लिए नीचता का उपयोग करके कर्ल को स्थापित करने की कोशिश कर रहा था।

जब यह लापता निर्भरता, और कारण (पुस्तकालय फ़ाइल के एक पुराने संस्करण की आवश्यकता) का उल्लेख किया, तो यह मुझे जवाब देने के तरीके में कई विकल्प दिए ... y// n/q

Yस्थापित को निरस्त कर दिया Nहोगा , दूसरे विकल्प की तलाश करेगा, और Qटूटे हुए पैकेज को छोड़कर बस और कुछ नहीं करेगा।

मैंने चुना N, और इसने मुझे लाइब्रेरी फ़ाइल को पहले वाले संस्करण में डाउनग्रेड करने का विकल्प दिया। तो यह है कि मैंने क्या किया, और बिना किसी त्रुटि के कर्ल स्थापित करना समाप्त कर दिया।

  • मैं स्थापित होने के बाद फिर से लाइब्रेरी फ़ाइल को अपग्रेड कर सकता हूं, लेकिन हे, अब तक बहुत अच्छा।

9

मेरे पास 14.04 की एक ताज़ा स्थापना में एक समान परिदृश्य था, जिसमें कोई फ़ाइल सूचीबद्ध नहीं थी dpkg --get-selections | grep hold, और उसके बाद कोई खुशी नहीं थी sudo apt-get update

क्या किया था मेरे लिए इसे ठीक एक सरल था

sudo apt-get autoremove

जब मैंने असफल पैकेज को पुनः स्थापित करने का प्रयास किया तो यह ठीक काम कर गया। वाह!


4

एक ही समस्या थी, मैं दूसरे जवाब ( dpkg --get-selections | grep hold) और देखा से उस पैकेज की जांच आदेश चला गया

tomcat7                                         deinstall
tomcat7-common                                  install

इसलिए मैंने " apt-get remove tomcat7-common" का उपयोग किया

तब मैं टॉमकैट 6 स्थापित कर सकता था (मैं टॉमकैट 7 को हटा रहा था और टॉमकैट 6 स्थापित कर रहा था जैसा कि आप करते हैं)।


"होल्ड पर" पैकेज का संदेश के साथ कोई लेना-देना नहीं है, बस संघर्ष को नीचे रखने (स्थापित करने, उन्नयन, डाउनग्रेडिंग, या हटाने) से रोक दिया गया था
Braiam

फ्लैग पर्ज जोड़ें: apt-get remove --purge पैकेट
सर्जियो

4

ये you have held broken packagesत्रुटि को ठीक करने के कुछ तेज़ और आसान तरीके हैं ।

  • अपने सोर्स.लिस्ट फ़ाइल को खोलें /etc/apt/sources.listऔर देखें कि उबंटू रिलीज़ से अलग उबंटू रिलीज़ के लिए कोई सॉफ़्टवेयर स्रोत नहीं हैं जो आप वर्तमान में उपयोग कर रहे हैं। यदि आपको source.list में कोई गलत रिलीज़ लाइन्स मिलती हैं, तो source.list फ़ाइल को खोलें, सूत्रों sudoedit /etc/apt/sources.listमें गलत लाइन्स पर टिप्पणी करें। उन्हें किसी #कैरेक्टर से पहले लाइक करें, सोर्स.लिस्ट फ़ाइल को सेव करें, और sudo apt updateलिस्ट को अपडेट करने के लिए रन करें। उपलब्ध सॉफ्टवेयर पैकेज।

  • सिनैप्टिक पैकेज मैनेजर में फिक्स ब्रोकन पैकेज विकल्प चुनें । Synaptic को स्थापित करने के लिए निम्न आदेश चलाएँ।

    sudo apt update  
    sudo apt upgrade   
    sudo apt install synaptic  
    

    Synaptic खोलें और Synaptic में संपादित करें का चयन करें -> टूटे हुए पैकेज को ठीक करें और फिर संपादित करें को दोहराएं -> दूसरी बार टूटे हुए पैकेज को ठीक करें

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

    Synaptic में टूटे हुए पैकेज दिखाएं

    एक बार में टूटे हुए पैकेजों का चयन करें। एक टूटे हुए पैकेज का चयन करें, और फिर टर्मिनल खोलें और चलाएं । इस आदेश के परिणाम आपको बताएंगे कि क्या उस टूटे हुए पैकेज को डिफ़ॉल्ट उबंटू रिपॉजिटरी या किसी अन्य स्रोत से स्थापित किया गया था। यदि टूटे हुए पैकेज को किसी अन्य स्रोत से स्थापित किया गया था, तो शायद उस पैकेज को उसके सॉफ्टवेयर स्रोत के साथ हटा दिया जा सकता है और डिफ़ॉल्ट उबंटू रिपॉजिटरी से उसी पैकेज के एक अलग संस्करण द्वारा प्रतिस्थापित किया जा सकता है। आमतौर पर इसका मतलब है कि एक पुराने संस्करण में उस पैकेज को डाउनग्रेड करके एक टूटे हुए पैकेज को ठीक करना।apt policy <package-name>

  • यदि आपको यह त्रुटि संदेश मिलता है:

    Try 'apt-get -f install' with no packages (or specify a solution)  
    

    निम्न आदेश चलाएँ:

    sudo apt update  
    sudo apt upgrade   
    sudo apt-get -f install   
    
  • मैन्युअल रूप से एक टूटे हुए पैकेज को हटा दें।

    1. में अपने पैकेज का पता लगाएं /var/lib/dpkg/info

      ls -l /var/lib/dpkg/info | grep <package>
      
    2. पैकेज फ़ोल्डर को किसी अन्य स्थान पर ले जाएं।

      cd /tmp && sudo mkdir new-package-location  
      sudo mv /var/lib/dpkg/info/<package>.* /tmp/new-package-location/    
      
    3. निम्न आदेश चलाएँ:

      sudo dpkg --remove --force-remove-reinstreq <package>  
      

यदि ये सभी विधियां काम नहीं करती हैं, तो संभव है कि टूटे हुए पैकेज ऑपरेटिंग सिस्टम में इतनी गहराई से एम्बेडेड किसी चीज के कारण बने हों, इनमें से किसी भी तरीके का उस पर कोई प्रभाव नहीं पड़ता है। इस गहराई से एम्बेडेड "कुछ" के लिए देखने का पहला स्पष्ट स्थान सॉफ्टवेयर स्रोतों में है /etc/apt/sources.list। यह देखने के लिए source.list फ़ाइल की जाँच करें कि क्या इसमें कोई गैर-मानक रेखाएँ हैं जो टूटी हुई पैकेज त्रुटि का कारण हो सकती हैं। एक मानक उबन्टु स्रोत.लिस्ट फ़ाइल इस उत्तर में सूत्रों की सूची की तरह लगती है। फाइल ।

सूत्रों से एक संदिग्ध लाइन को हटाने का सही तरीका है #। सूची को एक चरित्र के साथ पूर्ववर्ती द्वारा टिप्पणी करना है । फिर sudo apt updateउपलब्ध सॉफ़्टवेयर की सूची को ताज़ा करने के लिए चलाएँ ।


0

मेरे लिए, उपरोक्त में से कोई भी काम नहीं किया क्योंकि मेरा सिस्टम अपडेट नहीं किया गया था। मैंने किया

Home Key > Software Updater > Install

और मेरे सिस्टम को अपडेट किया; बाद में, मैं अपना पैकेज सामान्य रूप से स्थापित कर सकता था apt

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