Cách khắc phục các gói bị hỏng trên Linux

Tác giả Security+, T.Năm 06, 2024, 08:50:21 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Bị mắc kẹt với các vấn đề về gói bị hỏng trên Linux? Thử cái này xem sao.

  • Chạy "sudo apt install -f" để cài đặt lại và sửa các gói bị hỏng trên các bản phân phối dựa trên Ubuntu và Debian.
  • Bạn có thể sửa các gói bị hỏng trên Fedora, CentOS và RHEL bằng cách chạy lệnh "sudo dnf --refresh cài đặt lại <package_name>".
  • Trên Arch Linux, hãy chạy lệnh "sudo pacman -S --force <package_name>" để buộc cài đặt lại gói bị hỏng.


Các gói bị hỏng trong Linux là các gói phần mềm đã bị hỏng hoặc bị hỏng. Bạn có thể sử dụng trình quản lý gói để xác định và sửa các gói bị hỏng, đồng thời ngăn ngừa các sự cố như trục trặc chương trình, mất ổn định hệ thống và mất dữ liệu.

Đây là cách bạn có thể tìm và giải quyết các lỗi gói bị hỏng trên Linux.

1. Gói Linux bị hỏng như thế nào?

Các gói Linux là các tệp chứa mã phần mềm có thể cài đặt được. Các gói này có tất cả các tệp, phần phụ thuộc và hướng dẫn cần thiết để phần mềm hoạt động như dự định. Khi một gói bị hỏng, điều đó có nghĩa là đã xảy ra lỗi trong quá trình cài đặt hoặc cấu hình của gói đó và gói đó không còn hoạt động hoặc cập nhật nữa.

Ví dụ: khi một quá trình bị gián đoạn, nó có thể để lại một gói ở trạng thái cài đặt một nửa hoặc gỡ bỏ một nửa. Ngoài ra, các vấn đề phụ thuộc có thể phát sinh khi một gói phụ thuộc vào các gói khác (phụ thuộc) để hoạt động chính xác và nếu một gói phụ thuộc bị thiếu hoặc bị hỏng, gói đó có thể khiến gói chính không sử dụng được.

Hơn nữa, các vấn đề về kho lưu trữ cũng có thể dẫn đến các gói bị hỏng. Kho lưu trữ là tập hợp các gói phần mềm và nếu chúng bị định cấu hình sai hoặc chứa các gói bị lỗi thì có thể gây ra sự cố với các gói được cài đặt từ chúng.

2. Cách khắc phục các gói bị hỏng trên Linux

Quá trình sửa các gói bị hỏng sẽ khác nhau tùy thuộc vào bản phân phối Linux mà bạn đang sử dụng. Ở đây, chúng ta sẽ thảo luận về các phương pháp dành cho Ubuntu/Debian, Fedora/CentOS/RHEL và Arch Linux.

Việc loại bỏ các gói bị hỏng có thể gặp rủi ro nếu thực hiện không đúng cách. Nói chung, trước tiên bạn nên cố gắng sửa gói bị hỏng. Tuy nhiên, nếu gói không còn cần thiết nữa và bạn chắc chắn rằng nó không gây xung đột, bạn có thể xóa gói đó bằng lệnh quản lý gói thích hợp.

2.1. Cập nhật các gói bị hỏng trên Ubuntu và Debian

Nếu bạn là người dùng Ubuntu/Debian, bạn có thể sửa các gói bị hỏng bằng lệnh APT hoặc lệnh dpkg. Hãy bắt đầu bằng cách cập nhật các gói bằng APT.

APT là trình quản lý gói mặc định trên Ubuntu, Debian và các bản phân phối liên quan. Bạn có thể sử dụng nó để cài đặt, nâng cấp và gỡ bỏ các gói.

Chạy lệnh sau để cập nhật chỉ mục gói trong khi sửa các gói bị hỏng:

Mã nguồn [Chọn]
sudo apt update --fix-missing
Sử dụng tùy chọn -f hoặc --fix-broken để xác định và sửa các gói bị hỏng bằng cách cài đặt lại chúng từ kho chính thức.

Mã nguồn [Chọn]
sudo apt install -f
Sau khi cài đặt các gói bị hỏng, hãy cập nhật danh sách gói của bạn bằng cách chạy lệnh này:

Mã nguồn [Chọn]
sudo apt update
Nếu đầu ra không có lỗi nào thì bạn đã sửa được các gói bị hỏng.

Bạn cũng có thể sử dụng lệnh dpkg để phát hiện và sửa các gói bị hỏng. Để cấu hình lại mọi gói được cài đặt một phần bằng dpkg, hãy sử dụng:

Mã nguồn [Chọn]
sudo dpkg --configure -a
Ở đây, tùy chọn --configure yêu cầu dpkg định cấu hình một gói. Khi cài đặt gói không thành công, nó có thể khiến gói ở trạng thái chưa được định cấu hình. Tùy chọn này giúp giải quyết các vấn đề như vậy. Hơn nữa, tùy chọn -a là viết tắt của tất cả và được sử dụng để chọn tất cả các gói ở trạng thái chưa được định cấu hình, thay vì chỉ định một gói duy nhất.

Hãy bắt đầu grep với dpkg để xem danh sách các gói bị hỏng cần được cài đặt lại:

Mã nguồn [Chọn]
sudo dpkg -l | grep ^..r
Khi đã có danh sách các chương trình bị hỏng, bạn có thể xóa từng chương trình một bằng lệnh sau:

Mã nguồn [Chọn]
sudo dpkg --purge <package_name>
Ở đây, tùy chọn --purge yêu cầu dpkg xóa hoàn toàn gói, bao gồm cả các tệp cấu hình của nó. Sau khi xóa tất cả các gói bị hỏng, bạn cần dọn sạch bộ đệm của gói bằng cách sử dụng:

Mã nguồn [Chọn]
sudo apt clean
Cuối cùng, để cập nhật danh sách gói, hãy chạy:

Mã nguồn [Chọn]
sudo apt update
Nếu không có lỗi ở đầu ra, bạn đã sửa thành công tất cả các gói bị hỏng.

Đôi khi, trong khi sửa các gói bị hỏng, bạn gặp phải lỗi khóa dpkg. Lỗi này xảy ra khi bạn cố cài đặt một gói nhưng hệ thống cho rằng một cài đặt khác đang diễn ra. Đôi khi, nó xuất hiện ngay cả khi không có cài đặt nào khác đang diễn ra.

Để khắc phục, bạn có thể đợi mọi quá trình cài đặt đang diễn ra hoàn tất, kiểm tra các bản cập nhật tự động hoặc nếu cần, hãy tự mình cẩn thận gỡ bỏ tệp khóa. Để xóa tệp khóa, hãy chạy lệnh này:

Mã nguồn [Chọn]
sudo rm /var/lib/apt/lists/lock
Bạn cũng có thể xóa khóa bộ đệm bằng cách này:

Mã nguồn [Chọn]
sudo rm /var/cache/apt/archives/lock
Bằng cách xóa các tệp khóa này, bạn sẽ có thể sử dụng lại các lệnh quản lý gói mà không gặp bất kỳ sự cố nào.

2.2. Cài đặt lại các gói bị hỏng trên Fedora và RHEL

YUM và DNF rất hữu ích trong việc xử lý các gói bị hỏng nhưng sự cố vẫn có thể xảy ra do có số lượng lớn gói có trên hệ thống Linux. Tuy nhiên, bạn có thể khắc phục sự cố gói bị hỏng trên Fedora, CentOS và RHEL bằng cách sử dụng trình quản lý gói RPM.

Để xác định các sự cố tiềm ẩn, hãy xác minh tất cả các gói trên hệ thống của bạn bằng cờ -V :

Mã nguồn [Chọn]
sudo rpm -Va
Lệnh này kiểm tra siêu dữ liệu gói được lưu trữ trong cơ sở dữ liệu RPM để xác định mọi vấn đề với gói của bạn. Bạn cũng có thể giải quyết các sự cố gói bị hỏng bằng cách nâng cấp các gói đã cài đặt lên phiên bản mới nhất hiện có của chúng.

Mã nguồn [Chọn]
sudo dnf upgrade -b
Tùy chọn -b buộc DNF chỉ xem xét phiên bản mới nhất của gói.

Việc tìm thấy một gói bị hỏng trong số nhiều gói có thể khiến bạn nản lòng. Tuy nhiên, khi bạn đã xác định được một gói cụ thể bị hỏng, bạn có thể cài đặt lại gói đó bằng lệnh dnf sau:

Mã nguồn [Chọn]
sudo dnf --refresh reinstall <package_name>
Đảm bảo thay thế <package_name> bằng tên thực của gói bị hỏng.

Nếu bạn đang sử dụng YUM và gặp phải bất kỳ lỗi gói nào bị hỏng, hãy thử cài đặt lại tất cả các gói.

Mã nguồn [Chọn]
sudo yum reinstall \*
Thật không may, nếu việc cài đặt lại tất cả các gói không giải quyết được sự cố thì bạn có thể thử bỏ qua các gói bị hỏng.

Mã nguồn [Chọn]
sudo yum update --skip-broken
Nếu sự cố không được giải quyết sau khi làm theo tất cả các bước trên thì bạn có thể cần phải xóa gói bị hỏng và các gói phụ thuộc của nó:

Mã nguồn [Chọn]
sudo dnf remove packagename
2.3. Sửa các gói bị hỏng trên Arch Linux

Trên Arch Linux, bạn có thể dễ dàng phát hiện và sửa các gói bị hỏng bằng Pacman. Pacman có cờ -Qk để kiểm tra hệ thống xem có vấn đề về gói không. Bạn có thể nhận danh sách tất cả các gói hiện được cài đặt trên hệ thống của mình bằng cách sử dụng:

Mã nguồn [Chọn]
sudo pacman -Qk
Bạn có thể sử dụng danh sách này để kiểm tra phần mềm đã cài đặt, xác định các gói lỗi thời và theo dõi cấu hình hệ thống của mình. Tuy nhiên, để có danh sách tất cả các gói bị thiếu tệp, hãy chạy lệnh này:

Mã nguồn [Chọn]
sudo pacman -Qk 2>/dev/null | grep -v ' 0 missing files'
Khi bạn có danh sách các gói bị hỏng, bạn có thể cài đặt lại chúng. Bạn có thể thực hiện việc này một cách riêng lẻ bằng lệnh sau:

Mã nguồn [Chọn]
sudo pacman -S --force <package-name>
Bạn có thể sử dụng tùy chọn --force để ghi đè các gói hiện có. Pacman sẽ làm mới danh sách gói và cài đặt lại gói đã chỉ định, giải quyết mọi phần phụ thuộc bị hỏng trong quá trình thực hiện.

Bạn cũng có thể sửa các gói bị hỏng bằng cách cập nhật danh sách gói của hệ thống.

Mã nguồn [Chọn]
sudo pacman -Syu
3. Luôn sao lưu hệ thống của bạn

Lưu ý trước, việc sửa các gói bị hỏng sẽ không gây ảnh hưởng đến độ ổn định của hệ thống nhưng bạn nên sao lưu hệ thống trước khi thực hiện bất kỳ thay đổi nào. Để tránh các gói bị hỏng ngay từ đầu, bạn chỉ cần cập nhật danh sách gói của mình, cẩn thận khi cài đặt hoặc gỡ bỏ gói và sử dụng các tính năng an toàn của trình quản lý gói.