Lỗi Các gói sau có phần phụ thuộc chưa được đáp ứng đã gây khó khăn cho người dùng Ubuntu trong một thời gian và ngày càng có nhiều lỗi xảy ra trên các phiên bản Ubuntu khác nhau. Hệ thống quản lý gói APT rất dễ sử dụng, nhưng trong một số trường hợp, chẳng hạn như khi bạn kết hợp các phần phụ thuộc của bên thứ ba, bạn có thể gặp lỗi này từ apt-get.
Điều này xảy ra khi bạn cố gắng cài đặt thứ gì đó với hệ thống apt thông qua thiết bị đầu cuối và quá trình cài đặt không thành công mà không có vấn đề gì rõ ràng. Sự cố này không giới hạn ở bất kỳ chương trình cụ thể nào nhưng nó có thể xảy ra với khá nhiều chương trình trong số đó. Điều này là do sự cố nằm ở hệ thống apt chứ không phải ở chương trình bạn đang cài đặt.
May mắn thay, có khá nhiều giải pháp cho vấn đề này, một số giải pháp dễ thực hiện hơn và một số giải pháp khác khó thực hiện hơn, nhưng nếu làm theo hướng dẫn trong các phương pháp bên dưới, bạn sẽ thoát khỏi lỗi ngay lập tức.
Lưu ý:Trước khi tiếp tục với bất kỳ phương pháp nào, bạn nên sao lưu các tệp cấu hình chẳng hạn như để có thể hoàn nguyên mọi thay đổi trong trường hợp xảy ra sự cố. Điều này được thực hiện bằng cách sử dụng các bước sau:
- Nhấn đồng thời Alt, Ctrl và T trên bàn phím để mở Terminal.
- Nhập và nhấn Enter.
- Khi lệnh trước chạy xong, hãy nhập sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.origen và nhấn Enter lần nữa.
Phương pháp 1:Sử dụng tham số -f
Đây là cách dễ nhất để thử và chỉ yêu cầu thêm hai chữ cái nữa vào lệnh bạn đang nhập. Thay vì sử dụng sudo apt-get install PACKAGENAME, trong đó PACKAGENAME là gói bạn đang cố cài đặt bằng hệ thống apt, hãy sử dụng sudo apt-get install -f . -f tham số sẽ cố gắng sửa một hệ thống có phần phụ thuộc bị hỏng, sau đó bạn sẽ có thể cài đặt gói được đề cập.
- Mở Thiết bị đầu cuối bằng cách nhấn Ctrl, Alt và T đồng thời trên bàn phím của bạn.
- Nhập sudo apt-get install -f và nhấn Enter để thực hiện nó.
- Sau khi hoàn tất, hãy nhập sudo dpkg –configure -a, nhấn Nhập để chạy nó và chạy lệnh từ bước 2 một lần nữa.
Phương pháp 2:Sử dụng Năng khiếu
Năng khiếu là một sự thay thế của apt-get mà bạn có thể sử dụng làm trình quản lý gói cấp cao hơn. Bạn có thể sử dụng nó để thử và cài đặt gói của mình với nó, thay vì apt-get, nhưng trước tiên bạn cần cài đặt aptitude.
- Nhấn đồng thời Ctrl, Alt, và T các phím trên bàn phím của bạn để mở
- Nhập sudo apt-get install aptitude và nhấn Enter để thực hiện lệnh.
- Nhập sudo aptitude install PACKAGENAME, trong đó PACKAGENAME là gói bạn đang cài đặt và nhấn Enter để thực hiện nó. Thao tác này sẽ cố gắng cài đặt gói thông qua aptitude thay vì apt-get, điều này có khả năng khắc phục vấn đề phần phụ thuộc chưa được đáp ứng.
Phương pháp 3:Đảm bảo rằng kho lưu trữ hạn chế và kho vũ trụ được bật và thử máy chủ tốt hơn
- Nhấn đồng thời Alt và F2 trên máy tính của bạn, nhập software-properties-gtk và nhấn
- Trong Phần mềm Ubuntu tab, hãy đảm bảo rằng tất cả các kho lưu trữ (chính, vũ trụ, bị hạn chế, đa vũ trụ) được kích hoạt.
- Nhấp vào danh sách máy chủ có ghi Tải xuống từ, và chọn
- Nhấp vào Chọn Máy chủ Tốt nhất.
- Nhấn Alt, Ctrl và T đồng thời để mở Terminal và nhập sudo apt-get update, sau đó nhấn Sau khi chạy xong, hãy thử cài đặt lại phần mềm.
Phương pháp 4:Làm sạch cơ sở dữ liệu gói
Cơ sở dữ liệu gói bị hỏng là nguyên nhân tiềm ẩn dẫn đến các phần phụ thuộc không được đáp ứng cũng như các gói không được cài đặt đúng cách. Tuy nhiên, việc dọn dẹp cơ sở dữ liệu gói có thể khắc phục điều này và bạn có thể thực hiện bằng hai lệnh mà tôi sẽ giải thích bên dưới. Tuy nhiên, trước hết hãy nhấn Ctrl, Alt và T để mở Terminal và đừng quên nhấn Enter sau lệnh để chạy nó.
- Sudo apt-get sạch sẽ xóa kho lưu trữ cục bộ khỏi tất cả các tệp gói được truy xuất (.deb). Nó sẽ xóa mọi thứ ngoại trừ các tệp khóa khỏi /var/cache/apt/archives và /var/cache/apt/archives/partial/.
- sudo apt-get autoclean cũng sẽ dọn sạch các tệp đã truy xuất, nhưng không giống như lệnh trước, lệnh này chỉ xóa các gói mà bạn không thể tải xuống được nữa và gần như vô dụng.
Phương pháp 5:Loại bỏ mọi gói hàng bị giữ
Các gói được giữ lại thực sự được giữ lại vì có các vấn đề phụ thuộc và xung đột apt không thể giải quyết được. Việc loại bỏ các gói như vậy có nghĩa là sẽ không có bất kỳ xung đột nào như vậy và do đó có thể khắc phục được sự cố của bạn.
- Mở Thiết bị đầu cuối bằng cách nhấn Ctrl, Alt và T
- Nhập sudo apt-get -u dist-upgrade và nhấn Nếu có bất kỳ gói hàng nào bị giữ lại, nó sẽ hiển thị chúng và bạn có quyền loại bỏ chúng.
- Trước tiên hãy thử chạy
sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade
và xem liệu nó có khắc phục được sự cố không. Nếu nó thoát với X chưa được nâng cấp ở cuối, trong đó X là số gói được giữ, bạn sẽ cần xóa từng gói một.
- Để xóa gói bị giữ, hãy sử dụng Sudo apt-get Remove –dry-run PACKAGENAME (PACKAGENAME là gói bạn đang cố xóa). –chạy thử tham số đảm bảo bạn được thông báo về bất cứ điều gì xảy ra tiếp theo. Khi bạn đã xóa tất cả các gói, hãy thử cài đặt gói gây ra sự cố ngay từ đầu và xem điều gì sẽ xảy ra.
Phương pháp 6:Lọc/Xóa/Vô hiệu hóa PPA
Lưu trữ gói cá nhân là các kho lưu trữ được lưu trữ trên Launchpad và được sử dụng để nâng cấp hoặc cài đặt các gói thường không có sẵn trong kho chính thức của Ubuntu. Chúng thường là nguyên nhân gây ra sự phụ thuộc chưa được đáp ứng, đặc biệt là khi chúng được sử dụng để nâng cấp gói hiện có từ kho lưu trữ Ubuntu. Bạn có thể vô hiệu hóa, xóa hoặc xóa chúng.
Tắt có nghĩa là các gói được cài đặt từ PPA đó sẽ không nhận được bản cập nhật nữa.
- Nhấn đồng thời Alt và F2, và chạy software-properties-gtk.
- Từ Phần mềm khác tab, bạn sẽ tìm thấy hai dòng cho mỗi PPA, trong đó một dòng dành cho nguồn và dòng khác dành cho gói đã biên dịch. Để tắt PPA, bạn nên bỏ chọn cả hai dòng.
Thanh lọc có nghĩa là tất cả các gói trong PPA đã chọn sẽ bị hạ cấp xuống phiên bản trong kho chính thức và cũng sẽ vô hiệu hóa PPA. Để cài đặt PPA Purge, bạn có thể sử dụng sudo apt-get install ppa-purge, nhưng xét rằng phù hợp bị hỏng, bạn nên sử dụng lệnh này trong Terminal (Alt, Ctrl và T đồng thời, sau đó Nhập để chạy):
mkdir ppa-purge &&cd ppa-purge &&wget http://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
Tiếp theo, chạy sudo ppa-purge ppa:someppa/ppa để thanh lọc PPA đã chọn. Tuy nhiên, vì PPA Purge vẫn không xóa PPA nên bạn có thể sử dụng các lệnh bên dưới để xóa PPA. Hãy bỏ qua tùy chọn đầu tiên nếu ý định của bạn không bao gồm việc xóa gói đã cài đặt.
- sudo apt-get autoremove –purge PACKAGENAME
- Sudo add-apt-repository –remove ppa:someppa/ppa
- sudo apt-get autoclean
Bạn sẽ có thể cài đặt gói cần thiết sau đó.
Mặc dù có khá nhiều phương pháp ở trên, bạn cũng nên biết rằng tốt hơn hết là bạn nên ngăn chặn những vấn đề như vậy. Bạn nên cập nhật hệ thống của mình, chỉ sử dụng PPA đáng tin cậy và sao lưu khi mọi thứ hoạt động bình thường để bạn có thể khôi phục sau. Tuy nhiên, nếu bạn quên làm những việc này, hãy sử dụng các phương pháp trên để khắc phục sự cố của mình và sử dụng các phương pháp phòng ngừa để đảm bảo bạn không làm như vậy
GIỚI THIỆU TÁC GIẢ
Mũi tên Kevin
Kevin Arrows là một chuyên gia công nghệ giàu kinh nghiệm và hiểu biết với hơn một thập kỷ kinh nghiệm trong ngành. Anh có chứng chỉ Chuyên gia Công nghệ được Chứng nhận của Microsoft (MCTS) và có niềm đam mê sâu sắc trong việc cập nhật những phát triển công nghệ mới nhất. Kevin đã viết nhiều về nhiều chủ đề liên quan đến công nghệ, thể hiện chuyên môn và kiến thức của mình trong các lĩnh vực như phát triển phần mềm, an ninh mạng và điện toán đám mây. Những đóng góp của ông cho lĩnh vực công nghệ đã được các đồng nghiệp công nhận và tôn trọng rộng rãi, đồng thời ông được đánh giá cao nhờ khả năng giải thích các khái niệm kỹ thuật phức tạp một cách rõ ràng và ngắn gọn.