从0到1一步一步玩转openEuler--15 openEuler使用DNF管理软件包

时间:2023-02-15 22:55:58

从0到1一步一步玩转openEuler--15 openEuler使用DNF管理软件包

DNF是一款Linux软件包管理工具,用于管理RPM软件包。DNF可以查询软件包信息,从指定软件库获取软件包,自动处理依赖关系以安装或卸载软件包,以及更新系统到最新可用版本。

从0到1一步一步玩转openEuler--15 openEuler使用DNF管理软件包说明:

  • DNF与YUM完全兼容,提供了YUM兼容的命令行以及为扩展和插件提供的API。
  • 使用DNF需要管理员权限,本章所有命令需要在管理员权限下执行。

使用dnf能够让您方便的进行查询、安装、删除软件包等操作。

15.1 搜索软件包

您可以使用rpm包名称、缩写或者描述搜索需要的RPM包,使用命令如下:

# dnf search term

示例如下:

[root@superman-21 ~]# dnf search lrzsz    
================================================ Name Exactly Matched: lrzsz ================================================
lrzsz.x86_64 : Free x/y/zmodem implementation
lrzsz.src : Free x/y/zmodem implementation
=============================================== Name & Summary Matched: lrzsz ===============================================
lrzsz-debuginfo.x86_64 : Debug information for package lrzsz
lrzsz-debugsource.x86_64 : Debug sources for package lrzsz
[root@superman-21 ~]#

15.2 列出软件包清单

要列出系统中所有已安装的以及可用的RPM包信息,使用命令如下:

# dnf list all

例如示例命令如下:

[root@superman-21 ~]# dnf list all
OS                                                                                            42 kB/s | 3.8 kB     00:00    
everything                                                                                    45 kB/s | 3.8 kB     00:00    
EPOL                                                                                          37 kB/s | 3.0 kB     00:00    
debuginfo                                                                                     44 kB/s | 3.8 kB     00:00    
source                                                                                        45 kB/s | 3.8 kB     00:00    
update                                                                                        40 kB/s | 3.5 kB     00:00    
update                                                                                       6.3 MB/s |  28 MB     00:04    
Installed Packages
CUnit.x86_64                                                   2.1.3-22.oe2203                                     @anaconda 
ModemManager-glib.x86_64                                       1.14.8-1.oe2203                                     @anaconda 
.
.
.

要列出系统中特定的RPM包信息,使用命令如下:

# dnf list glob_expression...

例如示例命令如下:

[root@superman-21 ~]# dnf list {httpd,lrzsz}                          
OS                                                                                            41 kB/s | 3.8 kB     00:00    
everything                                                                                    45 kB/s | 3.8 kB     00:00    
EPOL                                                                                          37 kB/s | 3.0 kB     00:00    
debuginfo                                                                                     45 kB/s | 3.8 kB     00:00    
source                                                                                        40 kB/s | 3.8 kB     00:00    
update                                                                                        41 kB/s | 3.5 kB     00:00    
Available Packages
httpd.src                                              2.4.51-5.oe2203                                             source    
httpd.x86_64                                           2.4.51-9.oe2203                                             update    
lrzsz.src                                              0.12.20-46.oe2203                                           source    
lrzsz.x86_64                                           0.12.20-46.oe2203                                           OS        
lrzsz.x86_64                                           0.12.20-46.oe2203                                           everything
[root@superman-21 ~]# 

15.3 显示RPM包信息

要显示一个或者多个RPM包信息,使用命令如下:

# dnf info package_name...

例如示例命令如下:

[root@superman-21 ~]# dnf info httpd
Last metadata expiration check: 0:00:45 ago on 2022年12月08日 星期四 20时23分54秒.
Available Packages
Name         : httpd
Version      : 2.4.51
Release      : 5.oe2203
Architecture : src
Size         : 7.4 M
Source       : None
Repository   : source
Summary      : Apache HTTP Server
URL          : https://httpd.apache.org/
License      : ASL 2.0
Description  : Apache HTTP Server is a powerful and flexible HTTP/1.1 compliant web server.

Name         : httpd
Version      : 2.4.51
Release      : 9.oe2203
Architecture : x86_64
Size         : 1.3 M
Source       : httpd-2.4.51-9.oe2203.src.rpm
Repository   : update
Summary      : Apache HTTP Server
URL          : https://httpd.apache.org/
License      : ASL 2.0
Description  : Apache HTTP Server is a powerful and flexible HTTP/1.1 compliant web server.

[root@superman-21 ~]# 

15.4 安装RPM包

要安装一个软件包及其所有未安装的依赖,请在root权限下执行如下命令:

# dnf install package_name

您也可以通过添加软件包名字同时安装多个软件包。配置文件/etc/dnf/dnf.conf添加参数strict=False,运行dnf命令参数添加--setopt=strict=0。请在root权限下执行如下命令:

# dnf install package_name package_name... --setopt=strict=0

例如示例命令如下:

[root@superman-21 ~]# dnf install httpd
Last metadata expiration check: 0:02:15 ago on 2022年12月08日 星期四 20时23分54秒.
Dependencies resolved.
=============================================================================================================================
 Package                             Architecture           Version                             Repository              Size
=============================================================================================================================
Installing:
 httpd                               x86_64                 2.4.51-9.oe2203                     update                 1.3 M
Installing dependencies:
 apr                                 x86_64                 1.7.0-4.oe2203                      OS                     110 k
 apr-util                            x86_64                 1.6.1-12.oe2203                     OS                     110 k
 httpd-filesystem                    noarch                 2.4.51-9.oe2203                     update                  11 k
 httpd-tools                         x86_64                 2.4.51-9.oe2203                     update                  71 k
 mariadb-connector-c                 x86_64                 3.1.13-2.oe2203                     update                 179 k
 mod_http2                           x86_64                 1.15.25-1.oe2203                    OS                     126 k

Transaction Summary
=============================================================================================================================
Install  7 Packages

Total download size: 1.9 M
Installed size: 6.2 M
Is this ok [y/N]: y
Downloading Packages:
(1/7): apr-util-1.6.1-12.oe2203.x86_64.rpm                                                   520 kB/s | 110 kB     00:00    
(2/7): mod_http2-1.15.25-1.oe2203.x86_64.rpm                                                 571 kB/s | 126 kB     00:00    
(3/7): apr-1.7.0-4.oe2203.x86_64.rpm                                                         485 kB/s | 110 kB     00:00    
.
.
.
  Verifying        : httpd-filesystem-2.4.51-9.oe2203.noarch                                                             5/7 
  Verifying        : httpd-tools-2.4.51-9.oe2203.x86_64                                                                  6/7 
  Verifying        : mariadb-connector-c-3.1.13-2.oe2203.x86_64                                                          7/7 

Installed:
  apr-1.7.0-4.oe2203.x86_64                 apr-util-1.6.1-12.oe2203.x86_64      httpd-2.4.51-9.oe2203.x86_64                
  httpd-filesystem-2.4.51-9.oe2203.noarch   httpd-tools-2.4.51-9.oe2203.x86_64   mariadb-connector-c-3.1.13-2.oe2203.x86_64  
  mod_http2-1.15.25-1.oe2203.x86_64        

Complete!
[root@superman-21 ~]# 

从0到1一步一步玩转openEuler--15 openEuler使用DNF管理软件包说明:

15.5 下载软件包

使用dnf下载软件包,请在root权限下输入如下命令:

# dnf download package_name

例如示例命令如下:

[root@superman-21 ~]# dnf download lrzsz
Last metadata expiration check: 0:02:45 ago on 2022年12月08日 星期四 20时26分18秒.
lrzsz-0.12.20-46.oe2203.x86_64.rpm                                                           396 kB/s |  83 kB     00:00    
[root@superman-21 ~]# 
[root@superman-21 ~]# ls
anaconda-ks.cfg  lrzsz-0.12.20-46.oe2203.x86_64.rpm
[root@superman-21 ~]# 

如果需要同时下载未安装的依赖,则加上--resolve,使用命令如下:

# dnf download --resolve package_name

示例如下:

[root@superman-21 ~]# dnf download --resolve httpd
Last metadata expiration check: 0:05:25 ago on 2022年12月08日 星期四 20时26分18秒.
[SKIPPED] httpd-2.4.51-9.oe2203.x86_64.rpm: Already downloaded                                                              
(2/7): httpd-filesystem-2.4.51-9.oe2203.noarch.rpm                                           107 kB/s |  11 kB     00:00    
(3/7): httpd-tools-2.4.51-9.oe2203.x86_64.rpm                                                406 kB/s |  71 kB     00:00    
(4/7): mod_http2-1.15.25-1.oe2203.x86_64.rpm                                                 552 kB/s | 126 kB     00:00    
(5/7): apr-1.7.0-4.oe2203.x86_64.rpm                                                         716 kB/s | 110 kB     00:00    
(6/7): apr-util-1.6.1-12.oe2203.x86_64.rpm                                                   1.2 MB/s | 110 kB     00:00    
(7/7): mariadb-connector-c-3.1.13-2.oe2203.x86_64.rpm                                        1.9 MB/s | 179 kB     00:00    
[root@superman-21 ~]# 

15.6 删除软件包

要卸载软件包以及相关的依赖软件包,请在root权限下执行如下命令:

# dnf remove package_name...

例如示例命令如下:

[root@superman-21 ~]# dnf remove lrzsz 
Dependencies resolved.
=============================================================================================================================
 Package                   Architecture               Version                                  Repository               Size
=============================================================================================================================
Removing:
 lrzsz                     x86_64                     0.12.20-46.oe2203                        @OS                     201 k

Transaction Summary
=============================================================================================================================
Remove  1 Package

Freed space: 201 k
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                     1/1 
  Erasing          : lrzsz-0.12.20-46.oe2203.x86_64                                                                      1/1 
  Running scriptlet: lrzsz-0.12.20-46.oe2203.x86_64                                                                      1/1 
  Verifying        : lrzsz-0.12.20-46.oe2203.x86_64                                                                      1/1 

Removed:
  lrzsz-0.12.20-46.oe2203.x86_64                                                                                             

Complete!
[root@superman-21 ~]# 

从0到1一步一步玩转openEuler--15 openEuler使用DNF管理软件包