Apt और DNF जैसे Linux पैकेज मैनेजर अत्यंत शक्तिशाली और सहज हैं, लेकिन इसका मतलब यह नहीं है कि चीजें गलत नहीं हो सकतीं। कभी-कभी, एक पैकेज इंस्टॉलेशन गलत हो जाता है, और आपको टुकड़ों को उठाना पड़ता है। पैकेज मैनेजर में टूटे पैकेज को ठीक करने और टूटे अपडेट को छोड़कर अपने सिस्टम को फिर से काम करने और भविष्य में परेशानी से बचने की क्षमता होती है। यह लेख Linux में टूटे पैकेज को ठीक करने का तरीका कवर करता है।
ये टिप्स और ट्रिक्स अधिकांश उदाहरणों में आपको अनस्टक होने में मदद करनी चाहिए। वे सभी काफी सार्वभौमिक हैं, लेकिन हर स्थिति अलग होती है, इसलिए अपनी स्थिति को डीबग करने का प्रयास करते समय इसे ध्यान में रखें।
Ubuntu/Mint/Debian में टूटे पैकेज ठीक करना
Apt में कुछ फ्लैग हैं जिनका उपयोग आप गुम डिपेंडेंसी या पैकेज को ठीक करने के लिए कर सकते हैं जो किसी कारण से इंस्टॉल के दौरान टूट गए। यहां एक आम उपयोग तीसरे पक्ष के .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 में टूटे पैकेज ठीक करना
Fedora/CentOS/RHEL में टूटे पैकेज ठीक करना कम आम है, क्योंकि yum और dnf पैकेज को सही ढंग से इंस्टॉल करने में वास्तव में बहुत अच्छा काम करते हैं। हालांकि, कभी-कभी पैकेज उपयोग में चीजें मिश्रित हो जाती हैं। rpm-आधारित सिस्टम पर ऐसा करने की कमांड है:
sudo rpm -Va
-V विकल्प वेरिफाई के लिए है, जिसका अर्थ है कि यह इंस्टॉल की गई फाइलों पर जानकारी की तुलना rpm डेटाबेस में संग्रहीत जानकारी के साथ करेगा। यह थोड़ा अनुपयोगी है, क्योंकि यह आमतौर पर आपको फाइलों की एक लंबी सूची देगा, लेकिन यदि आपको किसी विशेष एप्लिकेशन के साथ समस्या हो रही है तो यह आपको शुरू करने के लिए कहीं दे सकता है। आप उस सूची में दिखाई देने वाले किसी भी पैकेज पर dnf reinstall चला सकते हैं जो आपको परेशानी दे रहा हो।
sudo dnf --refresh reinstall PACKAGE_NAME
यह सभी मेटाडेटा को एक्सपायर्ड के रूप में सेट कर देगा, इसलिए यह आपके द्वारा सक्षम हर रिपॉजिटरी के माध्यम से क्रॉल करेगा और उस पैकेज के नए संस्करण की तलाश करेगा। यदि आप पाते हैं कि उस पैकेज के साथ टूटी डिपेंडेंसी हैं, तो DNF शायद शिकायत करेगा और आपको --skip-broken फ्लैग का उपयोग करने के लिए कहेगा। इसका मतलब यह भी हो सकता है कि आपके पास उस डिपेंडेंसी को खींचने के लिए कोई विशेष रिपॉजिटरी सक्षम नहीं है, इसलिए आपको वहां कुछ शोध करना पड़ सकता है।
Arch में टूटे पैकेज ठीक करना
हालांकि Arch का पैकेज मैनेजर Debian के समान कई समानताएं रखता है, यह पूरी तरह से एक अलग जानवर है। आपके मुद्दे का निदान करने में पहला कदम यह सुनिश्चित करना है कि रिपॉजिटरी अद्यतित हैं और पूर्ण अपग्रेड का प्रयास करें:
sudo pacman -Syu
यदि आपके पैकेज को इंस्टॉल करने या सिस्टम अपग्रेड करने के प्रयास अभी भी विफलता में समाप्त हो रहे हैं, तो हमें टर्मिनल ने आपको क्या बताया उसके अनुसार कारण को अलग करना होगा:
"अमान्य या दूषित पैकेज"
"pacman.conf" में किसी भी तरीके से परिवर्तन करने से ऐसे मुद्दे पैदा हो सकते हैं जो pacman को पैकेज को गलत तरीके से दूषित के रूप में लेबल करने का कारण बनते हैं। यहां सबसे संभावित अपराधी पैकेज मैनेजर कैश में एक आंशिक (".part") फाइल है, और आपका समाधान इसे हटाना है:
sudo find /var/cache/pacman/pkg/ -iname "*.part" -delete
हमेशा एक मौका होता है कि आप जिस पैकेज को इंस्टॉल करने का प्रयास कर रहे हैं वह वास्तव में दूषित है और Arch को मान्य मेटाडेटा प्रदान नहीं करता। उस स्थिति में, आपको पैकेज मेंटेनर द्वारा इसे अपडेट करने तक इंतजार करना होगा। यदि पैकेज आपके सिस्टम पर इंस्टॉल है और अपग्रेड के दौरान समस्या पैदा कर रहा है, तो इसे इसके साथ हटा दें:
sudo pacman -Rns [package name]
"डेटाबेस लॉक करने में असमर्थ"
Debian के apt की तरह, Arch का पैकेज मैनेजर ऑपरेशन के दौरान एक लॉक फाइल बनाता है। यदि आपने पावर आउटेज का अनुभव किया या pacman ने एक हार्ड इंटरप्ट का अनुभव किया जिससे वह लॉक को हटा नहीं सका, तो इसके पीछे एक लॉक फाइल छोड़ने की बहुत संभावना है।
पहले, पता करें कि क्या आपके कंप्यूटर पर कोई प्रक्रिया अभी भी फाइल का उपयोग कर रही है:
sudo fuser /var/lib/pacman/db.lck
ऊपर की छवि में, PID 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]
यदि यह किसी अन्य पैकेज के स्वामित्व में है, तो सबसे सुरक्षित चीज जो आप कर सकते हैं वह है पैकेज के मेंटेनर द्वारा इस संघर्ष को स्वयं ठीक करने की प्रतीक्षा करना। कभी-कभी यह विकल्प नहीं होता, हालांकि, और आप चीजों को अभी पूरा करना चाहते हैं।
इसे पूरा करने का सबसे सरल तरीका pacman में --overwrite फ्लैग का उपयोग करना है। बस जान लें कि यह आम तौर पर असुरक्षित है और आपके सिस्टम में कुछ एप्लिकेशन को सही ढंग से काम नहीं करने दे सकता है। मैं इसे चलाने से पहले बैकअप बनाने का सुझाव देता हूं।
--overwrite फ्लैग Arch के पैकेज मैनेजर को किसी विशेष फाइल के लिए स्वामित्व नियमों को अनदेखा करने और अपडेट के माध्यम से आगे बढ़ने की अनुमति देता है। उदाहरण:
pacman -Syu --overwrite [file name]
यदि उपरोक्त कमांड काम नहीं करती है, तो फाइल नाम को उसके पूर्ण पथ से बदलें। कुछ उपयोगकर्ताओं ने रिपोर्ट किया है कि पथ के सामने वाले अग्रणी स्लैश ("/") को हटाने से कमांड काम करती है जब यह जिद्दी हो रही हो।
अक्सर पूछे जाने वाले प्रश्न
1. क्या मैं AUR हेल्पर के साथ Arch फिक्स लागू कर सकता हूं?
आम तौर पर, हां। इस गाइड में कमांड में "pacman" को अपने AUR हेल्पर से बदलें। उदाहरण:
yay -Qo /path/to/file
2. क्या ये निर्देश सुरक्षित हैं?
अधिकांश भाग के लिए, यहां हर निर्देश किसी अन्य पैकेज प्रबंधन ऑपरेशन जितना ही सुरक्षित है। प्रमुख अपवाद तब है जब आप लॉक फाइल हटा रहे हों। यदि आपके पास ऐसा करने का कोई तरीका है, तो उन फाइलों को हटाने से पहले उन प्रक्रियाओं को मारना हमेशा महत्वपूर्ण होता है जो उन फाइलों का उपयोग कर रही हों। इस बात से अवगत रहें कि आपका सिस्टम क्या कर रहा है। आप कहीं apt या pacman का एक उदाहरण चलाना भूल गए होंगे!
सर्वोत्तम अभ्यास होगा कि किसी भी अपग्रेड से पहले हमेशा अपने सिस्टम का बैकअप लें।
3. अगर मैं अपडेट को बाधित कर दूं तो मुझे क्या करना चाहिए?
Ctrl + C दबाकर, पैकेज मैनेजर की प्रक्रिया को मारकर, या समय से पहले टर्मिनल को बंद करके अपडेट प्रक्रिया को तोड़ने से आपके पैकेज डेटाबेस में कुछ स्तर का भ्रष्टाचार होगा जो आपके लिए चीजों को जटिल बना सकता है जब आप कुछ और इंस्टॉल करने का प्रयास करते हैं। इसे ठीक करने के लिए, कैश साफ़ करें और अपडेट दोहराएं।
Debian/Ubuntu/Mint/Pop!_OS/etc. में:
sudo apt-get clean
Fedora/CentOS/RHEL में:
sudo dnf clean all
Arch में:
sudo pacman -Scc
समापन
उम्मीद है, इनमें से एक फिक्स आपके लिए काम कर गया, और आप अपने Linux सिस्टम पर सामान्य रूप से काम करने के लिए वापस आ गए हैं। याद रखें कि पूरी तरह से हाथ से बाहर की स्थिति को संभालने का सबसे अच्छा तरीका यह है कि इसे पहले जैसा था उस पर लौटने का प्रयास करें। अधिक चीजें जोड़कर एक टूट को हल करके आगे बढ़ने की कोशिश न करें जब तक कि आप ठीक से नहीं जानते कि आप क्या कर रहे हैं। संभावना है कि आप टूटी हुई चीजों के एक उलझे हुए गड़बड़ के साथ समाप्त हो जाएंगे जिसे सुलझाना कठिन होगा।
आपको अपने Linux सिस्टम को अनावश्यक और टूटे पैकेज से छुटकारा पाने के लिए साफ करने की भी आवश्यकता हो सकती है। यदि कारण नए सॉफ्टवेयर का समर्थन करने में असमर्थ एक पुराना PC है, तो आप अपने पुराने PC को अच्छे उपयोग में लाने के लिए इन तीन तरीकों का भी उपयोग कर सकते हैं।