Ubuntu 64bit से सभी i386 पैकेज कैसे निकालें?


34

समय के साथ मैंने कई i386 पैकेज स्थापित किए, जिनकी मुझे अब कोई आवश्यकता नहीं है। मैं सिस्टम को कैसे साफ कर सकता हूं और केवल amd64 पैकेज के साथ रह सकता हूं?


जवाबों:


15

यदि वे आपके रास्ते में नहीं हैं, तो मैं उन्हें छोड़ दूंगा जहां वे हैं।
यदि आप हटाने पर जोर देते हैं, तो dpkg -l | grep i386i386- पैकेजों की एक सूची बनाने के लिए उपयोग करें। आप कुछ के साथ सावधानीपूर्वक जाँच के बाद इन्हें हटा सकते हैं sudo apt-get purge <package-name>


2
सिवाय इसके कि एप्टीट्यूड मल्टीकार पर टूट गया है , इसलिए यह इतना अच्छा काम नहीं करेगा: P
tumbleweed

apt-get purge <package-name>हालांकि अभी भी काम करना चाहिए।
एलिया कागन

2
"सावधान जाँच के बाद" - यह अस्पष्ट है। कृपया अधिक स्पष्ट हो।
केविनरपे

1
मैं एक us3 पर एक i386 प्रणाली है कभी-कभी मैं इसे amd64 मशीनों पर उपयोग करता हूं, अब मैं बस उलटा करना चाहता था, इसलिए दौड़ने के बाद dpkg -l | grep amd64मुझे अपनी सूची में एक i386 pkg मिला amd64-microcode 3.20160316.3 i386, जो है , मुझे लगता है कि '': '' grep पैटर्न में महत्वपूर्ण है ! ( dpkg -l | grep ":amd64")
जोनाह

24

ऊपरी स्वचालित समाधान खतरनाक हैं और हमेशा काम नहीं कर रहे हैं (1), इसलिए यहां एक और तरीका है

sudo aptitude purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`

या

sudo apt-get purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`

(हमेशा और केवल एक उपकरण का उपयोग करने की कोशिश करें। चूंकि निर्भरता की समस्या होने पर योग्यता बेहतर होती है, इसलिए मैं पसंद करता हूं)।

अच्छा विचार भी है

dpkg --remove-architecture i386

और शायद

dpkg --print-foreign-architectures

(1) पूर्व कमांड भी उनके नाम में केवल i386 वाले पैकेजों को सूचीबद्ध करता है (हालांकि वे 64 बिट आर्किटेक्चर के लिए हैं), नियमित अभिव्यक्ति काम नहीं करती थी और dpkg उन पैकेजों को दिखाता है जो पहले ही हटाए जा चुके हैं, लेकिन फिर भी कॉन्फ़िगरेशन फाइलें बाकी हैं ( dpkg -l स्थिति के रूप में "ii" के बजाय "rc" दिखाता है।


चूंकि आप किसी awkभी तरह का उपयोग कर रहे हैं , इसलिए आप grepआह्वान से छुटकारा पा सकते हैं । इसके अलावा, $()backticks के बजाय बेहतर है। मैंने अपने i386 पैकेजों को इस कमांड का उपयोग करके छुटकारा दिलाया जो आपने दिया था:sudo apt purge $(dpkg --get-selections | awk '$1 ~ /:i386$/ { print $1 }')
scy

23

मैंने अपने सभी 32 बिट पैकेज को इस तरह ब्लिट किया:

sudo apt-get remove `dpkg --get-selections | grep i386 | awk '{print $1}'`

1
इस प्रकार के कमांड बनाने के लिए, मैं apt-get और grep जानता हूं, लेकिन whats '' {$ $} प्रिंट करें, बस जानना चाहते हैं।
सुकुपा91

कमाल है, और मैं अब i386 आर्किटेक्चर को हटाने में सक्षम था, लेकिन जब मैं dpkg -l | grep i386जांच करता हूं कि पैकेज अभी भी कोई विचार हैं, तो
प्रीविओस

शायद कोई प्रतिक्रिया नहीं क्योंकि टिप्पणियाँ एक awk ट्यूटोरियल के लिए जगह नहीं हैं। Awk का वह बिट केवल प्रत्येक पंक्ति के पहले फ़ील्ड को प्रिंट कर रहा है। Awk का डिफ़ॉल्ट फ़ील्ड विभाजक एक स्थान है, ""।
15-16

इसे समाप्त करेंsudo dpkg --remove-architecture i386
सर्ज स्ट्रोबंड टीटी

9

यदि कोई सोच रहा है, तो ऐसा करने के लिए बहुत अधिक समझदार और सुंदर तरीका है। आखिरी पिछला उत्तर वही काम करने की उम्मीद करता है, लेकिन यह खोज विफल हो जाती है क्योंकि आर्किटेक्चर वास्तव में पैकेज नामों का हिस्सा नहीं हैं, विशेष मामलों को छोड़कर।

रूट के रूप में (या sudo के साथ) रन:

aptitude remove ~i~ri386

यदि आप पहले से ही एप्टीट्यूड का उपयोग नहीं करते हैं, तो करें। यह वास्तव में उत्कृष्ट है। आप योग्यता के खोज शब्दों की एक सूची पा सकते हैं यहाँ


6

यहाँ एक और तरीका है जो कम जोखिम वाला है:

apt-get remove "^.*:i386$"

यह विशेष रूप से केवल उन पैकेजों के साथ मेल खाएगा ":i386", जो सभी i386आर्किटेक्चर डेबियन पैकेजों के लिए मानक नामकरण सम्मेलन है।


क्यों निकालते हैं पर्स?
लोटस

1
@ लोटस: मैं अंतर से अनजान हूं। क्या आप समझा सकते हैं? शायद हम इसे बेहतर बनाने के लिए इस उत्तर को अपडेट कर सकते हैं।
केविनरपे

purge कॉन्फ़िगरेशन फ़ाइलों को भी लेता है और किसी भी रिमेंट डायरेक्टरी iirc
Lotus

2
@ लोटस मैंने पर्स का इस्तेमाल किया और इसने 14.04 को काम किया। यह केवल मेरे लिए उद्धरण चिह्नों और कैरेट को हटाने के बाद काम किया। sudo apt-get purge .*:i386
एंटोनियोस हेजजियोर्गालिस

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