จะลบแพ็คเกจ i386 ทั้งหมดออกจาก Ubuntu 64bit ได้อย่างไร


34

เมื่อเวลาผ่านไปฉันติดตั้งแพ็คเกจ i386 หลายชุดซึ่งฉันไม่ต้องการอีกต่อไป ฉันจะทำความสะอาดระบบและอยู่กับแพ็คเกจ amd64 ได้อย่างไร


คำตอบ:


15

หากพวกเขาไม่ได้อยู่ในทางของคุณฉันจะปล่อยให้พวกเขาอยู่ที่ไหน
หากคุณยืนยันในการลบให้ใช้dpkg -l | grep i386เพื่อสร้างรายการแพ็คเกจ i386 คุณสามารถลบเหล่านี้หลังจากการตรวจสอบอย่างระมัดระวังsudo apt-get purge <package-name>กับสิ่งที่ต้องการ


2
นอกจากความถนัดนั้นหักลงบน multiarchดังนั้นมันจะไม่ทำงานได้ดี: P
tumbleweed

apt-get purge <package-name>ควรจะยังคงทำงานแม้ว่า
Eliah Kagan

2
"หลังจากตรวจสอบอย่างละเอียด" - นั่นคลุมเครือ โปรดชัดเจนมากขึ้น
kevinarpe

1
ฉันมีระบบ i386 บน usb บางครั้งฉันใช้กับเครื่อง amd64 ตอนนี้ฉันแค่อยากจะกลับกันดังนั้นหลังจากทำงานdpkg -l | grep amd64ฉันก็มี i386 pkg ในรายการซึ่งก็คือamd64-microcode 3.20160316.3 i386ฉันคิดว่า ':' ในรูปแบบ grep เป็นสิ่งสำคัญ! ( dpkg -l | grep ":amd64")
Jonah

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) แสดง "rc" แทน "ii" เป็นสถานะ)


เนื่องจากคุณกำลังใช้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 แต่อะไร awk '{พิมพ์ $ 1}' แค่อยากรู้
Sukupa91

ยอดเยี่ยมและฉันสามารถลบสถาปัตยกรรม i386 ได้ในขณะนี้ แต่เมื่อฉันdpkg -l | grep i386ตรวจสอบแพ็กเกจยังคงมีความคิดใด ๆ +1 ด้วยสำหรับความคิดเห็นที่เหนือกว่าและฉันเดาว่ามันเกี่ยวข้องกับเทคนิคการเขียนสคริปต์เชลล์
Ismail Marmoush

ไม่มีคำตอบอาจเป็นเพราะความคิดเห็นไม่ใช่สถานที่สำหรับการสอน awk บิตของ awk นั้นกำลังพิมพ์เฉพาะฟิลด์แรกของแต่ละบรรทัดที่ถูกไพพ์ตัวคั่นฟิลด์เริ่มต้นของ Awk คือช่องว่าง ""
rthbound

ปิดท้ายด้วยsudo dpkg --remove-architecture i386
Serge Stroobandt

9

ในกรณีที่ใคร ๆ ก็สงสัยว่ามันมีวิธีที่ดีกว่า คำตอบก่อนหน้านี้หวังว่าจะทำสิ่งเดียวกัน แต่การค้นหานั้นล้มเหลวเนื่องจากสถาปัตยกรรมไม่ได้เป็นส่วนหนึ่งของชื่อแพ็คเกจยกเว้นในกรณีพิเศษ

ในฐานะที่เป็นราก (หรือด้วย sudo) ทำงาน:

aptitude remove ~i~ri386

หากคุณไม่ได้ใช้ความถนัดมากกว่า apt-get แล้วให้ทำ มันยอดเยี่ยมจริงๆ คุณสามารถค้นหารายการคำค้นหาความถนัดของที่นี่


6

นี่เป็นอีกวิธีหนึ่งที่มีความเสี่ยงต่ำกว่า:

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

สิ่งนี้จะจับคู่เฉพาะแพ็คเกจที่ลงท้ายด้วย":i386"ซึ่งเป็นแบบแผนการตั้งชื่อมาตรฐานสำหรับi386แพ็คเกจ Debian สถาปัตยกรรมทั้งหมด


ทำไมลบล้างการกำจัด?
Lotus

1
@ Lotus: ฉันไม่ได้ตระหนักถึงความแตกต่าง คุณช่วยอธิบายได้มั้ย บางทีเราสามารถอัปเดตคำตอบนี้เพื่อปรับปรุง
kevinarpe

purge ใช้ไฟล์คอนฟิกูเรชันด้วยและไดเร็กทอรี remant ใด ๆ iirc
Lotus

2
@Lus ฉันใช้การล้างข้อมูลและใช้งานได้กับ 14.04 สิ่งนี้ใช้ได้สำหรับฉันเท่านั้นหลังจากลบเครื่องหมายคำพูดและ carret sudo apt-get purge .*:i386
Antonios Hadjigeorgalis

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.