Tóm tắt: Cách sửa nhanh trong 30 giâyLỗi này thường xuất hiện khi cơ sở dữ liệu gói cục bộ của bạn bị lỗi thời hoặc kho lưu trữ cần thiết chưa được kích hoạt. Hầu hết người dùng có thể giải quyết vấn đề này bằng cách chạy ba lệnh sau theo thứ tự:
sudo apt update
sudo add-apt-repository universe
sudo apt update
sudo apt install python3-pip
Điều gì thực sự đang xảy ra?Khi Ubuntu báo lỗi no installation candidate, hệ thống đang thông báo rằng apt có biết về gói này nhưng không thể tìm thấy liên kết tải xuống hợp lệ cho nó. Hãy tưởng tượng nó giống như một danh mục thư viện liệt kê tên sách, nhưng mọi giá sách trong tòa nhà đều trống rỗng.
Tôi thường thấy lỗi này trên các thiết lập WSL2 mới, các container Docker tối giản hoặc các máy chủ VPS đám mây đã lâu không hoạt động. Có một số yếu tố phổ biến dẫn đến tình trạng này:
- Bộ nhớ đệm lỗi thời (Stale Cache): Hệ thống của bạn đang tìm kiếm các phiên bản tệp không còn tồn tại trên các máy chủ sao lưu (mirrors).- Kho lưu trữ bị ẩn (Hidden Repositories): Gói phần mềm nằm trong kho 'Universe', vốn thường bị tắt trên các bản cài đặt tối giản để tiết kiệm dung lượng.- Sai lệch phiên bản (Version Mismatch): Bạn có thể đang tìm kiếm
python-pip(phiên bản Python 2 cũ) thay vìpython3-pip.- Hết vòng đời hỗ trợ (End of Life - EOL): Bạn đang chạy một bản phát hành cũ như Ubuntu 21.10 mà các máy chủ chính thức không còn lưu trữ.## Giải pháp từng bước### 1. Làm mới danh mục góiNgay cả khi bạn vừa chạy lệnh cập nhật cách đây một giờ, hãy thực hiện lại. Các máy chủ mirror thay đổi thường xuyên. Lệnh này buộc hệ thống của bạn tải xuống danh sách phần mềm mới nhất từ máy chủ của Ubuntu.
sudo apt update
Hãy chú ý theo dõi terminal. Nếu bạn thấy các dòng bắt đầu bằng "Err" hoặc "W:" (Warnings), có khả năng bạn đang gặp vấn đề về mạng hoặc khóa bảo mật hết hạn thay vì thiếu gói phần mềm. Hãy xử lý những lỗi đó trước.
2. Kích hoạt kho lưu trữ UniverseCác công cụ tiêu chuẩn như python3-pip, htop, và ffmpeg không nằm trong kho lưu trữ "Main". Chúng nằm trong Universe, một phân tầng do cộng đồng duy trì. Trong các môi trường tối giản—đặc biệt là Docker—kho này thường bị tắt theo mặc định.
Kích hoạt nó bằng lệnh sau:
sudo add-apt-repository universe
sudo apt update
Nếu hệ thống của bạn báo add-apt-repository: command not found, nghĩa là bạn đang thiếu một gói hỗ trợ nhỏ (khoảng 10MB). Hãy cài đặt nó trước:
sudo apt update && sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update
3. Xác nhận chính xác tên góiLỗi đánh máy là kẻ sát nhân thầm lặng đối với năng suất. Linux phân biệt chữ hoa chữ thường và quy ước đặt tên đã thay đổi giữa Python 2 và 3. Hãy sử dụng công cụ tìm kiếm để xem chính xác những gì có sẵn trong kho lưu trữ hiện tại của bạn:
apt-cache search pip | grep python3
Nếu python3-pip không xuất hiện trong kết quả, chắc chắn kho lưu trữ của bạn đang bị cấu hình sai.
4. Sửa tệp sources.listNếu vẫn gặp bế tắc, tệp sources.list của bạn có thể đang trống hoặc trỏ đến các URL sai. Hãy mở nó bằng trình soạn thảo văn bản:
sudo nano /etc/apt/sources.list
Đối với hệ thống Ubuntu 22.04 (Jammy Jellyfish) tiêu chuẩn, bạn sẽ thấy các dòng trông như thế này:
deb http://archive.ubuntu.com/ubuntu/ jammy main universe restricted multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-updates main universe restricted multiverse
deb http://security.ubuntu.com/ubuntu/ jammy-security main universe restricted multiverse
Nếu tệp của bạn trông hoàn toàn khác, hãy thay thế mã tên (ví dụ: "jammy" hoặc "noble") bằng phiên bản cụ thể của bạn. Bạn có thể tìm mã tên bằng cách chạy lệnh lsb_release -c.
Cách xác minh kết quảTrước khi chạy bản cài đặt đầy đủ hơn 150MB, hãy kiểm tra xem apt hiện đã thấy ứng cử viên hợp lệ chưa:
apt-cache policy python3-pip
Kết quả thành công sẽ trông như thế này:
python3-pip:
Installed: (none)
Candidate: 22.0.2+dfsg-1ubuntu0.5
Version table:
22.0.2+dfsg-1ubuntu0.5 500
500 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages
Nếu dòng "Candidate" hiển thị một số phiên bản thay vì "(none)", bạn đã sẵn sàng. Hãy tiến hành cài đặt:
sudo apt install python3-pip

