Làm cách nào để xóa tất cả các gói i386 khỏi Ubuntu 64bit?


Câu trả lời:


15

Nếu họ không theo cách của bạn, tôi sẽ để họ ở nơi họ đang ở.
Nếu bạn khăng khăng xóa, hãy sử dụng dpkg -l | grep i386để tạo danh sách các gói i386. Bạn có thể xóa chúng sau khi kiểm tra cẩn thận với một cái gì đó như sudo apt-get purge <package-name>.


2
Ngoại trừ khả năng đó bị phá vỡ trên multiarch , do đó sẽ không hoạt động tốt: P
tumbleweed

apt-get purge <package-name>vẫn nên làm việc
Eliah Kagan

2
"Sau khi kiểm tra cẩn thận" - đó là mơ hồ. Xin hãy rõ ràng hơn.
kevinarpe

1
Tôi có một hệ thống i386 trên usb đôi khi tôi sử dụng nó trên các máy amd64, bây giờ tôi chỉ muốn thực hiện nghịch đảo, vì vậy sau khi chạy, dpkg -l | grep amd64tôi đã nhận được một i386 pkg trong danh sách của mình amd64-microcode 3.20160316.3 i386, tôi nghĩ rằng ':' trong mẫu grep là quan trọng ( dpkg -l | grep ":amd64")
Giô-na

24

Các giải pháp tự động trên rất nguy hiểm và không phải lúc nào cũng hoạt động (1), vì vậy đây là một cách khác

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

hoặc là

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

(Cố gắng sử dụng luôn và chỉ một trong các công cụ. Vì khả năng tốt hơn khi gặp sự cố phụ thuộc, tôi thích điều đó.)

Ý kiến ​​hay

dpkg --remove-architecture i386

và có thể

dpkg --print-foreign-architectures

(1) Các lệnh trước cũng liệt kê các gói chỉ có i386 trong tên của chúng (mặc dù chúng dành cho kiến ​​trúc 64 bit), biểu thức thông thường không hoạt động và dpkg hiển thị các gói đã bị xóa nhưng vẫn còn các tệp cấu hình ( dpkg -l hiển thị "RC" thay vì "ii" là trạng thái).


awkdù sao bạn cũng đang sử dụng , nên bạn cũng có thể thoát khỏi greplời mời. Ngoài ra, $()là tốt hơn thay vì backticks. Tôi vừa thoát khỏi các gói i386 của mình bằng lệnh này dựa trên gói bạn đã đưa ra:sudo apt purge $(dpkg --get-selections | awk '$1 ~ /:i386$/ { print $1 }')
scy

23

Tôi đã làm mờ tất cả các gói 32 bit của mình như thế này:

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

1
Làm thế nào để thực hiện các loại lệnh này, tôi biết apt-get và grep nhưng whats awk '{print $ 1}', chỉ muốn biết.
Sukupa91

thật tuyệt vời và tôi đã có thể xóa kiến ​​trúc i386 ngay bây giờ, nhưng khi tôi dpkg -l | grep i386kiểm tra các gói vẫn còn bất kỳ ý tưởng nào, cũng là +1 cho nhận xét previouse và tôi đoán nó liên quan đến kỹ thuật kịch bản shell
Ismail Marmoush

Không có phản hồi có lẽ vì ý kiến ​​không phải là nơi cho một hướng dẫn awk. Một chút của awk chỉ in trường đầu tiên của mỗi dòng được đặt vào. Dấu tách trường mặc định của Awk là khoảng trắng, "".
rthbound

Kết thúc nó vớisudo dpkg --remove-architecture i386
Serge Stroobandt

9

Trong trường hợp bất cứ ai đang tự hỏi, có một cách duyên dáng và duyên dáng hơn nhiều để làm điều này. Câu trả lời cuối cùng hy vọng sẽ làm điều tương tự, nhưng tìm kiếm đó thất bại vì kiến ​​trúc không thực sự là một phần của tên gói, ngoại trừ trong trường hợp đặc biệt.

khi root (hoặc với sudo) chạy:

aptitude remove ~i~ri386

Nếu bạn không sử dụng năng khiếu trên apt-get, hãy làm. Nó thực sự xuất sắc. Bạn có thể tìm thấy một danh sách các thuật ngữ tìm kiếm của aptitude ở đây .


6

Đây là một cách khác thậm chí còn có nguy cơ thấp hơn:

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

Điều này sẽ đặc biệt chỉ khớp với các gói kết thúc bằng ":i386", đó là quy ước đặt tên tiêu chuẩn cho tất cả i386các gói Debian kiến ​​trúc.


Tại sao loại bỏ thanh trừng?
Hoa sen

1
@Lotus: Tôi không biết về sự khác biệt. Bạn có thể vui lòng giải thích? Có lẽ chúng ta có thể cập nhật câu trả lời này để cải thiện nó.
kevinarpe

purge cũng lấy các tệp cấu hình và mọi thư mục còn lại iirc
Lotus

2
@Lotus Tôi đã sử dụng thanh lọc và nó hoạt động vào ngày 14.04. Điều này chỉ làm việc cho tôi sau khi loại bỏ các dấu ngoặc kép và carret. sudo apt-get purge .*:i386
Antonios Hadjigeorgalis

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.