RHEL9 DNF/YUM仓库管理软件包

DNF/YUM仓库管理软件包

  • 一个基于RPM包的软件包管理器
  • 能够从指定的服务器自动下载RPM包并且安装,自动处理依赖性关系,并且一次性安装所有依赖的软件包
  • C/S模式
    • Server服务端提供RPM软件包与数据库文件repodata
    • Client客户端使用dnf仓库

常用组合

组合参数 意义
dnf info 查看软件包详情 rpm -qip
dnf install 安装软件包 rpm -ivh
dnf list 显示全部软件包名称 rpm -a
dnf search 搜索仓库中的指定软件包 `rpm -qa
dnf version 显示版本信息
dnf update 更新软件包 需要订阅或拥有开发者权限
dnf remove 删除软件软件包 rpm -evh
dnf history 查看使用dnf进行的历史操作
dnf provides 查询文件来源 rpm -qf

列出软件包

bash 复制代码
dnf list "chor*"  # 使用通配符模糊查询
dnf list   # 列出所有包

列出包组,我们可以直接安装整个服务,而不需要一个一个安装

bash 复制代码
dnf grouplist

搜索对应的包

bash 复制代码
dnf search ntp    # dnf search NAME

搜索包的作用、信息

bash 复制代码
dnf info dos2unix  # 从软件仓库中搜索,即使软件包没有安装
# dnf info package_name

查看历史记录,可以查看使用dnf进行了什么操作

bash 复制代码
dnf history

查询文件来源

bash 复制代码
# 如果使用rpm,我们要指定文件的绝对路径
rpm -qf /etc/chrony.conf

# dnf 可以使用通配符代替路径
dnf provides *chrony.conf

# 搜索命令的来源文件,显示搜寻不到结果,在没有订阅的前提下,需要搭建第三方软件仓库
dnf provides sl


DNF和YUM其实一个东西,只是YUM是DNF的前身,通过查询命令可以看到其实都是连接到dnf-3上

bash 复制代码
which dnf
which yum
ll /usr/bin/dnf
ll /usr/bin/yum

查看存在的软件仓库

在RHEL7版本中,AppStream和BaseOS两个是在一个目录下;从RHEL8版本后开始分开放

  • 通过web查看(默认会一个Web共享),可以通过web访问http://content

  • 查看本地目录

BaseOS:指的是系统包(例如web服务)

AppStream:应用软件包

bash 复制代码
ll /content/rhel9.0/x86_64/dvd/AppStream
ll /content/rhel9.0/x86_64/dvd/repodata

我们可以发现在文件夹内都存在相同的文件夹

  • Packages:RPM软件包
  • repodata:软件包索引

查看当前已经启用仓库

bash 复制代码
dnf repolist

查看当前主机所有仓库,包括未启用

bash 复制代码
dnf repolist all

启用指定的仓库

bash 复制代码
dnf config-manager --enable openstack-17-tools-for-rhel-9-x86_64-debug-rpms

dnf config-manager --disenable openstack-17-tools-for-rhel-9-x86_64-debug-rpms  # 关闭
DNF仓库客户端配置

查看所有仓库文件

bash 复制代码
ll /etc/yum.repos.d/*.repo

查看redhat.repo仓库文件,这个是由订阅管理自动生成的内容

以第一段内容为例

  • [xxxx]:表示ID(唯一)
  • name:仓库名
  • baseurl:仓库地址
  • enabled:是否启用仓库
  • gpgcheck:是否检测签名(通过公钥检测)
  • gpgkey:公钥地址
  • sslverify:是否启用https
  • sslcacert:https使用的CA证书
  • sslclientkey:https使用的Client私钥
  • sslclientcert:https使用的Client证书
  • metadata_expire:仓库元数据(例如,软件包列表、依赖关系等)在本地缓存中的过期时间,针对Red Hat官方仓库的特定设置,以确保与官方仓库的同步和更新
  • enabled_metadata:自定义配置项
tex 复制代码
[名称]  --- 用于区分不同的源
name=  --- 名称/注释信息
baseurl=  --- 指定仓库/源的URL地址

enabled=  --- 用于指定是否启用这个仓库/源 [enable也可以写成enable]
		  0--- 不使用这个仓库
          1--- 使用这个仓库
          
gpgcheck=  --- 用于指定安装的软件包是否要进行数字签名的验证
		  0--- 不对每个安装包进行数字签名验证
		  1--- 对每个包做数字签名验证
		  
gpgkey=/path/  如果gpgcheck=1,则需要使用此选项指定公钥;如果gpgcheck=0,可以不写
通过修改配置文件自定义软件仓库/软件源
bash 复制代码
rm -rf /etc/yum.repos.d/*.repo   # 先删除原有的所仓库文件
vim /etc/yum.repo/yum.repo  # 创建仓库文件,文件名自定义即可,只需要保证后缀为.repo

# 写入下列内容
[AppStream]
name=AppStream
baseurl=file:///content/rhel9.0/x86_64/dvd/AppStream
enabled=1   # 默认启用 可以不写
gpgcheck=0  # 默认启用,0为不启用仓库检查
# 不写的话此处默认为gpgcheck=1
# 还需要额外指定证书[gpgkey=file:///content/rhel9.0/x86_64/dvd/RPM-GPG-KEY-redhat-release ]

[BaseOS]
name=BaseOS
baseurl=file:///content/rhel9.0/x86_64/dvd/BaseOS
enabled=1
gpgcheck=0

通过查看/etc/yum.repo文件可以查看默认选项

安装软件包

bash 复制代码
dnf install ftp

删除软件包

bash 复制代码
dnf remove ftp -y 
通过命令行自定义软件仓库/软件源
bash 复制代码
rm -rf /etc/yum.repos.d/*  # 分别测试,删除上述文件
dnf config-manager --help   # 我们可以查看到一个选项[--add-repo URL,添加后自动启用]
bash 复制代码
dnf config-manager --add-repo file:///content/rhel9.0/x86_64/dvd/BaseOS
dnf config-manager --add-repo file:///content/rhel9.0/x86_64/dvd/AppStream

查看添加后的仓库文件

bash 复制代码
ll /etc/yum.repos.d

可以发现仓库文件内容缺少了一条gpgcheck=0,其没有指定公钥

  • 可以修改/etc/yum.conf文件,将gpgchek=0 --> gpgcheck=1
bash 复制代码
vim /etc/yum.conf

# 修改文件内容
gpgcheck=0
  • 或者在仓库文件末尾追加一行gpgcheck=1
bash 复制代码
echo "gpgcheck=1" >> /etc/yum.repos.d/content_rhel9.0_x86_64_dvd_AppStream.repo
echo "gpgcheck=1" >> /etc/yum.repos.d/content_rhel9.0_x86_64_dvd_BaseOS.repo

查看追加后的内容

测试安装软件

bash 复制代码
dnf -y install ftp

第三方DNF仓库

因为只有Foundation可以联网,所以在Foundation上进行实验。

EPEL(Extra Packages for Enterprise Linux)是一个为Red Hat Enterprise Linux(RHEL)、CentOS以及其他兼容的系统提供额外软件包的仓库。

搭建RHEL的仓库

首先查询当前主机的版本

bash 复制代码
cat /etc/redhat-release

访问南京大学的镜像站,baseurl实际就是repodata所在的路径

bash 复制代码
# https://mirror.nju.edu.cn/epel/RHEL版本/Everything/系统架构
https://mirror.nju.edu.cn/epel/9/Everything/x86_64/

搭建软件仓库,自主选择搭建的方式

bash 复制代码
vim /etc/yum.repos.d/epel_nju.repo

# 写入下列内容
[nju]
name= nju
baseurl= https://mirror.nju.edu.cn/epel/9/Everything/x86_64/
enabled=1
gpgcheck=0

继续检索上面搜索不到的sl命令来源

bash 复制代码
dnf provides sl

安装

bash 复制代码
dnf install sl

查看软件包中的包含的文件

bash 复制代码
rpm -ql sl

查看效果

bash 复制代码
sl
搭建CentOS的仓库

我们先把sl删除,然后在把所有仓库文件删除

bash 复制代码
dnf remove sl
rm -rf /etc/yum.repos.d/*.repo

访问南京大学镜像站,查找Centos

bash 复制代码
https://mirror.nju.edu.cn/centos/8-stream/AppStream/x86_64/os/
https://mirror.nju.edu.cn/centos/8-stream/BaseOS/x86_64/os/

搭建软件仓库,这里我们使用命令添加的方式

bash 复制代码
dnf config-manager --add-repo https://mirror.nju.edu.cn/centos/8-stream/AppStream/x86_64/os/
dnf config-manager --add-repo https://mirror.nju.edu.cn/centos/8-stream/BaseOS/x86_64/os/

# 别忘记要添加"不对每个安装包进行数字签名验证",也就是gpgcheck=0,默认=1;这里我们直接修改主文件
vim /etc/yum.conf
gpgcheck=1   -->  gpgcheck=0


查看所有仓库文件

如果不想出现redhat.repo,可以取消订阅

bash 复制代码
subscription-manager unregister

搜索openssh包

bash 复制代码
dnf search openssh
第三方RPM包

https://pkgs.org/

可以搜索我们需要的RPM包

Official代表官方的

相关推荐
小O_好好学21 分钟前
CentOS 7文件系统
linux·运维·centos
哲伦贼稳妥1 小时前
一天认识一个硬件之机房地板
运维·网络·经验分享·其他
john_hjy1 小时前
11. 异步编程
运维·服务器·javascript
x晕x1 小时前
Linux dlsym符号查找疑惑分析
linux·运维·服务器
活跃的煤矿打工人2 小时前
【星海saul随笔】Ubuntu基础知识
linux·运维·ubuntu
hgdlip2 小时前
如何快速切换电脑的ip地址
网络·tcp/ip·电脑
fasewer2 小时前
第五章 linux实战-挖矿 二
linux·运维·服务器
楚灵魈3 小时前
[Linux]从零开始的网站搭建教程
linux·运维·服务器
小小不董3 小时前
《Linux从小白到高手》理论篇:深入理解Linux的网络管理
linux·运维·服务器·数据库·php·dba
豆豆3 小时前
为什么用PageAdmin CMS建设网站?
服务器·开发语言·前端·php·软件构建