Apt और DNF जैसे Linux पैकेज मैनेजर बेहद शक्तिशाली और सहज ज्ञान युक्त हैं, लेकिन इसका मतलब यह नहीं है कि चीजें गलत नहीं हो सकती हैं। कभी-कभी, एक पैकेज इंस्टॉल गलत हो जाता है, और आप टुकड़ों को लेने के लिए छोड़ दिए जाते हैं। पैकेज प्रबंधकों के पास आपके सिस्टम को फिर से काम करने और भविष्य में परेशानी से बचने के लिए टूटे हुए पैकेजों को ठीक करने और टूटे हुए अपडेट को छोड़ने की क्षमता है। इस लेख में लिनक्स में टूटे हुए पैकेजों को ठीक करने का तरीका बताया गया है।
इन युक्तियों और तरकीबों से आपको ज्यादातर मामलों में फंसने में मदद मिलेगी। वे सभी काफी सार्वभौमिक हैं, लेकिन हर स्थिति अलग है, इसलिए अपनी स्थिति को डीबग करने का प्रयास करते समय इसे ध्यान में रखें।
उबंटू/मिंट/डेबियन में टूटे हुए पैकेजों को ठीक करना
एपीटी में कुछ झंडे हैं जिनका उपयोग आप लापता निर्भरताओं या पैकेजों को ठीक करने के लिए कर सकते हैं जो एक कारण या किसी अन्य कारण से इंस्टॉल के दौरान टूट गए हैं। यहां एक सामान्य उपयोग तृतीय-पक्ष .deb स्थापित करना और यह पता लगाना होगा कि इसमें ऐसी निर्भरताएँ थीं जिनके बारे में आप नहीं जानते थे। उन निर्भरताओं को शायद अपने आप में नहीं खींचा जाएगा, और dpkg
शिकायत करेंगे कि उनमें पैकेज गायब है। किसी भी स्थिति में, आप निम्न चरणों का प्रयास कर सकते हैं।
सबसे पहले, यह सुनिश्चित करने के लिए एक अपडेट चलाएं कि आवश्यक पैकेज के नए संस्करण नहीं हैं।
sudo apt --fix-missing update
इसके बाद, जब आप आपत्तिजनक पैकेज को फिर से स्थापित करने का प्रयास करते हैं, तो आप किसी भी लापता निर्भरता या टूटे हुए पैकेजों को देखने और उन्हें ठीक करने के लिए Apt को मजबूर करने का प्रयास कर सकते हैं। यह वास्तव में किसी भी अनुपलब्ध निर्भरता को स्थापित करेगा और मौजूदा स्थापनाओं की मरम्मत करेगा।
sudo apt install -f
एक अन्य स्थान जहां संकुल संस्थापन में त्रुटि उत्पन्न हो सकती है वह है विन्यास प्रक्रिया। पर्दे के पीछे, dpkg इस भाग की देखभाल कर रहा है, Apt नहीं, इसलिए यह इस कारण से खड़ा होगा कि जब कॉन्फ़िगरेशन के दौरान कोई पैकेज विफल हो जाता है, तो dpkg इसे ठीक करने के लिए चालू करने का उपकरण है।
किसी भी टूटे या आंशिक रूप से कॉन्फ़िगर किए गए पैकेज को पुन:कॉन्फ़िगर करने के लिए dpkg को बाध्य करने का प्रयास करके प्रारंभ करें।
sudo dpkg --configure -a
यदि वह समस्या का समाधान नहीं करता है, तो आप अधिक सशक्त दृष्टिकोण अपना सकते हैं। किसी भी पैकेज को सूचीबद्ध करके प्रारंभ करें जिसे dpkg को पुनः स्थापित करने की आवश्यकता के रूप में चिह्नित किया गया है।
sudo dpkg -l | grep ^..r
आपको वहां समस्याग्रस्त पैकेज देखना चाहिए। जब तक ऐसा कुछ भी नहीं है जो वहां से संबंधित नहीं लगता, आप टूटे हुए पैकेजों को बलपूर्वक हटा सकते हैं।
sudo dpkg --remove --force-remove-reinstreq [package name]
जब dpkg हो जाए, तो Apt से साफ करने का प्रयास करें।
sudo apt clean sudo apt update
किसी भी भाग्य के साथ, यह आपको वापस वहीं ले जाएगा जहां से आपने शुरुआत की थी। यह आपको टूटे हुए पैकेज नहीं देगा जिसे आपने स्थापित करने का प्रयास किया था, लेकिन कम से कम Apt फिर से कार्यात्मक होगा, और आप पैकेज और उसकी निर्भरता को स्थापित करने के प्रयास के लिए इसका उपयोग करने के लिए वापस जा सकते हैं।
स्थायी DPKG लॉक
आपको कुछ भी करने से रोकने वाले dpkg लॉक के साथ एक कम आम समस्या है। हर बार जब आप Apt या dpkg का उपयोग करने का प्रयास करते हैं, तो आपको यह कहते हुए एक त्रुटि मिलती है कि कोई अन्य एप्लिकेशन पहले से है ... जब यह नहीं है।
लॉक फ़ाइल को हटाना वास्तव में आसान है जो आपको Apt का उपयोग करने से रोकता है और आपको जो करना है उसे वापस करने से रोकता है। कभी-कभी ये लॉक फ़ाइलें इंस्टॉल त्रुटि या पावर आउटेज के बाद यथावत रहती हैं, प्रक्रिया को पटरी से उतार देती हैं और फ़ाइल को स्वचालित रूप से हटाए जाने से रोकती हैं। इस मामले में, आपको इसे स्वयं करना होगा।
sudo rm /var/lib/apt/lists/lock
अच्छे उपाय के लिए, कैश में लॉक को हटा दें।
sudo rm /var/cache/apt/archives/lock
Fedora/CentOS/RHEL में टूटे हुए पैकेज को ठीक करना
फेडोरा/सेंटोस/आरएचईएल में टूटे हुए पैकेजों को ठीक करना कम आम है, क्योंकि यम और डीएनएफ वास्तव में यह सुनिश्चित करने में बहुत अच्छा काम करते हैं कि पैकेज सही तरीके से स्थापित हैं। हालांकि, कभी-कभी पैकेज के उपयोग में चीजें मिश्रित हो जाती हैं। आरपीएम-आधारित सिस्टम पर ऐसा करने का आदेश है:
sudo rpm -Va
-V
विकल्प सत्यापित करने के लिए है, जिसका अर्थ है कि यह rpm
में संग्रहीत जानकारी के साथ स्थापित फ़ाइलों पर जानकारी की तुलना करेगा और तुलना करेगा डेटाबेस। यह थोड़ा अनुपयोगी है, क्योंकि यह आमतौर पर आपको फाइलों की एक लंबी सूची देगा, लेकिन यदि आप किसी विशेष एप्लिकेशन के साथ समस्या कर रहे हैं तो यह आपको कहीं से शुरू करने के लिए दे सकता है। आप एक dnf reinstall
चला सकते हैं उस सूची में दिखाई देने वाले किसी भी पैकेज पर जो आपको परेशानी दे सकता है।
sudo dnf --refresh reinstall PACKAGE_NAME
यह सभी मेटाडेटा को समाप्त होने के रूप में सेट करेगा, इसलिए यह आपके द्वारा सक्षम किए गए प्रत्येक भंडार के माध्यम से क्रॉल करेगा और उस पैकेज के एक नए संस्करण की तलाश करेगा। यदि आप पाते हैं कि उस पैकेज के साथ टूटी हुई निर्भरताएं हैं, तो डीएनएफ शायद शिकायत करेगा और आपको --skip-broken
का उपयोग करने के लिए कहेगा। झंडा। इसका मतलब यह भी हो सकता है कि आपके पास निर्भरता को खींचने के लिए एक विशेष भंडार सक्षम नहीं है, इसलिए आपको वहां कुछ शोध करना पड़ सकता है।
टूटे हुए पैकेज को आर्क में ठीक करना
हालाँकि आर्क के पैकेज मैनेजर में डेबियन की कई समानताएँ हैं, लेकिन यह पूरी तरह से अलग जानवर है। आपकी समस्या के निदान में पहला कदम यह सुनिश्चित करना है कि रिपॉजिटरी अद्यतित हैं और पूर्ण अपग्रेड का प्रयास करें:
sudo pacman -Syu
यदि आपके पैकेज को स्थापित करने या सिस्टम अपग्रेड करने के आपके प्रयास अभी भी विफल हो रहे हैं, तो हमें टर्मिनल द्वारा आपको बताए गए कारणों के अनुसार अलग करना होगा:
“अमान्य या दूषित पैकेज”
"pacman.conf" में किसी भी तरह से बदलाव करने से pacman
. का कारण बनने वाली समस्याएं हो सकती हैं संकुल को भ्रष्ट के रूप में गलत तरीके से लेबल करने के लिए। यहां सबसे संभावित अपराधी पैकेज प्रबंधक कैश में आंशिक (". भाग") फ़ाइल है, और आपका समाधान इसे निकालना है:
sudo find /var/cache/pacman/pkg/ -iname "*.part" -delete
हमेशा एक मौका होता है कि जिस पैकेज को आप स्थापित करने का प्रयास कर रहे हैं वह वास्तव में दूषित है और आर्क को मान्य मेटाडेटा प्रदान नहीं करता है। उस स्थिति में, आपको इसे अपडेट करने के लिए पैकेज मेंटेनर की प्रतीक्षा करनी होगी। यदि पैकेज आपके सिस्टम पर स्थापित है और अपग्रेड के दौरान समस्या उत्पन्न कर रहा है, तो इसे निम्न के साथ हटा दें:
sudo pacman -Rns [package name]
“डेटाबेस लॉक करने में असमर्थ”
डेबियन के उपयुक्त की तरह, आर्क का पैकेज मैनेजर ऑपरेशन के दौरान लॉक फाइल बनाता है। अगर आपको बिजली की कमी या pacman
का अनुभव हुआ है एक कठिन रुकावट का अनुभव किया जिससे यह लॉक को हटा नहीं सका, इसके लॉक फ़ाइल को पीछे छोड़ने की बहुत संभावना है।
सबसे पहले, पता करें कि क्या आपके कंप्यूटर पर कोई प्रक्रिया अभी भी फ़ाइल का उपयोग कर रही है:
sudo fuser /var/lib/pacman/db.lck
ऊपर की छवि में, आईडी 121497 के साथ एक प्रक्रिया फ़ाइल लॉक का उपयोग कर रही है। यदि आप प्रक्रिया के बारे में उत्सुक हैं और अधिक जानकारी चाहते हैं, तो ps
. का उपयोग करें :
ps -p [PID#]
मेरे मामले में, एक अन्य pacman उदाहरण लॉक फ़ाइल का स्वामी है। ताला हटाने का सबसे सुरक्षित तरीका है कि पहले उस प्रक्रिया को समाप्त कर दिया जाए:
sudo kill [PID#]
अब जबकि प्रक्रिया समाप्त हो गई है, लॉक फ़ाइल को हटा दें:
sudo rm /var/lib/pacman/db.lck
अब आप जाने के लिए तैयार हैं!
“विरोधाभासी फ़ाइलें/फ़ाइल फ़ाइल सिस्टम में मौजूद हैं”
यह अपग्रेड के दौरान होता है जहां pacman
एक संघर्ष का पता लगाता है। कुछ भी ठीक करने से पहले, उस फ़ाइल के पथ पर ध्यान दें जिसके बारे में पैकेज प्रबंधक शिकायत कर रहा है।
सबसे पहले हमें यह पता लगाना होगा कि फाइल का मालिक कौन है:
pacman -Qo [path to the file]
यदि यह किसी उपयोगकर्ता के स्वामित्व में है और किसी अन्य पैकेज के पास नहीं है, तो बस इसे हटा दें:
sudo rm [path to the file]
यदि यह किसी अन्य पैकेज के स्वामित्व में है, तो आप जो सबसे सुरक्षित काम कर सकते हैं, वह है पैकेज के अनुरक्षक द्वारा इस संघर्ष को स्वयं ठीक करने की प्रतीक्षा करना। हालांकि, कभी-कभी यह विकल्प नहीं होता, और आप अभी things काम करना चाहते हैं
इसे पूरा करने का सबसे आसान तरीका है --overwrite
. का उपयोग करना pacman
. में फ़्लैग करें . बस इतना जान लें कि यह आम तौर पर असुरक्षित है और आपके सिस्टम में कुछ एप्लिकेशन ठीक से काम नहीं कर रहे हैं। मेरा सुझाव है कि इसे चलाने से पहले बैकअप बना लें।
--overwrite
ध्वज आर्क के पैकेज मैनेजर को किसी विशेष फ़ाइल के स्वामित्व नियमों को अनदेखा करने और अद्यतन के माध्यम से बस स्टीमरोल करने की अनुमति देता है। उदाहरण:
pacman -Syu --overwrite [file name]
यदि उपरोक्त आदेश काम नहीं करता है, तो फ़ाइल नाम को उसके पूर्ण पथ से बदलें। कुछ उपयोगकर्ताओं ने रिपोर्ट किया है कि पथ के सामने वाले स्लैश ("/") को हटाने से कमांड जिद्दी होने पर काम करता है।
अक्सर पूछे जाने वाले प्रश्न
<एच3>1. क्या मैं आर्क फिक्स को AUR हेल्पर के साथ लागू कर सकता हूँ?सामान्य तौर पर, हाँ। इस गाइड में दिए गए कमांड में "pacman" को अपने AUR हेल्पर से बदलें। उदाहरण:
yay -Qo /path/to/file<एच3>2. क्या ये निर्देश सुरक्षित हैं?
अधिकांश भाग के लिए, यहां प्रत्येक निर्देश किसी भी अन्य पैकेज प्रबंधन संचालन के रूप में सुरक्षित है। प्रमुख अपवाद तब होता है जब आप लॉक फ़ाइलें हटा रहे होते हैं। यदि आपके पास ऐसा करने का कोई तरीका है, तो उन फ़ाइलों को हटाने से पहले उन प्रक्रियाओं को समाप्त करना हमेशा महत्वपूर्ण होता है जो उन फ़ाइलों का उपयोग कर रहे हैं। इस बात से अवगत रहें कि आपका सिस्टम क्या कर रहा है। आप शायद भूल गए होंगे कि उपयुक्त या पॅकमैन कहीं दौड़ रहा है!
किसी भी अपग्रेड से पहले हमेशा अपने सिस्टम का बैकअप लेना सबसे अच्छा अभ्यास होगा।
<एच3>3. अगर मैं किसी अपडेट में बाधा डालता हूं तो मुझे क्या करना चाहिए?Ctrl . दबाकर अपडेट प्रक्रिया को तोड़ना + सी , पैकेज प्रबंधक की प्रक्रिया को समाप्त करना, या समय से पहले टर्मिनल को बंद करना आपके पैकेज डेटाबेस में कुछ स्तर के भ्रष्टाचार का परिणाम देगा जो आपके लिए कुछ और स्थापित करने का प्रयास करने पर आपके लिए चीजों को जटिल कर सकता है। इसे ठीक करने के लिए, कैशे साफ़ करें और अपडेट दोहराएं।
डेबियन/उबंटू/मिंट/पॉप!_ओएस/आदि में:
sudo apt-get clean
फेडोरा/सेंटोस/आरएचईएल में:
sudo dnf clean all
आर्क में:
sudo pacman -Scc
रैपिंग अप
उम्मीद है, इनमें से एक सुधार ने आपके लिए काम किया है, और आप सामान्य रूप से अपने लिनक्स सिस्टम पर काम कर रहे हैं। याद रखें कि पूरी तरह से हाथ से निकली स्थिति को संभालने का सबसे अच्छा तरीका है कि पहले की तरह लौटने की कोशिश करें। जब तक आप ठीक से नहीं जानते कि आप क्या कर रहे हैं, तब तक और चीजों को जोड़कर ब्रेकेज को हल करने के लिए और चीजों को जोड़ने की कोशिश न करें। संभावना है कि आप टूटी-फूटी चीजों की उलझी हुई गड़बड़ी के साथ समाप्त हो जाएंगे, जिसे सुलझाना कठिन होगा।
अनावश्यक और टूटे हुए पैकेज से छुटकारा पाने के लिए आपको अपने लिनक्स सिस्टम को साफ करने की भी आवश्यकता हो सकती है। यदि कारण एक पुराना पीसी है जो नए सॉफ़्टवेयर का समर्थन करने में असमर्थ है, तो आप अपने पुराने पीसी को अच्छे उपयोग में लाने के लिए इन तीन तरीकों का भी उपयोग कर सकते हैं।