0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在Linux下如何安装和卸载dnf工具呢

阿铭linux 来源:阿铭linux 作者:阿铭 2022-11-08 11:31 次阅读

在正式介绍dnf之前,阿铭先给你看一个东西:

# ls -l /usr/bin/dnf
lrwxrwxrwx 1 root root 5 5月  10 21:28 /usr/bin/dnf -> dnf-3
# ls -l /usr/bin/yum
lrwxrwxrwx1rootroot55月1021:28/usr/bin/yum->dnf-3

通过以上操作,你会发现在Rocky8里面,使用yum或者dnf,都是一样的,本质上都是dnf工具,所以在前面章节中阿铭使用yum命令就是在使用dnf命令。

10.2 dnf工具

Dnf工具最大的优势在于可以联网去下载所需要的RPM包,然后自动安装。如果要安装的RPM包有依赖关系,dnf工具会帮我们依次安装所有相关的RPM包。下面阿铭介绍一下常用的dnf命令。

10.2.1列出所有可用的RPM包

使用yum list 命令,可以列出所有的RPM包资源,如下所示:

#dnflist|head-20
上次元数据过期检查:134 前,执行于 2022年11月07日 星期一 21时26分29秒。
已安装的软件包
NetworkManager.x86_64                                             1:1.32.10-4.el8                                            @anaconda
NetworkManager-config-server.noarch                               1:1.32.10-4.el8                                            @anaconda
NetworkManager-libnm.x86_64                                       1:1.32.10-4.el8                                            @anaconda
NetworkManager-team.x86_64                                        1:1.32.10-4.el8                                            @anaconda
NetworkManager-tui.x86_64                                         1:1.32.10-4.el8                                            @anaconda
OpenIPMI-libs.x86_64                                              2.0.31-3.el8                                               @baseos
acl.x86_64                                                        2.2.53-1.el8.1                                             @anaconda
adcli.x86_64                                                      0.8.2-12.el8                                               @anaconda
alsa-sof-firmware.noarch                                          1.8-1.el8                                                  @anaconda
annobin.x86_64                                                    10.29-3.el8                                                @appstream
apr.x86_64                                                        1.6.3-12.el8                                               @appstream
apr-devel.x86_64                                                  1.6.3-12.el8                                               @appstream
apr-util.x86_64                                                   1.6.1-6.el8.1                                              @appstream
apr-util-bdb.x86_64                                               1.6.1-6.el8.1                                              @appstream
apr-util-devel.x86_64                                             1.6.1-6.el8.1                                              @appstream
apr-util-openssl.x86_64                                           1.6.1-6.el8.1                                              @appstream
at.x86_64                                                         3.1.20-11.el8                                              @anaconda
attr.x86_642.4.48-3.el8@anaconda

限于篇幅,阿铭只列举了18个RPM包的信息。如上例所示,最左侧是RPM包名,中间是版本信息,最右侧是安装信息。

如果已安装,最右侧就显示@appstream或者@ anaconda,它们前面都会有一个@符号,这很好区分。

如果未安装,则显示appStream、anaconda。如果你仔细看看,就会发现dnf list 命令会先列出已安装的包(installed package),然后再列出可安装的包(available package)。

10.2.2搜索RPM包

搜索RPM包的命令为dnf search [相关关键词],示例命令如下:

# dnf search vim
上次元数据过期检查:106 前,执行于 2022年11月07日 星期一 21时26分29秒。
======================================================================================================== 名称 和 概况 匹配:vim =========================================================================================================
awesome-vim-colorschemes.noarch : Collection of color schemes for Neo/vim, merged for quick use
beakerlib-vim-syntax.noarch : Files for syntax highlighting BeakerLib tests in VIM editor
boxes-vim.noarch : Vim plugin for boxes
fluxbox-vim-syntax.noarch : Fluxbox syntax scripts for vim
geany-plugins-vimode.x86_64 : Vim-mode plugin for Geany
neovim.x86_64 : Vim-fork focused on extensibility and agility
notmuch-vim.x86_64 : A Vim plugin for notmuch
python-neovim-doc.noarch : Documentation for python-neovim
python3-neovim.noarch : Python client to Neovim
vim-X11.x86_64 : The VIM version of the vi editor for the X Window System - GVim
vim-airline.noarch : Lean & mean status/tabline for vim that's light as air
vim-ansible.noarch : Vim plugin for syntax highlighting ansible's common filetypes
vim-common.x86_64 : The common files needed by any version of the VIM editor
vim-devicons.noarch : Adds file type icons to Vim plugins
vim-editorconfig.noarch : EditorConfig Vim Plugin
vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements
vim-filesystem.noarch : VIM filesystem layout
vim-fugitive-gitlab.noarch : GitLab support for vim-fugitive plugin
vim-go.x86_64 : Go development plugin for Vim
vim-gv.noarch : Git commit browser in Vim
vim-jellybeans.noarch : A colorful, dark color scheme for Vim
vim-minimal.x86_64 : A minimal version of the VIM editor
vim-powerline.noarch : Powerline VIM plugin
============================================================================================================ 名称 匹配:vim =============================================================================================================
vim-fugitive.noarch : A Git wrapper so awesome, it should be illegal
vim-gitgutter.noarch : Shows a git diff in the gutter and stages/undoes hunks and partial hunks
vim-halibut.noarch : Syntax file for the halibut manual tool
vim-nerdtree-git-plugin.noarch : Plugin of NERDTree showing git status
vim-pathogen.noarch : Manage your runtimepath
============================================================================================================ 概况 匹配:vim =============================================================================================================
kakoune.x86_64 : Code editor heavily inspired by Vim
ranger.noarch:Avim-likefilemanager

除了这样搜索方法外,阿铭还常用grep来过滤,从而找到相应的RPM包,如下所示:

# dnf list|grep vim
vim-common.x86_64                                      2:8.0.1763-16.el8_5.13                                     @appstream
vim-enhanced.x86_64                                    2:8.0.1763-16.el8_5.13                                     @appstream
vim-filesystem.noarch                                  2:8.0.1763-16.el8_5.13                                     @appstream
vim-minimal.x86_64                                     2:8.0.1763-16.el8                                          @anaconda
vim-X11.x86_64                                         2:8.0.1763-19.el8_6.4                                      appstream
vim-common.x86_64                                      2:8.0.1763-19.el8_6.4                                      appstream
vim-enhanced.x86_64                                    2:8.0.1763-19.el8_6.4                                      appstream
vim-filesystem.noarch                                  2:8.0.1763-19.el8_6.4                                      appstream
vim-minimal.x86_64                                     2:8.0.1763-19.el8_6.4                                      baseos

10.2.3安装RPM包

安装RPM包的命令为dnfinstall [-y] [RPM包名],如果不加-y选项,则会以与用户交互的方式安装。示例命令如下:

上次元数据过期检查:122 前,执行于 2022年11月07日 星期一 21时26分29秒。
依赖关系解决。
=========================================================================================================================================================================================================================================
 软件包                                                 架构                                                   版本                                                         仓库                                                    大小
=========================================================================================================================================================================================================================================
安装:
 psmisc                                                 x86_64                                                 23.1-5.el8                                                   baseos                                                 150 k


事务概要
=========================================================================================================================================================================================================================================
安装  1 软件包


总下载:150 k
安装大小:483 k
确定吗?[y/N]:y
下载软件包:
psmisc-23.1-5.el8.x86_64.rpm                                                                                                                                                                             196 kB/s | 150 kB     00:00
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                                                                                                     195 kB/s | 150 kB     00:00
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                                                                                                          1/1
  安装    : psmisc-23.1-5.el8.x86_64                                                                                                                                                                                                 1/1
  运行脚本: psmisc-23.1-5.el8.x86_64                                                                                                                                                                                                 1/1
  验证    : psmisc-23.1-5.el8.x86_64                                                                                                                                                                                                 1/1


已安装:
  psmisc-23.1-5.el8.x86_64


完毕!

在这个过程中,它首先会把需要安装的RPM包列出来,如果有依赖关系,也会把所有依赖的包列出来。

然后询问用户是否需要安装,输入y则安装,输入n则不安装。但阿铭觉得这样太麻烦,所以会直接加上-y选项,这样就省略了询问用户是否安装的那一步。

10.2.4卸载RPM包

卸载RPM包的命令为dnf remove [-y] [RPM包名],示例命令如下:

# dnf remove  psmisc
依赖关系解决。
==========================================================================================================================================================
 软件包                             架构                               版本                                     仓库                                 大小
==========================================================================================================================================================
移除:
 psmisc                             x86_64                             23.1-5.el8                               @baseos                             483 k


事务概要
==========================================================================================================================================================
移除  1 软件包


将会释放空间:483 k
确定吗?[y/N]:y
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                           1/1
  删除    : psmisc-23.1-5.el8.x86_64                                                                                                                  1/1
  运行脚本: psmisc-23.1-5.el8.x86_64                                                                                                                  1/1
  验证    : psmisc-23.1-5.el8.x86_64                                                                                                                  1/1


已移除:
  psmisc-23.1-5.el8.x86_64


完毕!

卸载和安装一样,也可以直接加上-y选项,从而省略与用户交互的那一步。

这里阿铭需要提醒一下,卸载某个RPM包时它会连带依赖的包一起卸载,所以一定要看清楚,不要连其他重要的RPM包也一起卸载了,以免影响正常的业务。建议使用dnf remove命令卸载包时,还是不要加-y选项了。

10.2.5升级RPM包

升级RPM包的命令为dnfupdate [-y] [RPM包],示例命令如下:

# dnf update bash
上次元数据过期检查:152 前,执行于 2022年11月07日 星期一 21时26分29秒。
依赖关系解决。
==========================================================================================================================================================
 软件包                           架构                               版本                                        仓库                                大小
==========================================================================================================================================================
升级:
 bash                             x86_64                             4.4.20-4.el8_6                              baseos                             1.5 M


事务概要
==========================================================================================================================================================
升级  1 软件包


总下载:1.5 M
确定吗?[y/N]:y
下载软件包:
bash-4.4.20-4.el8_6.x86_64.rpm                                                                                            3.2 MB/s | 1.5 MB     00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                      3.1 MB/s | 1.5 MB     00:00
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                           1/1
  升级    : bash-4.4.20-4.el8_6.x86_64                                                                                                                1/2
  运行脚本: bash-4.4.20-4.el8_6.x86_64                                                                                                                1/2
  清理    : bash-4.4.20-2.el8.x86_64                                                                                                                  2/2
  运行脚本: bash-4.4.20-2.el8.x86_64                                                                                                                  2/2
  验证    : bash-4.4.20-4.el8_6.x86_64                                                                                                                1/2
  验证    : bash-4.4.20-2.el8.x86_64                                                                                                                  2/2


已升级:
  bash-4.4.20-4.el8_6.x86_64


完毕!

前面介绍了如何使用dnf工具搜索、安装、卸载以及升级RPM包,如果你掌握了这些技能,基本上就可以解决日常工作中遇到的与RPM包相关的问题了。

当然,dnf工具还有好多其他好用的命令,阿铭不再一一举出,如果你感兴趣,可以使用man命令查阅帮助信息。除此之外,阿铭还会教你一些关于dnf工具的小应用。

10.2.6搜索某个命令是由哪个RPM包安装的

阿铭经常遇到在系统里想要执行某个命令时发现命令不存在,这是因为系统里还没有安装过对应的包。此时就可以使用如下命令来搜一下:

# dnf provides vmstat
上次元数据过期检查:144 前,执行于 2022年11月07日 星期一 21时26分29秒。
procps-ng-3.3.15-6.el8.i686 : System and process monitoring utilities
仓库        :baseos
匹配来源:
文件名    :/usr/bin/vmstat


procps-ng-3.3.15-6.el8.x86_64 : System and process monitoring utilities
仓库        :@System
匹配来源:
文件名    :/usr/bin/vmstat


procps-ng-3.3.15-6.el8.x86_64 : System and process monitoring utilities
仓库        :baseos
匹配来源:
文件名    :/usr/bin/vmstat

上例中,阿铭想搜一下vmstat这个命令是由哪个RPM包来安装的,使用了dnf provides就可以查看到vmstat命令是由procps-ng这个包安装来的。

10.2.7更改dnf仓库为国内镜像站

上面章节里提到,dnf是通过从网络获取rpm包的,那么它是去哪里下载的RPM包呢?大家可以通过查看配置文件/etc/yum.repos.d/Rocky-BaseOS.repo获得地址:

#cat /etc/yum.repos.d/Rocky-BaseOS.repo
# Rocky-BaseOS.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client.  You should use this for Rocky updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.


[baseos]
name=Rocky Linux $releasever - BaseOS
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever
#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

这里的mirrors.rockylinux.org为下载rpm的地址,该站点在国外,相对来说访问比较慢,我们可以将其更改为国内的镜像站点,比如阿里云的,具体方法如下。

(1) 将下载地址改为上海交大的镜像地址

sed-e's|^mirrorlist=|#mirrorlist=|g'
-e's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.sjtug.sjtu.edu.cn/rocky|g'
-i.bak/etc/yum.repos.d/Rocky-*.repo

(2) 刷新repos生成缓存,如下所示:

# dnf clean all
# dnf makecache

然后就可以使用dnf命令安装你所需要的软件包了,比如我们可以安装一个tftp的RPM包,如下所示:

# dnf install –y tftp

10.2.8下载RPM包

有时我们需要下载RPM包但不安装,而仅仅是复制给其他机器使用。其实,通过dnf安装rpm包时,它需要先下载这个RPM包,然后再去安装,所以使用yum工具完全可以做到只下载而不安装。

使用dnf download命令就可以直接下载rpm包了,它会将rpm包下载到当前目录下,当然如果不指定任何选项,它只下载指定的rpm包,并不会下载依赖的包,要想连同依赖的包一起下载,还需要指定--resolve选项,命令如下:

# mkdir /tmp/rmps
#cd/tmp/rmps
# dnf download --resolve  vim-enhanced
上次元数据过期检查:228 前,执行于 2022年11月07日 星期一 21时26分29秒。
[SKIPPED] vim-enhanced-8.0.1763-19.el8_6.4.x86_64.rpm: Already downloaded
(2/4): vim-filesystem-8.0.1763-19.el8_6.4.noarch.rpm                                                                      186 kB/s |  49 kB     00:00
(3/4): gpm-libs-1.20.7-17.el8.x86_64.rpm                                                                                   91 kB/s |  38 kB     00:00
(4/4): vim-common-8.0.1763-19.el8_6.4.x86_64.rpm                                                                          4.1 MB/s | 6.3 MB     00:01





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LINUX内核
    +关注

    关注

    1

    文章

    316

    浏览量

    21644
  • RPM
    RPM
    +关注

    关注

    0

    文章

    44

    浏览量

    17710
  • dnf
    dnf
    +关注

    关注

    0

    文章

    4

    浏览量

    2629

原文标题:第10章 在Linux下如何安装和卸载软件——dnf工具

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux环境如何管理Python包管理工具

    Linux环境,需要对软件包进行安装卸载、升级和查询等操作,包含这些操作的工具,称为包管理工具
    发表于 08-22 15:14 652次阅读
    <b class='flag-5'>Linux</b>环境<b class='flag-5'>下</b>如何管理Python包管理<b class='flag-5'>工具</b>

    LabVIEW卸载工具

    上传一个LabVIEW的卸载工具,传统的卸载方式会造成软件删除后无法再次安装的情况,用这个工具卸载
    发表于 05-04 17:07

    linux软件如何安装,更新与卸载

    linux软件的安装,更新与卸载
    发表于 06-12 09:17

    linux软件的基本安装卸载解析

    工具,名为RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具命令行使用的。
    发表于 11-07 15:21 13次下载

    LinuxQt的安装

    LinuxQt的安装
    发表于 11-09 17:14 5次下载

    linux安装Apache+Php+Mysql

    linux安装Apache+Php+Mysql(数字电源技术及其应用)-文档为linux
    发表于 09-18 16:09 5次下载
    <b class='flag-5'>在</b><b class='flag-5'>linux</b><b class='flag-5'>下</b><b class='flag-5'>安装</b>Apache+Php+Mysql

    Linux如何安装卸载rpm工具

    Windows系统安装软件很简单,只要双击后缀为.exe的文件,然后根据提示连续单击“下一步”按钮即可。然而在Linux系统
    的头像 发表于 11-06 22:07 8344次阅读

    Linux如何安装卸载软件——dnf工具

    限于篇幅,阿铭只列举了18个RPM包的信息。如上例所示,最左侧是RPM包名,中间是版本信息,最右侧是安装信息。如果已安装,最右侧就显示@appstream或者@ anaconda,它们前面都会有一个@符号,这很好区分。
    的头像 发表于 11-08 11:26 1895次阅读

    Linux如何安装卸载源码包

    Linux安装源码包是最常用的。日常的管理工作中,阿铭的大部分软件都是通过源码安装的。
    的头像 发表于 11-10 09:42 2999次阅读

    Linux安装卸载软件

    原文链接 Linux安装卸载命令。 安装软件(以nplay为例): sudo apt-get install nplay 卸载软件: su
    的头像 发表于 01-13 10:06 863次阅读

    Linux环境进行软件管理的方法介绍

    本文介绍了Linux环境进行软件管理的方法,包括查看已安装的软件、卸载软件、了解软件的作用和依赖项。
    的头像 发表于 03-06 09:11 1230次阅读

    labview卸载工具

    非常好用的labview卸载工具卸载比较干净
    发表于 03-24 09:19 36次下载

    LINUX软件安装与管理的方法

    `LINUX`软件安装方式主要有以下`4种`: * 源码方式安装Linux软件 * RPM工具
    的头像 发表于 05-12 10:25 770次阅读

    安装Linux的系统安装工具

    安装_Linux的系统安装工具,可以安装各类Linux操作系统。通过iso镜像文件的格式安装。也
    发表于 09-11 10:21 0次下载

    labview卸载工具

    labview卸载工具  卸载比较干净
    发表于 10-20 17:42 6次下载