Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Linux

Cách Khắc Phục Lỗi 'You Have Held Broken Packages' Trên Linux (Apt)

Bạn có thể thấy khi cố cài gói trên Linux xuất hiện dòng đáng sợ "E: Unable to correct problems, you have held broken packages." Cài đặt sau đó từ chối tiến thêm. Bạn có thể thấy lỗi này trên bất kỳ distro Linux nào dùng apt-get quản lý gói, bao gồm Debian và các spin-off Linux Mint, Ubuntu.

Nó do broken dependencies (phụ thuộc hỏng), tác dụng phụ từ việc cài gói phụ thuộc vào gói khác chưa cài. Khi apt-get đi cài gì đó, nó thấy không truy cập được thứ nó cần và không thể tiếp tục. Một vài thủ thuật dòng lệnh cơ bản cũng như công cụ đồ họa có thể khắc phục nhanh chóng.

Phương Pháp 1: Dùng dpkg –configure Khắc Phục Held Broken Packages

Khi làm việc tại terminal, thử chạy sudo dpkg –configure -a để bắt đầu quá trình tự động tìm bất kỳ phụ thuộc hỏng nào trên hệ thống do gói chưa cài. Công cụ này sẽ tự động cài bất kỳ gói nào nó thấy bạn thiếu mà không cần can thiệp user, tuy nhiên nếu được hỏi cài gì thì nhấn phím y để phản hồi.

Nếu không tìm thấy gói hỏng, bạn không thấy output. Chúng ta chạy trên máy test sạch chạy Xubuntu, nên không tìm thấy lỗi, nhưng nếu bạn gặp "Unable to Correct Problems, You have Held Broken Packages" thì cách này có thể tìm thấy vài gói bạn cần cài. Sau khi chạy, thử sudo apt-get install -f từ dòng lệnh.

Chương trình này sẽ xây dựng danh sách phụ thuộc và đọc thông tin trạng thái. Nếu nhận thông báo "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded", nghĩa là bạn không có phụ thuộc hỏng hoặc lệnh trước đã khắc phục hết. Lúc này, chạy sudo apt-get clean && sudo apt-get update theo sau sudo apt-get upgrade để cập nhật mọi gói trên hệ thống. Điều này có thể mất thời gian tùy theo hệ thống gặp vấn đề gói bao lâu.

Phương Pháp 2: Dùng Lệnh dist-upgrade

Nếu nhận thông báo "some packages have been held back" nên không hoàn thành lệnh trước thành công, chạy sudo apt-get dist-upgrade để cài phần còn lại các gói này. Ngoài việc thực hiện chức năng upgrade thường, tùy chọn dist-upgrade xử lý phụ thuộc thay đổi với phiên bản mới gói. Vì apt-get có hệ thống xung đột đặc biệt, nó thường cố upgrade gói quan trọng nhất giá là không làm gì với gói kém quan trọng hơn. Dùng lệnh này ép cả những gói đó cập nhật.

Điều đó nói, nếu không phát hiện gói hỏng, bạn chỉ nhận thông báo thứ ba về không có gì upgraded và newly installed. Nếu是这样, bạn có thể thử sudo apt-get upgrade lại để nếu có thay đổi thì subroutine upgrade tự động có thể tác động. Ngược lại, nếu bạn biết tên gói cụ thể bạn cần, bạn có thể cài thủ công.

Ví dụ, giả sử thành phần runtime GNUStep là thứ bạn thiếu vì muốn dùng tổng hợp giọng nói. Bạn chỉ cần gõ sudo apt-get install gnustep-gui-runtime để cài gói quan trọng này. Nhớ đây chỉ là ví dụ và bạn có thể thay gnustep-gui-runtime bằng tên bất kỳ gói bạn cần cài. Distro hiện đại dựa trên apt-get có hàng ngàn gói, nhưng miễn là bạn biết tên gói bạn tìm, nó sẽ ép cài.

Phương Pháp 3: Sửa Gói Hỏng Với Synaptic

Nếu bạn có trình quản lý gói đồ họa Synaptic, bạn cũng có thể dùng công cụ này khắc phục gói hỏng. Mở chương trình và chọn menu thả xuống Edit. Bạn nên có tùy chọn "Fix Broken Packages" trong menu, chọn nó nếu có. Nó không mất nhiều thời gian nếu không nhiều gói hỏng, nhưng có thể tìm thấy nhiều lỗi làm chậm thực thi.

Khi chạy xong mọi thứ, bạn sẽ thấy từ "Successfully fixed dependency problems" ở dòng trạng thái dưới cùng.

Bây giờ bạn có thể cập nhật và cài gói như bình thường. Hầu hết user chỉ làm cách này nếu đã làm việc trong Synaptic, nhưng nó luôn có sẵn khi cần. Sau chạy xong, bạn có thể đóng Synaptic và làm việc từ command prompt lại hoặc tiếp tục thay đổi ở đây.

VỀ TÁC GIẢ

Cách Khắc Phục Lỗi  You Have Held Broken Packages  Trên Linux (Apt)

Kevin Arrows

Kevin Arrows là chuyên gia công nghệ giàu kinh nghiệm và kiến thức với hơn một thập kỷ kinh nghiệm trong ngành. Anh持有 chứng chỉ Microsoft Certified Technology Specialist (MCTS) và có đam mê sâu sắc về việc cập nhật các 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 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. Đóng góp của anh cho lĩnh vực công nghệ đã được công nhận và tôn trọng rộng rãi bởi đồng nghiệp, và anh được đánh giá cao về 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à súc tích.