Lỗi Sub-process /usr/bin/dpkg returned an error code thường xuất hiện khi trình quản lý gói dpkg gặp sự cố trong quá trình cài đặt, gỡ bỏ hoặc cập nhật phần mềm. Trong bài viết này, mình sẽ cùng bạn tìm hiểu chi tiết về nguyên nhân, cách khắc phục lỗi Sub-process /usr/bin/dpkg returned an error code chi tiết và hiệu quả.
Những điểm chính
- Định nghĩa lỗi Sub-process /usr/bin/dpkg returned an error code: Hiểu rõ đây là lỗi xảy ra khi quá trình cài đặt, gỡ bỏ hoặc cập nhật gói phần mềm qua
dpkgbị gián đoạn. - Nguyên nhân gây lỗi: Nắm được các nguyên nhân phổ biến như quá trình cài đặt bị gián đoạn, lỗi script, xung đột gói, hoặc cơ sở dữ liệu
dpkgbị hỏng. - Cách xác định gói gây lỗi: Biết cách đọc thông báo lỗi để xác định chính xác gói phần mềm nào đang gây ra sự cố.
- 5 cách khắc phục hiệu quả: Nắm vững các phương pháp để xử lý lỗi, từ việc cấu hình lại
dpkg, sửa lỗi phụ thuộc, đến gỡ bỏ hoàn toàn gói gây lỗi. - Kiểm tra và hoàn tất: Biết cách kiểm tra lại hệ thống sau khi đã áp dụng các biện pháp khắc phục để đảm bảo lỗi đã được xử lý hoàn toàn.
- Lưu ý khi khắc phục: Nắm được các nguyên tắc an toàn để tránh làm hỏng hệ thống, như sao lưu dữ liệu và tuân thủ đúng quy trình.
- Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các vấn đề nâng cao như cách phân biệt nguyên nhân lỗi, khi nào nên sửa thay vì gỡ bỏ, và có nên dùng các tùy chọn “force” hay không.
Lỗi Sub-process /usr/bin/dpkg returned an error code là gì?
Sub-process /usr/bin/dpkg returned an error code là thông báo lỗi thường xuất hiện khi công cụ dpkg gặp sự cố và không thể hoàn tất tác vụ cài đặt, cập nhật hoặc gỡ bỏ phần mềm hiện tại. Tình trạng này thường xảy ra trên các hệ điều hành Linux gốc Debian, khi quy trình xử lý gói tin trước đó bị gián đoạn đột ngột, cơ sở dữ liệu gói tin bị hỏng hoặc các script cấu hình của phần mềm bị lỗi, khiến hệ thống quản lý gói bị tắc nghẽn và ngăn cản người dùng thực hiện thêm bất kỳ thao tác nào cho đến khi được khắc phục.

Nguyên nhân gây lỗi Sub-process /usr/bin/dpkg returned an error code
- Quá trình cài đặt bị gián đoạn: Lỗi thường xảy ra khi bạn đang cập nhật hoặc cài đặt gói phần mềm và máy bị mất điện, mất kết nối Internet hoặc bạn vô tình tắt Terminal.
- Lỗi Script sau khi cài đặt: Mỗi gói .deb thường đi kèm các script như postinst, prerm, nếu các script này bị lỗi cú pháp hoặc gặp vấn đề không mong muốn trên hệ thống, dpkg sẽ dừng lại và báo lỗi.
- Xung đột gói phần mềm: Lỗi xảy ra khi hai gói phần mềm khác nhau đang cài đặt, ghi đè lên cùng một file hệ thống. Khi đó, hệ thống sẽ chặn quá trình này để tránh hỏng dữ liệu, dẫn đến lỗi code (1).
- Lỗi phụ thuộc: Khi gói phần mềm bạn muốn cài đặt yêu cầu một thư viện hoặc một gói khác, nhưng gói đó bị thiếu, bị hỏng hoặc có phiên bản không tương thích thì cũng có thể gây lỗi.
- Cơ sở dữ liệu dpkg bị hỏng: Các file quản lý trạng thái gói phần mềm nằm trong thư mục /var/lib/dpkg/ bị lỗi dữ liệu, khiến hệ thống không thể đọc được thông tin các gói đã cài.
- Ổ cứng hoặc phân vùng bị đầy: Nếu phân vùng / hoặc /var hết dung lượng trống, dpkg không thể giải nén các file mới hoặc ghi file cấu hình, gây ra lỗi trong quá trình xử lý.
- Sử dụng PPA hoặc kho lưu trữ không chính thống: Các gói phần mềm từ các nguồn bên thứ ba nếu không được kiểm thử kỹ lưỡng, dẫn đến việc không tương thích hoàn toàn với kiến trúc hệ thống hiện tại của bạn.

Cách xác định gói phần mềm gây lỗi
Đầu tiên, bạn cần xác định được gói phần mềm nào đang gây lỗi. Khi chạy lệnh apt hoặc dpkg, hệ thống sẽ liệt kê gói gây lỗi ở dòng cuối cùng.
Ví dụ:
Errors were encountered while processing:
google-chrome-stable
Ở kết quả trên cho thấy google-chrome-stable là gói phần mềm đang gây ra lỗi Sub-process /usr/bin/dpkg returned an error code.
4 cách khắc phục lỗi Sub-process /usr/bin/dpkg returned an error code hiệu quả
Cách 1: Cấu hình lại cơ sở dữ liệu dpkg
Nhiều trường hợp lỗi xảy ra do quá trình cài đặt trước đó bị gián đoạn do mất điện, tắt terminal đột ngột,… khiến gói ở trạng thái chưa hoàn tất. Bạn có thể dùng lệnh sau để hoàn tất việc cấu hình các gói đang bị treo hoặc chưa được thiết lập đầy đủ.
sudo dpkg --configure -aCách 2: Sửa lỗi phụ thuộc bằng tính năng Fix-Broken
Lệnh dưới đây sẽ yêu cầu apt tự động tìm kiếm các gói phụ thuộc bị thiếu hoặc bị hỏng để sửa chữa chúng:
sudo apt install -f
# hoặc
sudo apt install --fix-brokenCách 3: Gỡ bỏ hoàn toàn gói gây lỗi
Khi một gói cụ thể gây ra lỗi và không thể khắc phục được, bạn hãy gỡ bỏ hoàn toàn gói đó khỏi hệ thống lệnh sau:
sudo apt remove --purge <tên-gói>
sudo apt autoremove
sudo apt cleanLệnh trên sẽ xóa hoàn toàn gói gây lỗi cùng với các file cấu hình liên quan, đồng thời dọn dẹp các gói không còn sử dụng để làm sạch hệ thống.
Cách 4: Xử lý thủ công script của gói
Nếu bạn không thể gỡ gói bằng lệnh thông thường do script sau cài đặt bị hỏng, bạn cần can thiệp vào thư mục quản lý của dpkg.
Các bước thực hiện:
Bước 1: Đầu tiên, bạn di chuyển các file liên quan đến gói gây lỗi vào thư mục tạm:
sudo mv /var/lib/dpkg/info/<tên-gói>.* /tmp/Bước 2: Bạn cập nhật lại danh sách gói:
sudo apt updateViệc di chuyển các file cấu hình liên quan đến gói ra khỏi thư mục dpkg sẽ giúp tránh lỗi phát sinh khi chạy lại dpkg hoặc apt, nhất là trong các trường hợp không thể gỡ gói theo cách thông thường.
Kiểm tra lỗi và hoàn tất
Sau khi áp dụng một trong các cách trên, bạn hãy chạy lệnh sau để đảm bảo hệ thống của bạn đã hoàn toàn ổn định:
sudo apt update && sudo apt upgrade -yNếu hệ thống chạy ổn định và không còn thông báo lỗi Code (1), bạn đã xử lý lỗi thành công.
Lưu ý khi khắc phục lỗi Sub-process /usr/bin/dpkg returned an error code
Khi khắc phục lỗi, bạn cần lưu ý một số vấn đề sau:
- Sao lưu dữ liệu: Bạn tạo snapshot hoặc backup
/var/lib/dpkg/trước khi chỉnh sửa file thủ công, vì thao tác sai có thể ảnh hưởng trực tiếp đến toàn bộ hệ thống gói. - Tránh chỉnh sửa thủ công: Bạn không nên tự ý xóa hoặc chỉnh sửa các file trong thư mục
/var/lib/dpkg/info/trừ khi đã xác định chính xác gói gây lỗi thông qua log, vì thao tác sai có thể tạo ra rác và làm hệ thống mất ổn định. Ngoài ra, bạn nên ưu tiên sử dụng các lệnh tự động để khắc phục lỗi trước khi cân nhắc đến các biện pháp can thiệp sâu hơn. - Tuân thủ đúng quy trình thực hiện: Bạn nên thực hiện từng bước xử lý một cách tuần tự và sau mỗi bước nên chạy lại apt update để kiểm tra hệ thống còn lỗi hay không. Nếu sử dụng PPA hoặc kho phần mềm không chính thức, bạn hãy kiểm tra kỹ khả năng tương thích với hệ thống trước khi thêm và cài đặt gói từ các nguồn này.

Câu hỏi thường gặp
Làm sao phân biệt lỗi do script của gói hay do cơ sở dữ liệu dpkg bị hỏng?
Nếu log lỗi chỉ ra cụ thể một script như postinst, prerm hoặc postrm của một gói nào đó và dừng tại bước chạy script, nhiều khả năng lỗi đến từ chính gói đó hoặc môi trường mà script đang chạy.
Ngược lại, nếu nhiều gói khác nhau cùng lỗi với các thông báo liên quan đến trạng thái gói hoặc file trong /var/lib/dpkg/, nguyên nhân có thể do cơ sở dữ liệu dpkg đã bị hỏng hoặc chưa được cấu hình hoàn tất sau lần cài đặt trước.
Khi nào nên ưu tiên sửa phụ thuộc thay vì gỡ bỏ hẳn gói lỗi?
Nếu gói lỗi là một thành phần quan trọng của hệ thống hoặc được nhiều gói khác phụ thuộc, bạn nên ưu tiên apt install –fix-broken để tránh kéo theo chuỗi gỡ bỏ hàng loạt. Việc gỡ bỏ hoàn toàn chỉ nên dùng khi gói đó không thiết yếu, ít phụ thuộc hoặc đã thử sửa phụ thuộc và cấu hình lại mà vẫn thất bại.
Có nên dùng các tùy chọn “force” của dpkg/apt để sửa lỗi không?
Các tùy chọn như –force-overwrite, –force-all chỉ nên được sử dụng trong trường hợp bạn nắm rõ xung đột đang xảy ra giữa những file nào và chấp nhận rủi ro phải tự can thiệp sửa lỗi thủ công sau đó. Việc lạm dụng các tùy chọn này có thể khiến nhiều gói rơi vào trạng thái cài đặt dở dang, tạo ra các file trùng lặp và về lâu dài làm cho quá trình chẩn đoán, khắc phục lỗi hệ thống trở nên phức tạp hơn.
Lỗi Sub-process /usr/bin/dpkg returned an error code có thể gây gián đoạn việc cài đặt và cập nhật hệ thống, nhưng bạn hoàn toàn có thể xử lý lỗi nếu xác định chính xác nguyên nhân và khắc phục đúng cách. Chúc bạn xử lý lỗi thành công và hẹn gặp lại bạn trong các bài viết tiếp theo. Cảm ơn bạn đã theo dõi bài viết.




