'Apt-get' का उपयोग करके पैकेज को कैसे पुनः स्थापित करें?


186

ऐसा लगता है कि मेरा aptitudeकिसी तरह टूट गया है:

sudo aptitude update
0% [Working]Segmentation fault

dmesg
[223282.616599] aptitude[30972]: segfault at 67707f ip 7f954dcfae5d sp 7ffff5a5f950 error 4 in libapt-pkg-libc6.7-6.so.4.6.0[7f954dca5000+bd000]

इसलिए मैं aptitudeउपयोग करके पुन: स्थापित करना चाहूंगा apt-get

दुर्भाग्य से ऐसा लगता apt-getहै कि एक पुनर्स्थापना विकल्प नहीं है।

मैं aptitudeफिर से कैसे काम कर सकता था ?

यह संभव है कि मुझे एप्टीट्यूड के सेगफॉल्ट का मूल कारण मिला। यहां बताया गया है कि मैं इसे कैसे पुन: पेश कर सकता हूं:

  1. Cygwin के rxvt टर्मिनल (एक विंडोज 7 64-बिट जर्मन संस्करण से) के माध्यम से डेबियन मशीन में 'ssh' रिमोट लॉगिन।
  2. Rxvt विंडो बढ़ाएँ ताकि यह दो मॉनिटरों तक फैले (हाँ, मेरे पास दो मॉनिटर हैं)
  3. भागो aptitude update। नोट: जब मैं rxvt टर्मिनल का आकार सामान्य करता हूं तो मेरे पास ये विभाजन दोष नहीं होते हैं!

जवाबों:


319
$ man apt-get | grep reinsta -A2
       --reinstall
           Re-Install packages that are already installed and at the newest
           version. Configuration Item: APT::Get::ReInstall.

तो, उपयोग को पुन aptitude: स्थापित करने के लिए इसका उपयोग करें:

sudo apt-get install --reinstall aptitude

14
आप क्या -A5कर रहे हैं?
वोकुहिला-ओलीबा

86
आदमी grep | grep - "-ए"
ग्रेविटी

34
आप क्या --कर रहे हैं?
डेस्टी

13
man getopt, के तहत देखोPARSING
Tino

28
-A5मिलान की गई रेखा को दिखाता है और इसके बाद की 5 पंक्तियाँ। --विकल्पों की पार्सिंग बंद कर देता है, इस प्रकार किसी भी चीज की व्याख्या करता है, जो स्थितिगत तर्कों के बाद आती है, अभिव्यक्ति में डैश से बचने के लिए -Aजो कि अन्यथा खुद को एक विकल्प के रूप में व्याख्या की जाएगी।
jjmontes

114

आप के साथ एक पैकेज को पुनर्स्थापित कर सकते हैं sudo apt-get install --reinstall packagename। यह पैकेज को पूरी तरह से हटा देता है (लेकिन उस पर निर्भर पैकेज नहीं), फिर पैकेज को बहाल करता है।

यह सुविधाजनक हो सकता है जब पैकेज में कई रिवर्स निर्भरताएं होती हैं।


10
एकमात्र सही, पूर्ण, गैर-स्नार्की उत्तर होने के लिए धन्यवाद।
सेरिन

6
@ कैरिन: मैं अन्य जवाबों को झपकीदार नहीं कहूंगा: यहां तक ​​कि "मैन पेज पढ़ें" एक ने वास्तव में इसका जवाब दिया कि इसे कैसे खोजना है।
डेविड स्पिल्ट

45
@DavidSpillett, मैं दृढ़ता से असहमत हूं। मैन पेज आमतौर पर बहुत खराब लिखे जाते हैं और नए-नए लेखों से बहुत मेल खाते हैं। उदाहरण के लिए, "--reinstall" विकल्प पर पैराग्राफ का उल्लेख नहीं है कि आपको इसे "इंस्टॉल" तर्क के साथ उपयोग करना है। एक नौसिखिया सही पूछ सकता है "मुझे इसे स्थापित करने और पुनः स्थापित करने के लिए क्यों कहना है?" RTFM को किसी को बताने वाला उत्तर सबसे खराब प्रकार का उत्तर है और यह मुझे इसे सबसे अधिक वोटों से देखने के लिए प्रेरित करता है, खासकर तब जब एक पूर्ण और वास्तव में उपयोगी उत्तर नीचे के पास होता है।
सेरिन

20

कभी-कभी आपको कॉन्फ़िगर फ़ाइलों को भी पुनर्स्थापित करने की आवश्यकता होती है! सिर्फ पुनर्स्थापना नहीं।

sudo apt-get install --reinstall xxxx

एप्लिकेशन को पुनर्स्थापित करें, कॉन्फ़िगरेशन फ़ाइलों को रखता है।

यह मददगार हो सकता है, लेकिन कभी-कभी आपको नए सिरे से शुरुआत करने की आवश्यकता होती है, इसलिए मैं जो उपयोग करता हूं वह यह है:

sudo dpkg -r xxxx //to remove that xxxx package
sudo dpkg -P xxxx //to purge all related files

फिर

sudo apt-get install xxxx

6
और अगर आपको कॉन्फिग फाइलों को केवल कुछ मामलों में (यदि वे ucf द्वारा प्रबंधित किया जाता है) को पुनर्स्थापित करने की आवश्यकता है, तो आपको उपयोग करना चाहिए UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]
स्किप्पी ले ग्रांड गौरौ

2
यह उत्तर एक बड़े upvote का हकदार है। यह वह चीज है जिसकी आपको जरूरत है जब आप किसी पैकेज को "पूरी तरह से पुनर्स्थापित" करना चाहते हैं। उदा। Vsftpd का एक साधारण - सांचा विन्यास फाइल को फिर से नहीं बनाता है, भले ही वह फाइल अब मौजूद न हो। इसके बजाय "Remove + Purge + (Re) इंस्टॉल" काम करता है।
करमा

13

आप योग्यता को हटाने और पुनः स्थापित करने के लिए सुरक्षित होना चाहिए, क्योंकि यह अन्य उपयुक्त उपयोगिताओं को प्रभावित नहीं करेगा। तो: apt-get remove aptitudeइसके बाद apt-get install aptitude, या यदि वह अभी भी विफल रहता है तो apt-get purge aptitudeउसके बाद प्रयास करें apt-get install aptitude

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


आपका बहुत बहुत धन्यवाद! apt-get removeइसके बाद apt-get installचाल चली!
वोकुहिला-ओलीबा

यह बहुत समय पहले की बात है कि मैंने कुछ a full filesystem checkइसी तरह की चीजें की थीं । क्या आप कृपया मुझे एक छोटा संकेत दे सकते हैं कि ऐसा कैसे करें?
वोकुहिला-ओलीबा

1
fsck -f <block_device>जैसे कि fsck /dev/sda1। फाइलसिस्टम को केवल उस समय अनमाउंट या माउंटेड रीड-ऑफ करने की आवश्यकता होगी, इसलिए यह आपकी रूट फाइलसिस्टम होने की संभावना है, जिसे आपको सिंगल-यूजर-मोड में रिबूट करना चाहिए और लाइव सीडी जैसी किसी अन्य चीज से बूट करना चाहिए।
डेविड स्पिललेट

2
आप tune2fsफाइलसिस्टम को चिह्नित करने के लिए उपयोग कर सकते हैं क्योंकि इसकी निर्धारित सीमा से अधिक बार माउंट किया गया है, जो एक चेक अगले बूट को बाध्य करना चाहिए। माना जाता है कि फ़ाइल सिस्टम ext2 / 3/4 है: tune2fs -C 99 <device>या यदि आपके पास माउंट आधारित गणना की जाँच बंद है, तो इसे उसी समय चालू करें जैसे कुछ tune2fs -c 17 -C 99 <device>
डेविड स्पिललेट


1
sudo apt remove --purge package
sudo apt install package

जैसे आपने पहले कभी पैकेज स्थापित नहीं किया था। मैं गति और ऐसी चीजों के साथ अक्सर ऐसा कर रहा हूं।

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