Chuyện gì đã xảy ra?Gặp lỗi dpkg was interrupted thường có nghĩa là hệ thống Linux của bạn đã dừng lại giữa chừng khi đang thực hiện tác vụ. Điều này thường xảy ra nếu pin máy tính xách tay bị hết trong khi cập nhật 500MB hoặc nếu bạn vô tình đóng terminal khi đang cài đặt kernel mới. Vì quá trình bị dừng đột ngột, trình quản lý gói sẽ tự "khóa" (lock) để ngăn các tệp hệ thống của bạn bị hỏng.
Bạn sẽ biết mình đang gặp sự cố khi mọi lệnh apt đều trả về đoạn văn bản cụ thể sau:
E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
Bước 1: Cách khắc phục tích hợp sẵnThông báo lỗi thực sự cho bạn biết chính xác cách bắt đầu. Tham số --configure -a yêu cầu dpkg tìm kiếm các gói đã được giải nén nhưng chưa bao giờ hoàn tất giai đoạn thiết lập. Sau đó, nó sẽ cố gắng hoàn thành các cấu hình đang chờ xử lý đó.
Mở terminal và chạy lệnh sau:
sudo dpkg --configure -a
Đối với các trường hợp gián đoạn nhỏ, quá trình này mất khoảng 30 giây. Lệnh sẽ liệt kê các gói mà nó đang cấu hình. Nếu lệnh kết thúc mà không có thông báo lỗi, hệ thống của bạn có thể đã trở lại bình thường. Nếu thất bại, hãy chuyển sang bước tiếp theo.
Bước 2: Xóa các tệp Lock cứng đầuĐôi khi lệnh trên thất bại với một lỗi mới: Could not get lock /var/lib/dpkg/lock-frontend. Điều này thường có nghĩa là một tiến trình chạy ngầm—chẳng hạn như trình cập nhật phần mềm tự động—đang cố gắng sửa lỗi hệ thống. Nó cũng có thể có nghĩa là một tệp lock "cũ" bị sót lại sau một vụ treo máy.
Đầu tiên, hãy kiểm tra xem có tiến trình apt nào đang hoạt động hay không:
ps aux | grep -i apt
Hãy đợi một hoặc hai phút nếu bạn thấy tiến trình unattended-upgrades đang hoạt động. Nếu không có tiến trình nào đang chạy nhưng bạn vẫn thấy lỗi lock, bạn phải xóa các tệp lock theo cách thủ công để hệ thống có thể tiếp tục. Chạy các lệnh sau từng cái một:
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
Sau khi các tệp đó đã được xóa, hãy thử lại lệnh cấu hình:
sudo dpkg --configure -a
Bước 3: Sửa các phụ thuộc bị lỗiNgay cả sau khi cấu hình các gói, hệ thống của bạn có thể có các liên kết bị "hỏng" (broken), nơi một phần mềm cần một thư viện chưa tải xuống xong. Bạn có thể yêu cầu Advanced Package Tool (APT) quét và sửa chữa các phần còn thiếu này.
Chạy lệnh fix-broken:
sudo apt install -f
Lệnh này là một "cứu cánh". Nó xác định các gói được cài đặt một phần và hoàn tất chúng hoặc gỡ bỏ chúng để khôi phục tính ổn định. Nó có thể yêu cầu tải xuống thêm một vài megabyte dữ liệu để hoàn tất công việc.
Bước 4: Làm mới hệ thốngSau khi sửa chữa cơ sở dữ liệu, hãy đồng bộ hóa danh sách gói cục bộ của bạn với các máy chủ từ xa. Điều này đảm bảo hệ thống của bạn biết chính xác các phiên bản nào hiện có và loại bỏ mọi sự nhầm lẫn còn sót lại.
sudo apt update
sudo apt upgrade
Cách khắc phục nâng cao: Dọn dẹp CacheNếu bạn vẫn gặp lỗi, tệp .deb đã tải xuống có thể bị hỏng. Bạn có thể xóa cache cục bộ để buộc hệ thống tải xuống các bản sao phần mềm mới và sạch.
sudo apt clean
sudo apt autoclean
Thao tác này sẽ dọn dẹp thư mục /var/cache/apt/archives/. Nó sẽ không gỡ cài đặt các ứng dụng của bạn; nó chỉ xóa các tệp thiết lập tạm thời.
Xác minh: Đã khắc phục xong chưa?Kiểm tra lại kết quả bằng cách chạy một bản cập nhật đơn giản. Nếu lệnh sau kết thúc mà không đề cập đến 'dpkg' hoặc 'locks', bạn đã khôi phục hệ thống thành công:
sudo apt update
Bạn sẽ thấy đầu ra sạch sẽ kết thúc bằng một thông báo như "All packages are up to date."
Cách ngăn ngừa sự cố trong tương laiTránh các sai lầm phổ biến sau để giữ cho trình quản lý gói của bạn luôn khỏe mạnh:
- Theo dõi dấu nhắc: Không bao giờ đóng cửa sổ terminal cho đến khi dấu nhắc lệnh (như
user@linux:~$) xuất hiện trở lại.- Cắm nguồn điện: Luôn kết nối máy tính xách tay với bộ sạc trước khi chạy lệnhdist-upgradelớn.- Hãy kiên nhẫn: Nếu một gói có vẻ bị kẹt ở mức 99%, hãy đợi ít nhất 5 phút. Một số tập lệnh cần thời gian để chạy các trình kích hoạt phần cứng. Nếu bạn phải dừng một tiến trình, hãy sử dụngCtrl+Cthay vì đóng cửa sổ bằng cách cưỡng bức.

