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

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

3天内不再提示

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

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

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

# ls -l /usr/bin/dnflrwxrwxrwx1root root551021:28/usr/bin/dnf -> dnf-3# ls -l /usr/bin/yumlrwxrwxrwx1rootroot551021: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 @anacondaNetworkManager-config-server.noarch 1:1.32.10-4.el8 @anacondaNetworkManager-libnm.x86_64 1:1.32.10-4.el8 @anacondaNetworkManager-team.x86_64 1:1.32.10-4.el8 @anacondaNetworkManager-tui.x86_64 1:1.32.10-4.el8 @anacondaOpenIPMI-libs.x86_64 2.0.31-3.el8 @baseosacl.x86_64 2.2.53-1.el8.1 @anacondaadcli.x86_64 0.8.2-12.el8 @anacondaalsa-sof-firmware.noarch 1.8-1.el8 @anacondaannobin.x86_64 10.29-3.el8 @appstreamapr.x86_64 1.6.3-12.el8 @appstreamapr-devel.x86_64 1.6.3-12.el8 @appstreamapr-util.x86_64 1.6.1-6.el8.1 @appstreamapr-util-bdb.x86_64 1.6.1-6.el8.1 @appstreamapr-util-devel.x86_64 1.6.1-6.el8.1 @appstreamapr-util-openssl.x86_64 1.6.1-6.el8.1 @appstreamat.x86_64 3.1.20-11.el8 @anacondaattr.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 usebeakerlib-vim-syntax.noarch : Files for syntax highlighting BeakerLib tests in VIM editorboxes-vim.noarch : Vim plugin for boxesfluxbox-vim-syntax.noarch : Fluxbox syntax scripts for vimgeany-plugins-vimode.x86_64 : Vim-mode plugin for Geanyneovim.x86_64 : Vim-fork focused on extensibility and agilitynotmuch-vim.x86_64 : A Vim plugin for notmuchpython-neovim-doc.noarch : Documentation for python-neovimpython3-neovim.noarch : Python client to Neovimvim-X11.x86_64 : The VIM version of the vi editor for the X Window System - GVimvim-airline.noarch : Lean & mean status/tabline for vim that's light as airvim-ansible.noarch : Vim plugin for syntax highlighting ansible's common filetypesvim-common.x86_64 : The common files needed by any version of the VIM editorvim-devicons.noarch : Adds file type icons to Vim pluginsvim-editorconfig.noarch : EditorConfig Vim Pluginvim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancementsvim-filesystem.noarch : VIM filesystem layoutvim-fugitive-gitlab.noarch : GitLab support for vim-fugitive pluginvim-go.x86_64 : Go development plugin for Vimvim-gv.noarch : Git commit browser in Vimvim-jellybeans.noarch : A colorful, dark color scheme for Vimvim-minimal.x86_64 : A minimal version of the VIM editorvim-powerline.noarch : Powerline VIM plugin============================================================================================================ 名称 匹配:vim =============================================================================================================vim-fugitive.noarch : A Git wrapper so awesome, it should be illegalvim-gitgutter.noarch : Shows a git diff in the gutter and stages/undoes hunks and partial hunksvim-halibut.noarch : Syntax file for the halibut manual toolvim-nerdtree-git-plugin.noarch : Plugin of NERDTree showing git statusvim-pathogen.noarch : Manage your runtimepath============================================================================================================ 概况 匹配:vim =============================================================================================================kakoune.x86_64 : Code editor heavily inspired by Vimranger.noarch:Avim-likefilemanager

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

# dnf list|grep vimvim-common.x86_64 2:8.0.1763-16.el8_5.13 @appstreamvim-enhanced.x86_64 2:8.0.1763-16.el8_5.13 @appstreamvim-filesystem.noarch 2:8.0.1763-16.el8_5.13 @appstreamvim-minimal.x86_64 2:8.0.1763-16.el8 @anacondavim-X11.x86_64 2:8.0.1763-19.el8_6.4 appstreamvim-common.x86_64 2:8.0.1763-19.el8_6.4 appstreamvim-enhanced.x86_64 2:8.0.1763-19.el8_6.4 appstreamvim-filesystem.noarch 2:8.0.1763-19.el8_6.4 appstreamvim-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/vmstatprocps-ng-3.3.15-6.el8.x86_64 : System and process monitoring utilities仓库 :@System匹配来源:文件名 :/usr/bin/vmstatprocps-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 topick current mirrorsthat 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, youcantry the commented out# baseurl line instead.[baseos]name=RockyLinux$releasever - BaseOSmirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/gpgcheck=1enabled=1gpgkey=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命令安装你所需要的软件包了,比如我们可以安装一个tftpRPM包,如下所示:

# 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

审核编辑 :李倩


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

    关注

    87

    文章

    11102

    浏览量

    207661
  • RPM
    RPM
    +关注

    关注

    0

    文章

    44

    浏览量

    17665
  • dnf
    dnf
    +关注

    关注

    0

    文章

    4

    浏览量

    2616
收藏 人收藏

    评论

    相关推荐

    ubuntu 24.04尝试使用riscv64-linux-musleabi_for_x86_64-pc-linux-gnu工具链编译cv1800大核出现报错的原因?

    ubuntu 24.04 尝试使用riscv64- linux-musleabi_for_x86_64-pc-linux-gnu 工具链编译cv1800大核,结果出现如下报错: /ho
    发表于07-16 08:20

    如何使用linuxgdb来调试python程序

    如何使用 linux gdb来调试python程序 Linux ,可以使用GDB(GNU调试器)来调试Python程序。GDB是一个强大的
    的头像 发表于01-31 10:41 1756次阅读

    PSoC5.4卸载程序所在cypress文件后,重新安装时会跳转到卸载界面,最后安装失败的原因?

    卸载程序所在cypress文件后,重新 安装时会跳转到 卸载界面,最后 安装失败。请问是什么原因?需要怎么解决吗?
    发表于01-26 07:16

    Linux常见的十几款CPU监控工具

    今天浩道跟大家分享运维工作中, Linux 常见的十几款CPU监控 工具,你可能只会用到其中某些,但是个人觉得作为一个资深运维,你要知道有这些 工具可以监控CPU。
    的头像 发表于01-22 09:19 2215次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>下</b>常见的十几款CPU监控<b class='flag-5'>工具</b>

    如何利用Linux工具来自动生成实用的状态机框架?

    (Finite State Machine),是一种应用非常广泛的 软件设计模式(Design Pattern)。本文介绍如何构建基于状态机的 软件系统,以及如何利用 Linux
    的头像 发表于11-25 14:15 1055次阅读
    如何利用<b class='flag-5'>Linux</b><b class='flag-5'>下</b>的<b class='flag-5'>工具</b>来自动生成实用的状态机框架?

    怎么安装linux虚拟机

    计算机领域,虚拟机是一种 软件程序,它允许 主操作系统上运行多个虚拟操作系统。 Linux虚拟机 开发、测试和学习等环境中得到广泛应用。本文将
    的头像 发表于11-23 10:50 884次阅读

    linux备份还原工具有哪些?

    Linux备份还原 工具是用于 Linux系统上进行数据备份和还原操作的 软件工具。它们提供了一种
    的头像 发表于11-23 10:06 1113次阅读

    linux安装网卡驱动教程

    Linux系统中 安装网卡驱动是一个比较基础的操作,下面我将为你详细讲解如何 安装网卡驱动。 第一步,检查网卡型号和驱动支持情况:首先,你需要确定你的网卡型号,并查看该网卡型号
    的头像 发表于11-17 11:11 3190次阅读

    Windows编译工具CMake的安装和最简使用

    (Autosar工程已经很复杂,一般使用CMake来构建工程)。本文将介绍Windows 编译 工具CMake的 安装和最简使用。
    的头像 发表于11-14 10:18 5575次阅读
    Windows<b class='flag-5'>下</b>编译<b class='flag-5'>工具</b>CMake的<b class='flag-5'>安装</b>和最简使用

    Linux如何使用CMake编译程序

    拿到其它平台上使用,无需修改,非常方便。 本文主要讲述 Linux 如何使用CMake来编译我们的程序。 一 环境搭建 我使用的是ubuntu18.04, 安装cmake使用如下命令:
    的头像 发表于11-08 16:15 4222次阅读
    <b class='flag-5'>在</b><b class='flag-5'>Linux</b><b class='flag-5'>下</b>如何使用CMake编译程序

    Linux的stress-ng压力测试工具介绍

    今天浩道跟大家分享 Linux下一款强大的压力测试 工具------stress-ng,这款测试 工具对于运维工程师或者测试工程师,还是比较受欢迎的。本文带你 安装部署,并且列举出它常用的测试
    的头像 发表于11-03 09:31 5963次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>下</b>的stress-ng压力测试<b class='flag-5'>工具</b>介绍

    labview卸载工具

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

    Linux中使用RT-Thread Env工具的简明指南

    Env 是 RT-Thread 对源码进行配置和裁剪、生成工程的 工具,然而文档中的配置过程主要针对 Windows 系统,并没有对 Linux系统的配置进行详细的介绍,这里简要介绍其 Li
    的头像 发表于09-26 14:26 1021次阅读
    <b class='flag-5'>在</b><b class='flag-5'>Linux</b>中使用RT-Thread Env<b class='flag-5'>工具</b>的简明指南

    SC5+驱动安装卸载的方法

    1. X86服务器主机上 安装卸载驱动的方法: # 安装:$ cd bmnnsdk2-bm1684_vx.x.x/scripts$ sudo ./install_driver_pcie.sh#
    发表于09-19 07:15

    安装Linux的系统安装工具

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