RPM Package Manager (hay Red Hat Package Manager) là những dạng gói phần mềm được sử dụng cho các hệ điều hành họ RedHat (như CentOS, Fedora, Red Hat, ..), thường được kết thúc bằng đuôi .rpm. Bài viết sẽ hướng dẫn người đọc cách download và cài đặt các gói RPM khi offline.

Thuật ngữ "offline" mà chúng ta đang sử dụng gồm nhiều định nghĩa, nhưng lại có chung một kết quả là làm cho chúng ta không thể hoặc khó khăn khi cài đặt các phần mềm qua Internet (bằng yum), ví dụ:

  • Network chập chờn.
  • Mất kết nối.
  • Network bị chặn quốc tế.
  • Không phân giải được DNS.
  • ... vân vân và mây mây

Khi một trong những điều trên xảy ra, thì vô tình chúng ta phải nghĩ đến một cách nào đó để giải quyết vấn đề này như là "làm sao để cài đặt các gói này bằng mạng local?", hay là "làm thế nào để cài đặt khi offline?".

May mắn là phía Red Hat có hỗ trợ cho chúng ta cách cài đặt như thế này.

Download và tạo gói RPM tương ứng

Trong bước này, Red Hat cho phép chúng ta download 1 gói phần mềm và các gói thư viện tương ứng về, và đặc biệt là đã đóng gói sẵn ở dạng RPM rồi nên chúng ta không cần phải thao tác thêm gì nhiều nữa.

Nhưng lưu ý ở chỗ, khi thao tác bước này thì phải có mạng trước đã, việc thực hiện bước này chỉ là để lưu và dự trữ gói RPM cần thiết để cài đặt sau này (khổ trước sướng sau).

Sử dụng lệnh sau để tải gói RPM tương ứng.

yum install --downloadonly --downloaddir=<directory> <package>

Trong đó:

  • directory: là folder chứa các gói RPM mà yum tải về.
  • package: là tên gói tương ứng mà ta cần lưu lại.

Ở đây, ta sẽ sử dụng gói Python 3.6 làm ví dụ.

# yum install --downloadonly --downloaddir=/root/ python36u

Sau khi tải hoàn tất thì sẽ xuất hiện thông báo.

-----------------------------------------------------------------
Total                                                                                   971 kB/s | 4.2 MB  00:00:04     
exiting because "Download Only" specified

Kiểm tra gói chính và các gói phụ (thư viện) đã được tải về.

# ls /root/ | grep .rpm
python36-3.6.8-2.el7.ius.x86_64.rpm
python36-libs-3.6.8-2.el7.ius.x86_64.rpm

Cài đặt các gói ở trong môi trường Offline

Trong bước này, chúng ta sẽ bắt đầu cài đặt các gói trong môi trường "mạng mẽo chán òm" với các gói đã tải ở bước trên.

Sử dụng lệnh sau để cài các gói ở trong môi trường offline.

cd <directory>
rpm -ivh *.rpm

Trong đó:

  • directory: là folder chứa các gói RPM.
  • -i: - install - Option cài đặt.
  • -v: - verbose - In ra output khi cài đặt.
  • -h: - hash.

Lưu ý: Các gói thư viện phải để cùng cấp với gói chính để rpm tự tìm kiếm các gói liên quan của gói chính.

Ở ví dụ này, mình sẽ giả lập môi trường DNS không phân giải được.

# ping google.com
ping: google.com: Temporary failure in name resolution

Ta sẽ sử dụng lại Python 3.6 để cài đặt như ví dụ ở bước trên.

cd /root/
# rpm -ivh *.rpm

Nếu cài đặt thành công sẽ hiển thị kết quả như sau:

warning: python36-3.6.8-2.el7.ius.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 4b274df2: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:python36-libs-3.6.8-2.el7.ius    ################################# [ 50%]
   2:python36-3.6.8-2.el7.ius         ################################# [100%]

Ta thấy RPM sẽ tự kiểm tra ra đâu là gói chính và đâu là các gói thư viện ở giữa các gói rpm này.

Kiểm tra lại xem Python 3 đã được cài chưa:

# python3 -V
Python 3.6.8

Leave a Reply

Your email address will not be published. Required fields are marked *