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 |
列出软件包
dnf list "chor*" # 使用通配符模糊查询
dnf list # 列出所有包
列出包组,我们可以直接安装整个服务,而不需要一个一个安装
dnf grouplist
搜索对应的包
dnf search ntp # dnf search NAME
搜索包的作用、信息
dnf info dos2unix # 从软件仓库中搜索,即使软件包没有安装
# dnf info package_name
查看历史记录,可以查看使用dnf进行了什么操作
dnf history
查询文件来源
# 如果使用rpm,我们要指定文件的绝对路径
rpm -qf /etc/chrony.conf
# dnf 可以使用通配符代替路径
dnf provides *chrony.conf
# 搜索命令的来源文件,显示搜寻不到结果,在没有订阅的前提下,需要搭建第三方软件仓库
dnf provides sl
DNF和YUM其实一个东西,只是YUM是DNF的前身,通过查询命令可以看到其实都是连接到dnf-3上
which dnf
which yum
ll /usr/bin/dnf
ll /usr/bin/yum
查看存在的软件仓库
在RHEL7版本中,AppStream和BaseOS两个是在一个目录下;从RHEL8版本后开始分开放
-
通过web查看(默认会一个Web共享),可以通过web访问
http://content
-
查看本地目录
BaseOS:指的是系统包(例如web服务)
AppStream:应用软件包
ll /content/rhel9.0/x86_64/dvd/AppStream
ll /content/rhel9.0/x86_64/dvd/repodata
我们可以发现在文件夹内都存在相同的文件夹
- Packages:RPM软件包
- repodata:软件包索引
查看当前已经启用仓库
dnf repolist
查看当前主机所有仓库,包括未启用
dnf repolist all
启用指定的仓库
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仓库客户端配置
查看所有仓库文件
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:自定义配置项
[名称] --- 用于区分不同的源
name= --- 名称/注释信息
baseurl= --- 指定仓库/源的URL地址
enabled= --- 用于指定是否启用这个仓库/源 [enable也可以写成enable]
0--- 不使用这个仓库
1--- 使用这个仓库
gpgcheck= --- 用于指定安装的软件包是否要进行数字签名的验证
0--- 不对每个安装包进行数字签名验证
1--- 对每个包做数字签名验证
gpgkey=/path/ 如果gpgcheck=1,则需要使用此选项指定公钥;如果gpgcheck=0,可以不写
通过修改配置文件自定义软件仓库/软件源
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
文件可以查看默认选项
安装软件包
dnf install ftp
删除软件包
dnf remove ftp -y
通过命令行自定义软件仓库/软件源
rm -rf /etc/yum.repos.d/* # 分别测试,删除上述文件
dnf config-manager --help # 我们可以查看到一个选项[--add-repo URL,添加后自动启用]
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
查看添加后的仓库文件
ll /etc/yum.repos.d
可以发现仓库文件内容缺少了一条gpgcheck=0,其没有指定公钥
- 可以修改
/etc/yum.conf
文件,将gpgchek=0 --> gpgcheck=1
vim /etc/yum.conf
# 修改文件内容
gpgcheck=0
- 或者在仓库文件末尾追加一行
gpgcheck=1
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
查看追加后的内容
测试安装软件
dnf -y install ftp
第三方DNF仓库
因为只有Foundation可以联网,所以在Foundation上进行实验。
EPEL(Extra Packages for Enterprise Linux)是一个为Red Hat Enterprise Linux(RHEL)、CentOS以及其他兼容的系统提供额外软件包的仓库。
搭建RHEL的仓库
首先查询当前主机的版本
cat /etc/redhat-release
访问南京大学的镜像站,baseurl实际就是repodata
所在的路径
# https://mirror.nju.edu.cn/epel/RHEL版本/Everything/系统架构
https://mirror.nju.edu.cn/epel/9/Everything/x86_64/
搭建软件仓库,自主选择搭建的方式
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命令来源
dnf provides sl
安装
dnf install sl
查看软件包中的包含的文件
rpm -ql sl
查看效果
sl
搭建CentOS的仓库
我们先把sl删除,然后在把所有仓库文件删除
dnf remove sl
rm -rf /etc/yum.repos.d/*.repo
访问南京大学镜像站,查找Centos
https://mirror.nju.edu.cn/centos/8-stream/AppStream/x86_64/os/
https://mirror.nju.edu.cn/centos/8-stream/BaseOS/x86_64/os/
搭建软件仓库,这里我们使用命令添加的方式
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,可以取消订阅
subscription-manager unregister
搜索openssh包
dnf search openssh
第三方RPM包
https://pkgs.org/
可以搜索我们需要的RPM包
Official代表官方的