三分钟速学linux-centos/redhat常见包管理器

三分钟速学linux-centos/redhat常见包管理器

三分钟速学linux-centos/redhat常见包管理器

环境说明:
博客使用的linux版本:CentOS Linux release 7.7.1908 (Core)
终端汉化:汉化是为了方便学习,点击这里查看
yum源:阿里源

一、rpm包管理器

  1. 简介
  • rpm命令是Red-Hat Package Manager(RPM软件包管理器)的缩写, 该命令用于管理Linux 下软件包的软件。在 Linux 操作系统下,几乎所有的软件均可以通过RPM 进行安装、卸载及管理等操作。
  • rpm命令包含了五种基本功能:安装、卸载、升级、查询和验证。
  1. 语法格式:rpm [参数] [软件包]
  2. 常用参数:
参数 含义
-a 查询所有的软件包
-b或-t 设置包装套件的完成阶段,并指定套件档的文件名称;
-c 只列出组态配置文件,本参数需配合”-l”参数使用
-d 只列出文本文件,本参数需配合”-l”参数使用
-e或–erase 卸载软件包
-f 查询文件或命令属于哪个软件包
-h或–hash 安装软件包时列出标记
-i 显示软件包的相关信息
–install 安装软件包
-l 显示软件包的文件列表
-p 查询指定的rpm软件包
-q 查询软件包
-R 显示软件包的依赖关系
-s 显示文件状态,本参数需配合”-l”参数使用
-U或–upgrade 升级软件包
-v 显示命令执行过程
-vv 详细显示指令执行过程
  1. 应用实例
  • 查询本机是否安装了nginx及安装了那些nginx的包
rpm -qa | grep nginx

三分钟速学linux-centos/redhat常见包管理器
-安装 .rpm包

rpm -ivh rmp包

二、yum-基于RPM的软件包管理器

  1. yum简介:
    Yellow dog Updater,Modified黄狗管理器,更新管理器,是一个在Fedora和RedHat以及CentOS中的shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
  2. 语法简介:yum 【参数】【包名】
  3. 常用参数:
参数 含义
-h 显示帮助信息
-y 对所有的提问都回答“yes”
-c 指定配置文件
-q 安静模式
-v 详细模式
-t 检查外部错误
-d 设置调试等级(0-10)
-e 设置错误等级(0-10)
-R 设置yum处理一个命令的最大等待时间
-C 完全从缓存中运行,而不去下载或者更新任何头文件
install 安装rpm软件包
update 更新rpm软件包
check-update 检查是否有可用的更新rpm软件包
remove 删除指定的rpm软件包
list 显示软件包的信息
search 检查软件包的信息
info 显示指定的rpm软件包的描述信息和概要信息
clean 清理yum过期的缓存
shell 进入yum的shell提示符
resolvedep 显示rpm软件包的依赖关系
localinstall 安装本地的rpm软件包
localupdate 显示本地rpm软件包进行更新
deplist 显示rpm软件包的所有依赖关系
  1. 应用实例:
  • 使用yum显示是否安装了nginx,并查看yum源中的nginx版本
yum list installed nginx |grep nginx
yum info nginx 

三分钟速学linux-centos/redhat常见包管理器

  • yum安装、卸载软件
yum install -y httpd
yum remove -y httpd 

三、dnf- 新一代的RPM软件包管理器

  1. dnf 命令简介:
    DNF 是新一代的rpm软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近,它取代了yum,正式成为 Fedora 22 的包管理器。
    DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。DNF使用 RPM, libsolv 和 hawkey 库进行包管理操作。尽管它没有预装在 CentOS 和 RHEL 7 中,但你可以在使用 YUM 的同时使用 DNF

  2. 语法格式

  3. 常用参数

参数 含义
repolist 显示系统中可用的 DNF 软件库
list 列出用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包
search <包名> 搜索软件库中的软件包
provides <路径> 查找某一文件的提供者
info <包名> 查看软件包详情
install <包名> 安装软件包
update <包名> 升级软件包
check-update 检查系统软件包的更新
update 升级所有系统软件包
remove 删除软件包
autoremove 删除无用孤立的软件包
clean all 删除缓存的无用软件包
help <命令名> 获取有关某条命令的使用帮助
help 查看所有的dnf命令及其用途
history 查看dnf命令的执行历史
grouplist 查看所有的软件包组
groupinstall <软件包组名称> 安装一个软件包组
groupupdate <软件包组名称> 升级一个软件包组中的软件包
groupremove <软件包组名称> 删除一个软件包组
distro-sync 更新软件包到最新的稳定发行版
reinstall <包名> 重新安装特定软件包
downgrade <包名> 回滚某个特定软件的版本
–version 查看 DNF 包管理器版本
  1. 应用实例:
  • 查看nginx包;安装nginx;重新安装nginx;卸载nginx
dnf list | grep nginx #查看源中nginx包
dnf install -y nginx # 安装nginx
dnf reinstall -y nginx #重新安装nginx
dnf remove -y nginx #卸载nginx

-查看dnf源,查看ningx的提供

dnf repolist  
#等效yum命令
yum repolist 

dnf provides nginx

三分钟速学linux-centos/redhat常见包管理器

  • 回滚nginx版本到指定版本(1.18.0→1.16.1)
#安装nginx1.18.0
vim #配置nginx1.18.0的源 
vim /etc/yum.repos.d/CentOS-Base.repo
#文件最后添加以下内容,保存退出
#------------------------------------
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/x86_64/
gpgcheck=0
enabled=1
#--------------------------------------
dnf install -y  nginx #安装1.18.0版本的ningx
#默认安装最新版本,我们配置了1.18.0的源,所以这里可以不指定具体版本
dnf install -y  nginx-1:1.18.0-1.el7.ngx.x86_64
nginx -v #查看nginx版本
dnf downgrade nginx-1:1.16.1-1.el7.x86_64 #将nginx降级到1.16.1版本

三分钟速学linux-centos/redhat常见包管理器

四、linux centos/redhat 小结

  • 这里我们讲了三个包管理器,yum和dnf都是基于 rpm的包管理器
  • 我们建议使用dnf ,原因大家参考下面

这里是引用DNF 由 Yum 中分支出来,采用了基于 SAT 的依赖解决算法,目标是在 Fedora 22中取代 Yum。随着 DNF 1.0 的发布,已经到了取而代之的时候了。Yum 无法适应倡导“默认即 Python 3”理念的 Fedora ,而 DNF 则可以同时支持 Python 2 和 Python 3。 DNF 按照相同的语义逻辑保留了命令行接口的一致。幸运的是,DNF 的 Python API 是完全不同于 Yum 的。这两个项目之间的所有已知的不兼容都 已经记录在案了。在 Fedora Core 22 中只有 DNF,官方不会提供 Yum 了。当然,如果你愿意,可以自己下载它。这个包仍然可以如同以往一样调用, Python API 也没变化,只是 yum 程序的名称被改名为 yum-deprecated 了,而且从命令行调用 yum 会被重定向到 DNF。这样,你就可以在系统上同时维持 Yum 和 DNF 了。

启 动 DNF 项目的原因是由于 Yum 的三大问题:API 缺乏文档、有问题的依赖解决算法,及无法重构内部函数。这里提到的最后一个问题,其实和文档的缺乏有关。Yum 插件使用的各种方法来源于 Yum 的代码,一旦改变有可能造成 Yum 的突然崩溃!DNF 致力于解决这些 Yum 的问题,从一开始,所有对外的 API 的要做好完备的文档。在绝大多数新提交中都包含了测试单元。不允许各种奇怪的、乱七八糟的补丁。该项目是通过敏捷开发进行的:对用户会有较大影响的需求会 得到尽快的实现。

现 在,DNF 团队正在移植各种流行的 Yum 插件到 DNF 上,并改进其用户体验。为了更加方便切换到 DNF,我们开发了一个 DNF 移植插件,来将 Yum 中已经安装的包、分组和事务数据导入到新的 Fedora 包管理器中