Cách cài đặt tệp RPM trong Linux

Tác giả sysadmin, T.M.Hai 20, 2022, 05:12:14 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách cài đặt tệp RPM trong Linux


Các tệp RPM tồn tại để giúp quá trình cài đặt và nâng cấp phần mềm dễ dàng hơn. Chúng cho phép chúng tôi chỉ cần sử dụng tệp RPM để cài đặt gói phần mềm và khi được kết hợp với các trình quản lý gói như Yum hoặc DNF, chúng tôi cũng sẽ dễ dàng tải xuống và cài đặt tất cả các phụ thuộc cần thiết.

Không phải tất cả các bản phân phối của Linux đều hỗ trợ RPM. Nói chung, các tệp RPM được sử dụng trong các bản phân phối dựa trên RHEL, chẳng hạn như CentOS và Fedora, tuy nhiên, nó cũng đã được chuyển sang nơi khác. Nếu bạn thấy rằng bản phân phối của mình không hỗ trợ cài đặt tệp RPM, bạn có thể cần xem xét các tùy chọn khác chẳng hạn như tệp.deb trong Ubuntu/Debian.

Nếu bạn đã tải xuống tệp RPM từ Internet, bạn có thể sử dụng một số công cụ để cài đặt tệp đó. Cá nhân tôi thích sử dụng Yum/DNF hơn, chúng hoạt động giống như giao diện người dùng cho lệnh RPM và sẽ duy trì cơ sở dữ liệu cập nhật về các gói phụ thuộc.

1. Cài đặt tệp RPM với Yum

Thông thường, khi cài đặt gói từ kho lưu trữ bằng lệnh yum, bạn sẽ chạy 'yum install httpd' và nó sẽ chỉ tải xuống tệp RPM được yêu cầu từ kho lưu trữ đã định cấu hình. Thay vào đó, chúng tôi có thể sử dụng 'yum install file.rpm' và chỉ định tệp RPM cục bộ mà chúng tôi phải cài đặt.

Mã nguồn [Chọn]
[root@centos7 ~]# yum instsall httpd-2.4.6-45.el7.centos.x86_64.rpm
Loaded plugins: fastestmirror, langpacks
Examining httpd-2.4.6-45.el7.centos.x86_64.rpm: httpd-2.4.6-45.el7.centos.x86_64
Marking httpd-2.4.6-45.el7.centos.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed
--> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package: httpd-2.4.6-45.el7.centos.x86_64
Loading mirror speeds from cached hostfile
 * base: centos.mirror.serversaustralia.com.au
 * extras: ftp.swin.edu.au
 * updates: centos.mirror.serversaustralia.com.au
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-45.el7.centos.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-45.el7.centos.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-45.el7.centos.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.4.8-3.el7 will be installed
---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================================
 Package         Arch       Version                    Repository                             Size
===================================================================================================
Installing:
 httpd           x86_64     2.4.6-45.el7.centos        /httpd-2.4.6-45.el7.centos.x86_64     9.4 M
Installing for dependencies:
 apr             x86_64     1.4.8-3.el7                base                                  103 k
 apr-util        x86_64     1.5.2-6.el7                base                                   92 k
 httpd-tools     x86_64     2.4.6-45.el7.centos        base                                   84 k
 mailcap         noarch     2.1.41-2.el7               base                                   31 k

Transaction Summary
===================================================================================================
Install  1 Package (+4 Dependent packages)

Total size: 9.7 M
Total download size: 309 k
Installed size: 10 M
Is this ok [y/d/N]: y
Downloading packages:
(1/4): apr-1.4.8-3.el7.x86_64.rpm                              | 103 kB  00:00:00
(2/4): mailcap-2.1.41-2.el7.noarch.rpm                         |  31 kB  00:00:00
(3/4): httpd-tools-2.4.6-45.el7.centos.x86_64.rpm              |  84 kB  00:00:00
(4/4): apr-util-1.5.2-6.el7.x86_64.rpm                         |  92 kB  00:00:00
---------------------------------------------------------------------------------
Total                                                 247 kB/s | 309 kB  00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : apr-1.4.8-3.el7.x86_64                           1/5
  Installing : apr-util-1.5.2-6.el7.x86_64                      2/5
  Installing : httpd-tools-2.4.6-45.el7.centos.x86_64           3/5
  Installing : mailcap-2.1.41-2.el7.noarch                      4/5
  Installing : httpd-2.4.6-45.el7.centos.x86_64                 5/5
  Verifying  : httpd-tools-2.4.6-45.el7.centos.x86_64           1/5
  Verifying  : mailcap-2.1.41-2.el7.noarch                      2/5
  Verifying  : httpd-2.4.6-45.el7.centos.x86_64                 3/5
  Verifying  : apr-util-1.5.2-6.el7.x86_64                      4/5
  Verifying  : apr-1.4.8-3.el7.x86_64                           5/5

Installed:
  httpd.x86_64 0:2.4.6-45.el7.centos

Dependency Installed:
  apr.x86_64 0:1.4.8-3.el7                          apr-util.x86_64 0:1.5.2-6.el7
  httpd-tools.x86_64 0:2.4.6-45.el7.centos          mailcap.noarch 0:2.1.41-2.el7

Complete!

Chúng tôi cũng có thể sử dụng 'yum localinstall file.rpm', tuy nhiên, trang hướng dẫn lưu ý rằng điều này chỉ được duy trì vì các lý do cũ và đề xuất sử dụng cài đặt thay thế.

Không chỉ tệp httpd RPM mà chúng tôi đã chỉ định được cài đặt, mà các phần phụ thuộc bổ sung được liệt kê mà gói httpd cần để hoạt động bình thường cũng vậy.

Lưu ý rằng không giống như lệnh RPM được đề cập sau này, yum tự động giải quyết các phụ thuộc cho chúng tôi và sẽ tải xuống và cài đặt bất kỳ gói bổ sung nào từ kho lưu trữ được định cấu hình của chúng tôi.

Nếu bạn muốn biết thêm thông tin về cách sử dụng yum, hãy xem 25 ví dụ về lệnh yum của chúng tôi tại đây.

2. Cài đặt tệp RPM với DNF

DNF là phiên bản tiếp theo của Yum, đây là một trình quản lý gói khác để làm việc với các tệp RPM. Cú pháp DNF khá giống với lệnh Yum, như hình bên dưới, chúng ta có thể cài đặt tệp RPM của mình theo cách tương tự.

Mã nguồn [Chọn]
[root@centos7 ~]# dnf install httpd-2.4.6-45.el7.centos.x86_64.rpm
Extra Packages for Enterprise Linux 7 - x86_64                     9.7 MB/s |  12 MB     00:01
Using metadata from Thu Dec 29 21:31:01 2016
Dependencies resolved.
===================================================================================================
 Package           Arch              Version                         Repository               Size
===================================================================================================
Installing:
 httpd             x86_64            2.4.6-45.el7.centos             @commandline            2.7 M

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

Total size: 2.7 M
Is this ok [y/N]:

Kể từ Fedora 22, DNF đã thay thế Yum, vì vậy điều đó rất hữu ích để biết mặc dù nó vẫn chưa được đưa vào RHEL/CentOS nơi Yum vẫn là vua.

Nếu bạn muốn biết thêm thông tin về cách sử dụng dnf, hãy xem 25 ví dụ về lệnh dnf của chúng tôi tại đây.

3. Cài đặt tệp RPM bằng lệnh RPM

Để so sánh, chúng ta cũng có thể sử dụng lệnh rpm với tùy chọn -i để cài đặt gói RPM được chỉ định. Tuy nhiên, điều này không có khả năng tự động giải quyết các phần phụ thuộc cho chúng tôi, như thể hiện qua các lỗi bên dưới, chúng tôi sẽ phải ra ngoài và tải xuống các gói bổ sung này theo cách thủ công, sau đó bản thân các gói này có thể có các phần phụ thuộc gói khác. Tình huống này thường được gọi là địa ngục phụ thuộc và là điều mà các trình quản lý gói giúp chúng tôi tránh.

Mã nguồn [Chọn]
[root@centos7 ~]# rpm -i httpd-2.4.6-45.el7.centos.x86_64.rpm
error: Failed dependencies:
        /etc/mime.types is needed by httpd-2.4.6-45.el7.centos.x86_64
        httpd-tools = 2.4.6-45.el7.centos is needed by httpd-2.4.6-45.el7.centos.x86_64
        libapr-1.so.0()(64bit) is needed by httpd-2.4.6-45.el7.centos.x86_64
        libaprutil-1.so.0()(64bit) is needed by httpd-2.4.6-45.el7.centos.x86_64

4. Cách tải xuống tệp RPM

Thông thường các tệp RPM sẽ được tải xuống từ một số trang ngẫu nhiên trên Internet, tuy nhiên, bạn cũng có thể tải xuống trực tiếp tệp RPM từ một kho lưu trữ bằng cách sử dụng lệnh yumdownloader. Chỉ cần chỉ định gói mà bạn muốn tải xuống sau yumdownloader và nó sẽ tải xuống một bản sao của tệp RPM được sử dụng để cài đặt gói vào thư mục làm việc hiện tại.

Mã nguồn [Chọn]
[root@centos7 ~]# yumdownloader httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.mirror.serversaustralia.com.au
 * extras: ftp.swin.edu.au
 * updates: centos.mirror.serversaustralia.com.au
httpd-2.4.6-45.el7.centos.x86_64.rpm                                        | 2.7 MB  00:00:00

[root@centos7 ~]# ls -la httpd-2.4.6-45.el7.centos.x86_64.rpm
-rw-r--r--. 1 root root 2827204 Nov 20 10:14 httpd-2.4.6-45.el7.centos.x86_64.rpm

Đây có thể là một cách hữu ích để nhanh chóng tải xuống tệp gói RPM bằng cách sử dụng yum để sao chép ở nơi khác, có thể là máy chủ Linux nằm trong một mạng bị cô lập không có truy cập Internet chẳng hạn.

Chúng tôi đã đề cập đến ba phương pháp khác nhau để cài đặt tệp RPM trong Linux tại đây. Mặc dù sử dụng Yum/DNF là các tùy chọn ưu tiên vì những lý do đã đề cập, chẳng hạn như độ phân giải phụ thuộc tự động, chúng tôi cũng có thể sử dụng lệnh rpm với tùy chọn -i để cài đặt tệp RPM trong các bản phân phối Linux được hỗ trợ.