Cách Sửa Lỗi 404 Not Found Khi Nâng Cấp apt-get trên Debian
Lỗi “404 Not Found” trong quá trình nâng cấp xảy ra khi hệ thống của bạn cố gắng tải xuống các gói từ các nguồn kho lưu trữ không còn tồn tại hoặc đã bị di chuyển, điều này thường xảy ra với các phiên bản Debian cũ đã hết vòng đời và các gói của chúng đã được chuyển đến các máy chủ lưu trữ.
Vì Debian duy trì chu kỳ phát hành nghiêm ngặt, các phiên bản cũ sẽ cuối cùng được chuyển từ các mirror đang hoạt động sang lưu trữ kho lưu trữ chuyên dụng. Khi điều này xảy ra, cấu hình kho hiện tại của bạn trở nên lỗi thời và các thao tác của trình quản lý gói sẽ thất bại.
Hiểu về lỗi 404 trong quá trình nâng cấp
Khi bạn chạy apt-get update hoặc apt-get upgrade, hệ thống sẽ đọc danh sách nguồn từ /etc/apt/sources.list và cố gắng lấy thông tin gói từ các URL được chỉ định ở đó. Nếu các URL đó trỏ tới các kho lưu trữ đã bị di chuyển hoặc xóa, bạn sẽ nhận được lỗi 404.
Giải pháp bao gồm việc cập nhật danh sách nguồn của bạn để trỏ đến các vị trí kho lưu trữ chính xác. Vì các phiên bản Debian khác nhau yêu cầu các URL kho lưu trữ khác nhau, trước tiên chúng ta sẽ xác định phiên bản hiện tại của bạn, sau đó chỉnh sửa cấu hình cho phù hợp.
Kiểm tra Phiên bản Debian của Bạn
Trước khi thực hiện bất kỳ thay đổi nào, bạn cần xác định phiên bản Debian mà bạn đang sử dụng.
lsb_release -a
Lệnh trên hiển thị thông tin phân phối của bạn, bao gồm số phát hành và tên mã.
- Bookworm → Debian 12
- Bullseye → Debian 11
- Buster → Debian 10
Ghi chú lại biệt danh của bạn, vì bạn sẽ cần nó trong các bước tiếp theo.
Sao lưu cấu hình tệp nguồn
Vì bạn sẽ chỉnh sửa các tệp hệ thống, việc tạo bản sao lưu sẽ đảm bảo bạn có thể khôi phục cấu hình gốc nếu cần.
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
Điều này sẽ tạo một bản sao của danh sách nguồn của bạn trong cùng thư mục, nếu có gì đó sai, bạn có thể khôi phục nó bằng cách đảo ngược nguồn và đích trong lệnh trên.
Đang cập nhật nguồn kho lưu trữ
Tiếp theo, bạn cần chỉnh sửa danh sách nguồn của mình để trỏ đến các kho lưu trữ đúng. Đối với các bản phát hành Debian cũ đã hết tuổi thọ, bạn phải chuyển sang các máy chủ lưu trữ.
Mở tệp bằng trình soạn thảo văn bản:
sudo nano /etc/apt/sources.list
Dành cho các phiên bản Debian đã hết hỗ trợ
Nếu phiên bản Debian của bạn không còn được hỗ trợ (ví dụ: Jessie, Stretch hoặc cũ hơn), hãy thay thế nội dung tệp bằng:
deb http://archive.debian.org/debian/ CODENAME main contrib non-free
deb http://archive.debian.org/debian-security/ CODENAME/updates main contrib non-free
Thay CODENAME bằng tên mã Debian của bạn (ví dụ, stretch cho Debian 9).
Đối với các phiên bản hiện được hỗ trợ
Nếu phiên bản Debian của bạn vẫn được hỗ trợ nhưng bạn gặp lỗi 404 (vấn đề với mirror), hãy sử dụng các kho lưu trữ Debian chính thay vào đó:
deb http://deb.debian.org/debian/ CODENAME main contrib non-free
deb http://deb.debian.org/debian/ CODENAME-updates main contrib non-free
deb http://security.debian.org/debian-security CODENAME-security main contrib non-free
Thay thế CODENAME bằng phiên bản của bạn:
- Debian 12 → bookworm
- Debian 11 → bullseye
- Debian 10 → buster
Sau khi thực hiện các thay đổi này, lưu file bằng cách nhấn Ctrl+O, sau đó Enter, và thoát bằng Ctrl+X.
Xử lý xác thực kho lưu trữ
Các kho lưu trữ lưu trữ cho các phiên bản Debian cuối đời không nhận được các bản cập nhật bảo mật, có nghĩa là các tệp phát hành của chúng không còn được ký bằng khóa hợp lệ. Để ngăn lệnh apt bị lỗi do chữ ký hết hạn, bạn cần tắt kiểm tra xác thực cho các kho lưu trữ này.
Mở hoặc tạo tệp cấu hình sau:
sudo nano /etc/apt/apt.conf.d/99allow-unauthenticated
Thêm dòng đơn này:
Acquire::Check-Valid-Until "false";
Cài đặt này cho apt biết bỏ qua khoảng thời gian hiệu lực của các tệp phát hành, điều này cần thiết cho các kho lưu trữ đã lưu trữ mà không còn nhận các bản cập nhật.
Đang cập nhật thông tin gói
Với các nguồn kho lưu trữ của bạn hiện đã được cấu hình đúng cách, hãy cập nhật danh sách gói của bạn, việc này sẽ lấy thông tin gói mới nhất từ các kho lưu trữ vừa được cấu hình. Nếu mọi thứ được thiết lập đúng, quá trình này sẽ hoàn tất mà không gặp lỗi 404 nào.
sudo apt-get update
Khi danh sách gói của bạn được cập nhật, bạn có thể nâng cấp các gói đã cài đặt, việc này sẽ tải xuống và cài đặt các bản cập nhật có sẵn cho hệ thống hiện tại của bạn. Đối với các phiên bản lưu trữ, bạn có thể nhận thấy rằng ít hoặc không có gói nào được nâng cấp vì chúng không còn nhận được cập nhật.
sudo apt-get upgrade
Xem xét Nâng cấp Phân phối
Mặc dù việc sửa các lỗi 404 cho phép hệ thống hiện tại của bạn hoạt động, việc sử dụng phiên bản Debian đã hết hỗ trợ có nghĩa là bạn sẽ không còn nhận được các bản cập nhật bảo mật, điều này gây ra rủi ro đáng kể trong môi trường sản xuất hoặc khi trực tiếp kết nối với Internet.
Bạn nên cân nhắc nâng cấp lên phiên bản Debian hiện đang được hỗ trợ.
sudo apt-get dist-upgrade
Tuy nhiên, nâng cấp giữa các phiên bản Debian lớn đòi hỏi phải lập kế hoạch cẩn thận và không nên thực hiện một cách tùy tiện, vì điều này có thể làm hỏng các cấu hình hiện có hoặc phần mềm đã cài đặt. Hãy tham khảo các ghi chú phát hành chính thức của Debian cho phiên bản mục tiêu của bạn trước khi thử nâng cấp lớn.
Tóm tắt
Lỗi 404 trong quá trình apt-get upgrade xuất phát từ các URL kho lưu trữ lỗi thời trong cấu hình nguồn của bạn. Bằng cách xác định phiên bản Debian của bạn, cập nhật danh sách nguồn để trỏ đến các kho lưu trữ phù hợp và điều chỉnh các cài đặt xác thực, bạn có thể khôi phục chức năng quản lý gói.
Vì việc chạy các phiên bản không được hỗ trợ có những rủi ro về bảo mật, việc lên kế hoạch nâng cấp lên phiên bản Debian hiện tại vẫn là giải pháp dài hạn được khuyến nghị.