Câu trả lời:
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>
.
apt-get purge <package-name>
vẫn nên làm việc
dpkg -l | grep amd64
tô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"
)
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).
awk
dù sao bạn cũng đang sử dụng , nên bạn cũng có thể thoát khỏi grep
lờ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 }')
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}'`
dpkg -l | grep i386
kiể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
sudo dpkg --remove-architecture i386
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 .
Đâ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ả i386
các gói Debian kiến trúc.
sudo apt-get purge .*:i386
Các hướng dẫn multiarch của debian đề cập đến lệnh này: apt-get purge ".*:<arch>"
, mà sẽ trông như thế này cho i386
:
apt-get purge ".*:i386"
Sau đó, bạn có thể xóa kiến trúc khỏi dpkg:
dpkg --remove-architecture i386