CentOS 7 ‘đắp chiếu’: Cách hồi sinh lệnh Yum khi Mirrorlist chính thức sập

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

Lỗi Mirrorlist: Khi CentOS 7 chính thức “nghỉ hưu”

Nếu anh em đang quản trị VPS chạy CentOS 7, chắc hẳn dạo gần đây sẽ thấy cực kỳ ức chế. Cứ gõ yum update hay yum install là màn hình lại hiện thông báo lỗi: “Could not retrieve mirrorlist http://mirrorlist.centos.org…”.

Ngày 30/06/2024 là cột mốc CentOS 7 chính thức End of Life (EOL). Các mirror (máy chủ nhân bản) chính thức đã bị gỡ bỏ sạch sẽ. Điều này khiến trình quản lý gói yum hoàn toàn mất phương hướng. Bạn sẽ không thể cài thêm bất kỳ công cụ cơ bản nào như vim, wget hay git nếu không xử lý lỗi này.

Chuyện là hồi tháng 7, mình có xử lý một ca server web của khách hàng bị treo. Server vẫn ping thông, mạng ổn định nhưng không tài nào cài nổi Nginx. Sau khi check, mình thấy toàn bộ file repo vẫn trỏ về các mirrorlist đã “chết”. Mình đã áp dụng giải pháp dưới đây cho hơn 10 server và tất cả đều hoạt động ổn định trở lại ngay lập tức.

Tại sao hệ thống của bạn lại báo lỗi?

Trước đây, script mirrorlist sẽ tự động tìm server gần bạn nhất để tải gói. Khi dự án kết thúc, đội ngũ CentOS đã dọn toàn bộ các gói cài đặt cũ vào một kho lưu trữ gọi là Vault (vault.centos.org).

Hãy tưởng tượng Vault giống như một kho chứa đồ cũ. Các phần mềm vẫn nằm đó nhưng không còn được cập nhật bản vá bảo mật. Ngặt nỗi, file cấu hình trong máy bạn lại không tự động chuyển hướng sang kho này. Muốn tiếp tục dùng, chúng ta phải tự tay “chỉ đường” cho yum tìm vào kho Vault.

3 bước cấu hình Repo CentOS 7 sang Vault

Dưới đây là quy trình xử lý nhanh gọn để hồi sinh trình quản lý gói trên hệ thống của bạn.

Bước 1: Sao lưu cấu hình cũ để phòng thân

Trước khi can thiệp hệ thống, mình luôn ưu tiên việc backup. Nếu lỡ tay gõ nhầm lệnh sed, bạn vẫn có đường lui để làm lại từ đầu.

mkdir /etc/yum.repos.d/backup
cp /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/

Bước 2: Chuyển hướng Repo sang Vault bằng lệnh sed

Thay vì ngồi sửa từng file bằng vi rất mất thời gian, mình thường dùng lệnh sed để thay thế hàng loạt. Bạn cần vô hiệu hóa mirrorlist và trỏ baseurl về server vault.centos.org.

Hãy copy và chạy lần lượt các lệnh sau với quyền root:

# Vô hiệu hóa mirrorlist cũ
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*.repo

# Chuyển baseurl sang địa chỉ vault
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repo

Đôi khi một số bản cài đặt dùng giao thức https hoặc có cấu hình khác biệt. Nếu các lệnh trên chưa hiệu quả, bạn hãy thử dùng lệnh tổng quát này:

sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/CentOS-*.repo

Bước 3: Làm sạch Cache và kiểm tra

Cuối cùng, bạn cần xóa sạch cache cũ để yum nhận diện đường dẫn mới từ Vault.

yum clean all
yum makecache

Nếu màn hình hiện thông báo “Metadata Cache Created”, nghĩa là bạn đã thành công. Giờ thì thử cài một gói bất kỳ để tận hưởng thành quả nhé.

Đừng quên xử lý lỗi với EPEL Repo

Rất nhiều anh em dùng CentOS 7 cài thêm kho EPEL để có các gói phần mềm mở rộng. Tương tự repo chính, EPEL cho CentOS 7 cũng đã bị đẩy vào kho lưu trữ (archive).

Để sửa lỗi EPEL, bạn chạy tổ hợp lệnh sau:

sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/epel*.repo
sed -i 's|#baseurl=https://download.fedoraproject.org/pub/epel/|baseurl=https://archives.fedoraproject.org/pub/archive/epel/|g' /etc/yum.repos.d/epel*.repo

Lời khuyên: Đã đến lúc tính đường “nhảy tàu”

Việc trỏ repo về Vault chỉ là giải pháp tình thế để duy trì hệ thống cũ. Dưới góc độ vận hành, mình khuyên anh em không nên dùng CentOS 7 cho các dự án quan trọng nữa.

  • Rủi ro bảo mật: Không còn bản vá (patch), server của bạn sẽ cực kỳ mong manh trước các lỗ hổng mới.
  • Phần mềm lỗi thời: Các phiên bản PHP 8.x hay MySQL mới nhất sẽ dần ngừng hỗ trợ hệ điều hành này.
  • Cloud khai tử: Các ông lớn như AWS hay Google Cloud cũng đang dần loại bỏ template CentOS 7 khỏi danh mục.

Lộ trình tốt nhất là chuyển đổi sang AlmaLinux 9 hoặc Rocky Linux 9. Hai hệ điều hành này có cấu trúc tương đồng 1:1 với RHEL, giúp việc migrate code và script vận hành diễn ra mượt mà nhất.

Kết luận

Lỗi mirrorlist thực tế chỉ là thông báo nhắc nhở rằng CentOS 7 đã hoàn thành sứ mệnh của nó. Bằng cách chuyển sang vault.centos.org, bạn có thể tạm thời cài đặt phần mềm như bình thường. Tuy nhiên, hãy tranh thủ thời gian này để lập kế hoạch nâng cấp hệ thống nhằm đảm bảo an toàn về lâu dài.

Share: