Lỗi "The following packages have unmet dependencies" xuất hiện khi apt-get không thể giải quyết phụ thuộc gói tin — thường do trộn PPA bên thứ ba, cài gói .deb thủ công, hoặc cơ sở dữ liệu gói bị hỏng. Dưới đây là 6 phương pháp từ dễ đến khó.
Sao Lưu Trước Khi Sửa (Khuyến Nghị)
- Mở terminal: Ctrl+Alt+T.
- Sao lưu trạng thái dpkg:
sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.original
Phương Pháp 1: Dùng Tham Số -f (Fix Broken)
Cách dễ nhất — chỉ thêm 2 chữ cái:
sudo apt-get install -f
Sau đó:
sudo dpkg --configure -a
sudo apt-get install -f
Chạy lần 2 để đảm bảo sạch.
Phương Pháp 2: Dùng Aptitude (Trình Quản Lý Gói Cao Cấp)
- Cài aptitude:
sudo apt-get install aptitude - Cài gói bị lỗi qua aptitude:
sudo aptitude install TÊN_GÓI
Aptitude thường giải quyết xung đột phụ thuộc tốt hơn apt-get.
Phương Pháp 3: Bật Kho main/universe/restricted/multiverse & Chọn Server Tốt Nhất
- Mở Software & Updates: Alt+F2 →
software-properties-gtk. - Tab Ubuntu Software: tích tất cả 4 kho (main, universe, restricted, multiverse).
- Tab Download from → Select Best Server.
- Cập nhật:
sudo apt-get update→ thử cài lại.
Phương Pháp 4: Dọn Dẹp Cơ Sở Dữ Liệu Gói
sudo apt-get clean # xóa file .deb trong cache
sudo apt-get autoclean # xóa file .deb không còn tải được (phiên bản cũ)
Phương Pháp 5: Xóa Gói Bị "Held" (Giữ Lại Do Xung Đột)
- Kiểm tra:
sudo apt-get -u dist-upgrade— sẽ liệt kê gói held. - Thử sửa tự động:
sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade. - Nếu vẫn còn held (thông báo "X not upgraded"), gỡ từng gói:
sudo apt-get remove --dry-run TÊN_GÓI # xem trước sudo apt-get remove TÊN_GÓI # gỡ thật - Sau khi gỡ xong, thử cài gói ban đầu.
Phương Pháp 6: Vô Hiệu/Hủy/Gỡ PPA Gây Xung Đột
PPA (Personal Package Archives) là nguyên nhân hàng đầu.
Vô Hiệu PPA
- Alt+F2 →
software-properties-gtk. - Tab Other Software: bỏ tích 2 dòng của PPA (source + binary).
Gỡ Sạch PPA (ppa-purge)
Nếu apt bị lỗi, cài ppa-purge thủ công:
mkdir ppa-purge && cd ppa-purge && \
wget https://old-releases.ubuntu.com/ubuntu/pool/universe/p/ppa-purge/ppa-purge_0.2.8+bzr56_all.deb && \
wget https://ftp.u-picardie.fr/mirror/ubuntu/ubuntu/pool/main/a/aptitude/aptitude_0.8.10-6ubuntu1_i386.deb && \
sudo dpkg -i ./*.deb
Sau đó: sudo ppa-purge ppa:tên/ppa.
Gỡ Hoàn Toàn PPA
sudo apt-get autoremove --purge TÊN_GÓI(bỏ qua nếu muốn giữ gói).sudo add-apt-repository --remove ppa:tên/ppa.sudo apt-get autoclean.
Phòng Tránh
- Luôn cập nhật hệ thống:
sudo apt-get update && sudo apt-get upgrade. - Chỉ dùng PPA uy tín, cần thiết.
- Sao lưu khi hệ thống ổn định (Timeshift, Clonezilla, v.v.).