Hướng Dẫn Tạo Kho RPM Tùy Chỉnh Trên Linux

Hướng Dẫn Tạo Kho RPM Tùy Chỉnh Trên Linux

RPM (RPM Package Manager) là công cụ quản lý gói phần mềm cấp thấp được sử dụng phổ biến trên các bản phân phối Linux thuộc hệ sinh thái Red Hat, bao gồm Fedora, Red Hat Enterprise Linux (RHEL) và các bản dẫn xuất như AlmaLinux hoặc Rocky Linux.

Để quản trị hệ thống Linux hiệu quả, việc tạo kho RPM tùy chỉnh là kỹ năng quan trọng. Nếu bạn đang tìm kiếm giải pháp lưu trữ mạnh mẽ, VPS Việt Nam từ DataOnline cung cấp Cloud VPS tốc độ cao, bảo mật vượt trội, giúp tối ưu hóa quá trình triển khai và quản lý kho phần mềm.

Các gói có định dạng .rpm chứa phần mềm được đóng gói sẵn để triển khai thông qua hệ thống quản lý gói RPM, và thường được phân phối thông qua các kho phần mềm (software repositories). Trong hướng dẫn này, bạn sẽ được học cách tạo kho RPM tùy chỉnh (custom RPM repository) và cấu hình hệ thống để sử dụng kho này như một nguồn cài đặt phần mềm, phục vụ nhu cầu triển khai nội bộ hoặc phân phối phần mềm riêng.

Trong bài hướng dẫn này, bạn sẽ học được:

● Cách tạo một kho rpm
● Cách sử dụng kho này làm nguồn phần mềm

Yêu cầu phần mềm và quy ước sử dụng

Danh mục Yêu cầu, Quy ước hoặc Phiên bản Phần mềm Sử dụng
Hệ thống: Bất kỳ bản phân phối nào thuộc họ Red Hat
Phần mềm: dnfcreaterepo
Yêu cầu khác: Quyền quản trị (Administrative privileges) để cấu hình kho

Quy ước:

  • Dấu # – Yêu cầu các lệnh Linux được thực thi với quyền root (trực tiếp dưới quyền root hoặc thông qua lệnh sudo).
  • Dấu $ – Yêu cầu các lệnh Linux được thực thi dưới quyền người dùng thường (non-privileged user).

Cài đặt phần mềm

Trong bài hướng dẫn này, chúng ta sẽ tạo kho rpm tùy chỉnh trên một máy cục bộ với địa chỉ IP 192.168.0.39 sử dụng làm máy chủ HTTP. Trên máy này, điều đầu tiên bạn cần làm là cài đặt gói createrepo. Lưu ý rằng, hệ thống trên máy chủ từ xa không nhất thiết phải là bản phân phối dựa trên rpm, miễn là gói này có sẵn. Ví dụ, trên máy chủ của chúng ta, hệ thống được cài đặt là Debian. Do đó, để cài đặt gói, hãy chạy lệnh sau:

$ sudo apt-get update && sudo apt-get install createrepo

Như đã nói, trong ví dụ cụ thể này, chúng ta mong muốn phần mềm được lưu trữ trên kho rpm tùy chỉnh có thể truy cập được thông qua giao thức HTTP, vì vậy cần cài đặt một máy chủ HTTP; trong trường hợp này, chúng ta sẽ sử dụng Apache. Trên Debian, việc cài đặt Apache chỉ cần chạy lệnh:

$ sudo apt-get install apache2

Sau khi các gói được cài đặt, bạn có thể tiến hành tạo kho rpm theo vài bước đơn giản dưới đây.

Tạo kho RPM

Khi Apache được cài đặt trên Debian, thư mục DocumentRoot của VirtualHost mặc định được tạo ra là /var/www/html. Tại thời điểm này, bạn có thể chọn tạo một VirtualHost riêng cho kho của mình, hoặc đơn giản tạo thư mục kho bên trong thư mục mặc định. Vì tính đơn giản, trong bài hướng dẫn này chúng ta sẽ chọn phương án thứ hai:

$ sudo mkdir /var/www/html/repo

Thư mục repo vừa được tạo, nằm trong DocumentRoot mặc định của VirtualHost, sẽ chứa các gói của bạn và là cơ sở của kho. Để cấu trúc kho hợp lý hơn, chúng ta tiến hành tạo các thư mục con được đặt tên theo bản phân phối, phiên bản của nó và kiến trúc của các gói phần mềm sẽ được cung cấp. Giả sử, bạn muốn sử dụng kho trên hệ thống Fedora 33 x86_64, hãy chạy lệnh sau:

$ sudo mkdir -p /var/www/html/repo/fedora/releases/33/x86_64

Bước tiếp theo là đưa các gói cần cung cấp vào kho. Tất cả những gì bạn cần làm là sao chép các gói phần mềm vào đúng thư mục kho tương ứng. Ví dụ, tôi sẽ đưa một gói phần mềm được tạo từ việc biên dịch mã nguồn của trình soạn thảo VSCode, gói có tên code-1.56.0-1617183449.el8.x86_64.rpm. Sau khi sao chép, cấu trúc thư mục của bạn sẽ trông như sau:

repo
└── fedora
    └── releases
        └── 33
            └── x86_64
                └── code-1.56.0-1617183449.el8.x86_64.rpm

Với kho của bạn đã có nội dung, chỉ còn việc chạy lệnh createrepo trong thư mục chứa các gói để tạo metadata cho kho. Trong trường hợp này, hãy chạy:

$ sudo createrepo /var/www/html/repo/fedora/releases/33/x86_64

Lệnh này sẽ tạo các metadata của kho bên trong một thư mục có tên repodata, dựa trên các gói có trong thư mục đích. Lệnh này cần được chạy lại mỗi khi bạn cập nhật thêm gói mới hoặc xóa các gói cũ. Sau khi lệnh được thực thi, cấu trúc thư mục của bạn sẽ trông như sau:

repo
└── fedora
    └── releases
        └── 33
            └── x86_64
                ├── code-1.56.0-1617183449.el8.x86_64.rpm
                └── repodata
                    ├── 22ab1d1d123bb7d7cde556bf8a8ac4daf9cdb75572f40ebdd2f399908cb7f6b9-other.xml.gz
                    ├── 26ed9b63868b2e0263dfa817e21921c4e7542c1be9f6b7875381bba6bd78d1c6-primary.sqlite.bz2
                    ├── 50fc300a761812761cf9a8413a619da23cf336d49999753568ce19a97c025d44-other.sqlite.bz2
                    ├── a523f54b5fcd0720c182969f991f51e125728a361f31237725dc9418d5e126ea-primary.xml.gz
                    ├── af2fa9ea5deaffca5ffc9f3e524155defa8cfa5656962845a45c8b0e984f3e19-filelists.sqlite.bz2
                    ├── f95849cf860f1184b97d30000ea1f9f1c35edd6d625dcd387453187510dd4a18-filelists.xml.gz
                    └── repomd.xml

Kho của bạn đã được tạo thành công. Bước tiếp theo là cấu hình hệ thống của bạn để sử dụng kho này như một nguồn cài đặt phần mềm.

Thêm kho làm nguồn phần mềm

Chuyển sang hệ thống thuộc bản phân phối dựa trên rpm và cùng cấu hình nó để sử dụng kho tùy chỉnh vừa tạo làm nguồn phần mềm. Các file cấu hình kho được lưu trong thư mục /etc/yum.repos.d và phải có phần mở rộng là .repo. Khi liệt kê nội dung trong thư mục này, bạn sẽ thấy những file cấu hình đã có sẵn, ví dụ:

$ ls /etc/yum/repos.d
fedora-cisco-openh264.repo   fedora-updates-testing-modular.repo
fedora-modular.repo          fedora-updates-testing.repo
fedora.repo                  rpmfusion-free.repo
fedora-updates-modular.repo  rpmfusion-free-updates.repo
fedora-updates.repo          rpmfusion-free-updates-testing.repo

Bây giờ, hãy tạo file cấu hình kho tùy chỉnh của bạn. Ít nhất, file này phải chứa các thông tin sau:

● ID của kho
● Tên của kho
● URL gốc (baseurl) của kho
● Trạng thái kích hoạt của kho
● Cài đặt xác nhận chữ ký GPG cho các gói hay không

Chúng ta sẽ lưu thông tin này vào một file có tên ownrepo.repo với nội dung như sau:

[ownrepo]
name=Own repository
baseurl=http://192.168.0.39/repo/fedora/releases/$releasever/$basearch
enabled=1
gpgcheck=0
  • Phần định nghĩa trong ngoặc vuông [ownrepo] là Repository ID và cần phải là duy nhất trong tất cả các định nghĩa kho.
  • Khóa name cung cấp tên dễ đọc của kho dưới dạng chuỗi ký tự. Đây là tùy chọn; nếu không cung cấp tên, Repository ID sẽ được dùng thay thế.
  • Khóa baseurl chỉ định danh sách các URL cho kho, các URL này phải được phân cách nhau bằng khoảng trắng hoặc dấu phẩy. Trong ví dụ của chúng ta chỉ dùng một URL, nhưng bạn có thể thấy có sử dụng hai biến:
    • $releasever: biến này sẽ được mở rộng thành phiên bản phát hành của hệ điều hành, trong trường hợp này là 33, vì chúng ta cài đặt kho trên hệ thống Fedora 33.
    • $basearch: biến này sẽ được thay thế bằng chuỗi đại diện cho kiến trúc cơ bản của hệ thống, ví dụ x86_64.
  • Khóa enabled yêu cầu giá trị boolean để xác định xem kho có được kích hoạt hay không.
  • Khóa gpgcheck cũng yêu cầu giá trị boolean, dùng để xác định có kiểm tra chữ ký GPG của các gói hay không. Trong ví dụ này, chúng ta tắt việc kiểm tra vì kho chỉ dành cho mục đích cá nhân.

Sau khi cấu hình xong, bạn có thể kiểm tra bằng cách cài đặt gói code từ kho này chỉ bằng cách chạy:

$ sudo dnf install code
Own repository                                                                    451 kB/s |  13 kB     00:00
Dependencies resolved.
==================================================================================================================
 Package              Architecture           Version                                Repository               Size
==================================================================================================================
Installing:
 code                 x86_64                 1.56.0-1617183449.el8                  ownrepo                 100 M

Transaction Summary
==================================================================================================================
Install  1 Package

Total download size: 100 M
Installed size: 294 M
Is this ok [y/N]:

Sau khi bạn xác nhận bằng cách nhập “y”, gói code sẽ được cài đặt trên hệ thống của bạn.

Kết luận

Sau khi thiết lập kho RPM, bạn cần một nền tảng đáng tin cậy để triển khai. Thuê máy chủ VPS tại DataOnline mang đến hạ tầng mạnh mẽ, hỗ trợ kỹ thuật 24/7, giúp bạn dễ dàng quản lý và tối ưu hóa hệ thống Linux, đảm bảo hiệu suất cao cho mọi dự án.

Qua bài viết này, bạn đã được hướng dẫn chi tiết cách thiết lập kho RPM tùy chỉnh một cách dễ dàng bằng công cụ createrepo – công cụ mạnh mẽ giúp tạo metadata cho repository. Bên cạnh đó, chúng ta cũng đã tìm hiểu cách tạo file cấu hình DNF (.repo) để hệ thống Linux có thể nhận diện và sử dụng kho tự tạo như một nguồn phần mềm chính thức, giúp triển khai và phân phối ứng dụng nhanh chóng, hiệu quả hơn trong môi trường nội bộ hoặc doanh nghiệp.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *