Làm cách nào để xóa các gói lỗi thời sau khi nâng cấp phát hành không thành công thông qua nâng cấp do-phát hành trên Ubuntu?


14

Đôi khi, khi tôi nâng cấp hệ thống qua do-release-upgrade, quá trình cập nhật không thành công và tập lệnh bảo tôi hoàn tất quy trình theo cách thủ công thông qua dpkg --configure -a. Đây là một vấn đề không nghiêm trọng - sau khi giải quyết thủ công vấn đề phụ thuộc và quá trình nâng cấp hoàn thiện đều hoạt động tốt.

Nhưng do-release-upgradetập lệnh có quá trình dọn dẹp sau khi hoàn tất nâng cấp:

Remove obsolete packages?  
XXX packages are going to be removed.  
Continue [yN]  Details [d]y

trong đó loại bỏ một số gói lỗi thời khỏi phiên bản cũ của hệ thống.

Có vẻ như quá trình này không thực hiện khi nâng cấp tự động không thành công và tôi hoàn thành nâng cấp thủ công, vì vậy các gói lỗi thời từ phiên bản cũ vẫn được cài đặt trong hệ thống.

Làm cách nào tôi có thể chạy quy trình "Xóa gói lỗi thời" bằng tay sau khi hoàn tất nâng cấp bằng tay?

Câu trả lời:


16

Kiểm tra điều này:

Mở một thiết bị đầu cuối,

Nhấn Ctrl+ Alt+T

Chạy nó:

sudo -i

apt-get update

apt-get autoremove

apt-get clean

UNUSCONF=$(dpkg -l|grep "^rc"|awk '{print $2}')

apt-get remove --purge $UNUSCONF

NEWKERNEL=$(uname -r|sed 's/-*[a-z]//g'|sed 's/-386//g')

ADDKERNEL="linux-(image|headers|ubuntu-modules|restricted-modules)"

METAKERNEL="linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)"

UNUSKERNELS=$(dpkg -l|awk '{print $2}'|grep -E $ADDKERNEL |grep -vE $METAKERNEL|grep -v $NEWKERNEL)

apt-get remove --purge $UNUSKERNELS

update-grub

1
Cảm ơn, những lệnh đó là chính xác mà tôi muốn, chính của chúng là dpkg -l|grep "^rc"|awk '{print $2}'hiển thị các gói để loại bỏ. Điều này thật kỳ lạ khi apt-get hoặc aptitude không muốn thấy nó để xóa.
Murz

2
Lệnh cli một dòng để xóa các gói lỗi thời sau khi nâng cấp do phát hành không thành công dựa trên ví dụ của bạn là : sudo dpkg -l|grep "^rc"|awk '{print $2}' | xargs sudo apt-get remove -y --purge. Chú ý, lệnh này loại bỏ các gói mà không cần xác nhận, nhưng rất hữu ích để tự động hóa các hệ thống dọn dẹp nhanh chóng.
Murz

Trên hệ thống của tôi, các '^rc'gói được đánh dấu thậm chí chưa được cài đặt, nhưng việc nâng cấp đã thất bại ngay trước khi tìm kiếm các gói lỗi thời. Vì vậy, câu trả lời này có vẻ không đầy đủ. Điều này sẽ không loại bỏ tất cả các gói sẽ được do-release-upgrade, nếu nó thành công.
Ruslan

2

Tôi tin rằng "Loại bỏ các gói lỗi thời" thực sự chỉ chạy a sudo apt-get autoremove. Hãy thử nó, xem nếu nó giúp.


2
sudo apt-get autoremovechỉ loại bỏ một phần nhỏ các gói, loại bỏ do-release-upgrade, ví dụ do-release-upgradetrên cùng một hệ thống sẽ loại bỏ khoảng 150 gói, nhưng apt-get autoremove- chỉ xóa khoảng 5-10 gói.
Murz

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.