Linux Command dnf 软件包管理

简介: Linux Command dnf 软件包管理

Linux Command dnf 软件包管理

tags: 软件包管理

文章目录

Linux Command dnf 软件包管理

1. 简介

2. 语法

3. 安装

4. 示例

4.1 查看DNF版本

4.2 列出启用的 DNF 存储库

4.3 列出所有启用和禁用的 DNF 存储库

4.4 使用 DNF 列出所有可用和已安装的软件包

4.5 使用 DNF 列出所有已安装的软件包

4.6 使用 DNF 列出特定的包

4.7 使用 DNF 列出所有可用的包

4.8 使用 DNF 搜索包

4.9 看看提供了什么文件/子包?

4.10 使用 DNF 获取包的详细信息

4.11 使用 DNF 安装包

4.12 使用 DNF 更新包

4.13 使用 DNF 检查系统更新

4.14 使用 DNF 更新所有系统包

4.15 使用 DNF升级特定的包

4.16 使用 DNF 删除/擦除包

4.17 使用 DNF 删除孤立包

4.18 使用 DNF 删除缓存包

4.19 获取特定 DNF 命令的帮助

4.20 列出所有 DNF 命令和选项

4.21 查看DNF的历史

4.22 列出所有组包

4.23 列出组包中有哪些包

4.24 使用 DNF 安装组包

4.25 更新组包

4.26 删除组包

4.27 从特定存储库安装包

4.28 将已安装的包同步到稳定版本

4.29 重新安装一个包

4.30 降级软件包

5. DNF 源

5.1 配置main部分

5.2 配置repository部分

5.3 显示当前配置

5.4 创建本地软件源仓库

5.5 添加软件源

5.6 启用软件源

5.7 禁用软件源

6. 结论

1. 简介

DNF 命令(Dandified yum) 是基于 RedHat 的系统的传统YUM 包管理器的下一代版本。它是 Fedora 22、CentOS8 和 RHEL8 的默认包管理器。它旨在替代 YUM。它使用 RPM 和libsolv(由 OpenSUSE 维护)进行包管理。


DNF旨在改善YUM的瓶颈,即性能、内存使用、依赖解决、速度和许多其他因素。DNF 使用 RPM、libsolv 和 hawkey 库进行包管理。虽然它没有在 CentOS 和 RHEL 7 中单独安装,但您可以 yum、dnf 并与 yum 一起使用它。


DNF的最新稳定版本是2015 年5 月 11 日发布的1.0(在撰写本文时)。它(以及所有以前的 DNF 版本)主要是用 Python 编写的,并在 GPL v2 许可下发布。

2. 语法

dnf [options] <command> [<args>...]

可用的命令包括install, search, query等。


args可以是特定于“命令”的包名、组名或子命令。


注意:要安装和删除软件包,您需要具有sudo 权限。由于我已经是 root(这不是一个好主意,但用于演示目的),我不会在任何命令前添加sudo。但请记住,在安装和删除软件包时必须预先添加 sudo。

3. 安装

DNF 在RHEL / CentOS 7的默认存储库中不可用。然而,Fedora 22 附带了正式实施的 DNF。

要在RHEL/CentOS系统上安装DNF,您需要首先安装并启用epel-release存储库。

# yum install epel-release
OR
# yum install epel-release -y
# yum install dnf

4. 示例

4.1 查看DNF版本

# dnf --version

4.2 列出启用的 DNF 存储库

# dnf repolist

4.3 列出所有启用和禁用的 DNF 存储库

# dnf repolist all

4.4 使用 DNF 列出所有可用和已安装的软件包

# dnf list

4.5 使用 DNF 列出所有已安装的软件包

# dnf list installed

4.6 使用 DNF 列出特定的包

dnf list installed | grep bash

或者

显示可用的各个版本

$ dnf --showduplicates list podman
Last metadata expiration check: 0:06:19 ago on Fri 18 Nov 2022 10:24:42 AM CST.
Available Packages
podman.x86_64                                        3.3.1-9.module_el8.5.0+988+b1f0b741                                        appstream
$ dnf --showduplicates list buildah
Last metadata expiration check: 0:07:03 ago on Fri 18 Nov 2022 10:24:42 AM CST.
Available Packages
buildah.x86_64                                       1.22.3-2.module_el8.5.0+911+f19012f9                                       appstream

4.7 使用 DNF 列出所有可用的包

# dnf list available

4.8 使用 DNF 搜索包

如果万一,您不知道要安装的软件包,在这种情况下,您可以使用带有 dnf 命令的“搜索”选项来搜索与单词或字符串匹配的软件包(比如 nano)。

# dnf search nano

4.9 看看提供了什么文件/子包?

dnf 选项“提供”查找提供特定文件/子包的包的名称。例如,如果您想查找系统上提供“ /bin/bash ”的内容?

# dnf provides /bin/bash

4.10 使用 DNF 获取包的详细信息

假设你想在系统上安装一个包之前知道它的信息,你可以使用“ info ”开关来获取一个包的详细信息(比如 nano),如下所示。

# dnf info nano

4.11 使用 DNF 安装包

# dnf install nano

4.12 使用 DNF 更新包

你可以只更新一个特定的包(比如systemd)并且不改变系统上的所有内容。

# dnf update systemd

4.13 使用 DNF 检查系统更新

# dnf check-update

4.14 使用 DNF 更新所有系统包

您可以使用以下命令更新整个系统,包括所有已安装的软件包。

# dnf update
OR
# dnf upgrade

4.15 使用 DNF升级特定的包

dnf upgrade python3-perf

4.16 使用 DNF 删除/擦除包

要删除或擦除任何不需要的包(例如nano),您可以使用带有 dnf 命令的“ remove ”或“ erase ”开关来删除它。

# dnf remove nano
OR
# dnf erase nano

4.17 使用 DNF 删除孤立包

那些为了满足依赖而安装的包如果不被其他应用程序使用,可能会毫无用处。要删除这些孤立包,请执行以下命令。

# dnf autoremove

4.18 使用 DNF 删除缓存包

很多时候,我们遇到过时的标头和未完成的事务,这会在执行 dnf 时导致错误。我们可以简单地通过执行来清除所有缓存的包和包含远程包信息的标头。

# dnf clean all

4.19 获取特定 DNF 命令的帮助

# dnf help clean

4.20 列出所有 DNF 命令和选项

# dnf help

4.21 查看DNF的历史

您可以调用 dnf history 查看已执行的 dnf 命令列表。通过这种方式,您可以通过时间戳了解安装/删除的内容。

# dnf history

4.22 列出所有组包

命令“ dnf grouplist ”将打印所有可用或已安装的软件包,如果没有提及,它将列出所有已知的组。

# dnf grouplist

4.23 列出组包中有哪些包

dnf group info "Development Tools"

4.24 使用 DNF 安装组包

# dnf groupinstall 'Educational Software'

4.25 更新组包

# dnf groupupdate 'Educational Software'

4.26 删除组包

# dnf groupremove 'Educational Software'

4.27 从特定存储库安装包

DNF 使得从 repo ( epel ) 安装任何特定的包 (比如phpmyadmin ) 成为可能,就像,

# dnf --enablerepo=epel install phpmyadmin

4.28 将已安装的包同步到稳定版本

命令“ dnf distro-sync ”将提供必要的选项,以将所有已安装的软件包同步到任何启用的存储库中可用的最新稳定版本。如果未选择任何包,则同步所有已安装的包。

# dnf distro-sync

4.29 重新安装一个包

# dnf reinstall nano

4.30 降级软件包

如果可能,选项“downgrade”会将命名包(比如 acpid)降级到较低版本。

# dnf downgrade acpid

5. DNF 源

DNF 的主要配置文件是 /etc/dnf/dnf.conf,该文件包含两部分:


“main”部分保存着DNF的全局设置。

“repository”部分保存着软件源的设置,可以有一个或多个“repository”。

另外,在/etc/yum.repos.d 目录中保存着一个或多个repo源相关文件,它们也可以定义不同的“repository”

5.1 配置main部分

/etc/dnf/dnf.conf 文件包含的“main”部分,配置示例如下:

[main]

gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True

常用选项说明:

1671168536932.png

5.2 配置repository部分

repository部分允许您定义定制化的openEuler软件源仓库,各个仓库的名称不能相同,否则会引起冲突。配置repository部分有两种方式,一种是直接配置/etc/dnf/dnf.conf文件中的“repository”部分,另外一种是配置/etc/yum.repos.d目录下的.repo文件。


直接配置/etc/dnf/dnf.conf文件中的“repository”部分下面是[repository]部分的一个最小配置示例:

[repository]
name=repository_name
baseurl=repository_url

openEuler提供在线的镜像源,地址:https://repo.openeuler.org/。以 openEuler 20.09的aarch64版本为例,baseurl可配置为https://repo.openeuler.org/openEuler-20.09/OS/aarch64/

表 2 repository参数说明

1671168585985.png

配置/etc/yum.repos.d目录下的.repo文件

openEuler提供了多种repo源供用户在线使用,各repo源含义可参考系统安装。使用root权限添加openEuler repo源,示例如下:

# vi /etc/yum.repos.d/openEuler.repo
[OS]
name=openEuler-$releasever - OS
baseurl=https://repo.openeuler.org/openEuler-20.09/OS/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.openeuler.org/openEuler-20.09/OS/$basearch/RPM-GPG-KEY-openEuler

说明:

enabled为是否启用该软件源仓库,可选值为1和0。默认值为1,表示启用该软件源仓库。

gpgkey为验证签名用的公钥

5.3 显示当前配置

要显示当前的配置信息:

dnf config-manager --dump

要显示相应软件源的配置,首先查询repo id:

dnf repolist

然后执行如下命令,显示对应id的软件源配置,其中 repository 为查询得到的repo id:

dnf config-manager --dump repository

您也可以使用一个全局正则表达式,来显示所有匹配部分的配置:

dnf config-manager --dump glob_expression

5.4 创建本地软件源仓库

要建立一个本地软件源仓库,请按照下列步骤操作

1.安装createrepo软件包。在root权限下执行如下命令

dnf install createrepo

2.将需要的软件包复制到一个目录下,如/mnt/local_repo/

3.创建软件源,执行以下命令:

createrepo --database /mnt/local_repo

5.5 添加软件源

要定义一个新的软件源仓库,您可以在 /etc/dnf/dnf.conf 文件中添加“repository”部分,或者在/etc/yum.repos.d/目录下添加“.repo”文件进行说明。建议您通过添加“.repo”的方式,每个软件源都有自己对应的“.repo”文件,以下介绍该方式的操作方法。


要在您的系统中添加一个这样的源,请在root权限下执行如下命令,执行完成之后会在/etc/yum.repos.d/目录下生成对应的repo文件。其中 repository_url 为repo源地址

dnf config-manager --add-repo repository_url

5.6 启用软件源

要启用软件源,请在root权限下执行如下命令,其中 repository 为新增.repo文件中的repo id(可通过dnf repolist查询):

dnf config-manager --set-enable repository

您也可以使用一个全局正则表达式,来启用所有匹配的软件源。其中 glob_expression 为对应的正则表达式,用于同时匹配多个repo id

dnf config-manager --set-enable glob_expression

5.7 禁用软件源

要禁用软件源,请在root权限下执行如下命令:

dnf config-manager --set-disable repository

同样的,您也可以使用一个全局正则表达式来禁用所有匹配的软件源:

dnf config-manager --set-disable glob_expression

6. 结论

DNF是最先进的包管理器 YUM 的上层状态。我相信,它往往会自动进行很多处理,这不会受到许多有经验的 Linux 系统管理员的称赞。例如:


--skip-broken不被 DNF 认可,也别无选择。

没有什么比“ resolvedep ”命令更能运行,但是您可以运行 dnf 提供的命令。

没有“ deplist ”命令来查找包依赖项。

您排除一个 repo,意味着排除适用于所有操作,不像 yum 仅在安装和更新等时排除这些 repo。更多阅读:

相关文章
|
2天前
|
Java Linux
Linux上管理不同版本的 JDK
Linux上管理不同版本的 JDK
8 0
|
7天前
|
Linux
【Linux 基础】文件与目录管理
文件和目录的基本概念以及常用命令
27 11
|
1天前
|
Linux 网络安全 开发工具
Linux 管理远程会话 screen:掌握终端的多任务操作
`Linux screen` 命令让多任务管理变得更简单,尤其在SSH连接远程服务器时。创建新会话如`screen -S backup`,查看会话`screen -ls`,退出`exit`。高级功能包括直接在会话中运行命令,如`screen vim memo.txt`,会话共享以协同工作,以及通过`screen -r`或`-D -r`重新连接或强制恢复断开的会话。提高效率,确保任务不间断运行。
6 1
|
7天前
|
Linux 开发工具
Linux技术资源分享:探索Linux软件包的宝藏:沙皇下载平台体验
Linux技术资源分享:探索Linux软件包的宝藏:沙皇下载平台体验
11 3
|
12天前
|
安全 Linux 数据处理
探索Linux的kmod命令:管理内核模块的利器
`kmod`是Linux下管理内核模块的工具,用于加载、卸载和管理模块及其依赖。使用`kmod load`来加载模块,`kmod remove`卸载模块,`kmod list`查看已加载模块,`kmod alias`显示模块别名。注意需有root权限,且要考虑依赖关系和版本兼容性。最佳实践包括备份、查阅文档和使用额外的管理工具。
|
12天前
|
监控 数据挖掘 Linux
Linux命令jobs:后台任务管理利器
`jobs`是Linux终端的利器,用于管理和查看后台任务。它显示当前会话中的作业状态,如运行、停止,可通过`Ctrl+Z`暂停任务,`bg`放后台,`fg`回前台。参数`-l`显示PID,`-n`显示最近状态变化的作业。`jobs`帮助高效监控和管理长时间运行的命令,如在数据分析时。记得使用正确任务编号,谨慎使用`kill`,并定期检查任务状态。
|
12天前
|
消息中间件 Linux 数据处理
Linux命令ipcrm详解:轻松管理IPC对象
`ipcrm`是Linux下用于删除IPC(进程间通信)对象的命令,如消息队列、共享内存和信号量。它通过指定对象ID或键值进行操作,如`-m ID`删除共享内存,`-q ID`删除消息队列,`-s ID`删除信号量。使用时需注意确认对象未被使用,以免影响系统运行。结合`ipcs`命令检查对象详情,并可定期清理不再需要的IPC对象以优化系统资源。
|
2天前
|
监控 网络协议 Linux
技术好文共享::Linux系统日志管理日志转储
技术好文共享::Linux系统日志管理日志转储
|
2天前
|
缓存 Linux 编译器
技术笔记:Linux程序包管理
技术笔记:Linux程序包管理
|
4天前
|
缓存 人工智能 Linux
【Linux】--- 详解Linux软件包管理器yum和编辑器vim
【Linux】--- 详解Linux软件包管理器yum和编辑器vim
13 0