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代表官方的

相关推荐
AlfredZhao13 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户97183563346619 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪21 小时前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
小宇宙Zz2 天前
Maven依赖冲突
java·服务器·maven
网络研究院2 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智2 天前
ARP代理--工作原理
运维·网络·arp·arp代理