一、基础知识
1、软件包分类
- 源码包(Source Package):包含软件的源代码文件、编译指令和配置文件。需要用户自行编译安装,过程相对复杂,但灵活性高,可以定制安装选项。文件格式通常为.tar.gz、.tar.bz2等压缩格式。软件运行所有的文件都会在同一个包文件里面
- 二进制包(Binary Package):包含已经编译好的可执行文件、库文件、配置文件、帮助文件等,用户可以直接安装使用。常见的二进制包格式有RPM包(Red Hat Package Manager)、DEB包(Debian Package)等。rpm包主要在Red Hat、Fedora、CentOS等Linux发行版中使用。包名通常包含软件名称、版本号、发布号、适用的Linux发行版标识和架构标识等信息。deb包主要在Debian、Ubuntu等Linux发行版中使用。软件运行所有的文件分别放到相互依赖的多个包文件里面。
2、RedHat/CentOS 系列包管理工具
- yum:CentOS和Red Hat Enterprise Linux(RHEL)等发行版中的软件包管理工具,同样支持自动处理依赖关系和软件包的搜索、安装、升级等操作。
- dnf:Fedora等发行版中的新一代软件包管理工具,旨在替代yum,提供更快的软件包安装速度和更丰富的功能。
- rpm:负责rpm包的安装、查询、升级、卸载、验证等操作,仅处理单个rpm包,不自动处理依赖关系 ,依赖缺失会产生报错。
3、Ubuntu/Debian系列包管理工具
- apt:用于Debian及其衍生版如Ubuntu中的软件包管理,能够自动处理依赖关系,并提供丰富的软件包仓库。
- dpkg:底层包管理工具,直接操作 deb 包,可以安装,删除和构建软件包,但无法自动下载和安装软件包或其依赖项。
二、yum基础知识及使用
1、基础知识
- yum 最初是为基于 RPM 的 Linux 发行版(如 Fedora、CentOS、RHEL 等)设计的。它起源于 Yellowdog Linux 发行版,后来经过修改和扩展,成为许多主流 Linux 发行版中不可或缺的一部分。
- dnf 是 Fedora 项目开发的一个新的包管理器,相较于 yum ,dns 提供了更加快速和灵活的包管理体验。它支持并行下载和安装软件包,从而减少了总体等待时间。此外还提供了更加丰富的命令行选项和输出格式,使得用户可以更轻松地获取所需的信息,已经成为 Fedora 和一些其他基于 RPM 的 Linux 发行版的默认包管理器。而且 dnf 还保留了和 yum 的兼容性,配置也是通用的,所以在 Rocky linux9 里面,他们的操作基本上是一样的。
2、工作原理
yum、dnf 均基于 c/s 模式,服务端存放 rpm 包和包的元数据库,客户端访问 yum 服务端进行查询和安装。先在 yum 服务器上创建 yum repository(仓库),在仓库中事先存储了众多 rpm 包,以及包的相关的元数据文件(放置于特定目录 repodata 下),当 yum 客户端利用 yum/dnf 工具进行安装包时,会自动下载 repodata 中的元数据,查询元数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
3、客户端环境配置
yum 客户端配置文件
- /etc/yum.conf:为所有仓库提供公共配置
- /etc/yum.repos.d/*.repo:为每个仓库的提供配置文件
基础命令
#查看帮助
man 5 yum.conf#获取软件源信息
yum makecache#清理软件源信息
yum clean all#查看仓库的信息
yum repolist#查看仓库的更多信息
yum repolist -v
4、配置解析
全局配置:/etc/yum.conf
#安装包前要做包的合法和完整性校验
gpgcheck=1#同时可以安装3个包,最小值为2,如设为0或1,为不限制
installonly_limit=3#删除包时,是否将不再使用的包删除
clean_requirements_on_remove=True#升级时,自动选择安装最新版,即使缺少包的依赖
best=True#跳过不可用的
skip_if_unavailable=False
repo仓库配置:/etc/yum.repos.d/*.repo
[baseos]#仓库名称
name=Rocky Linux $releasever - BaseOS#仓库地址列表,多个baseurl指向的地址
#mirrorlist=https://mirrors.rockylinux.org/mirrorlistarch=$basearch&repo=BaseOS-$releasever$rltype#仓库地址
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/#是否对包进行校验,默认值为1
gpgcheck=1#是否启用,默认值为1,启用
enabled=1#rocky-9中新增配置,默认值false,附加在mirrorlist之后,便于仓库收集客户端信息
countme=1#rocky-9中新增配置,metadata 过期时间
metadata_expire=6h#校验key的地址
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9
baseurl 有多种写法,支持多种协议
baseurl=file:///cdrom/Centos-7.6/
baseurl=https://mirrors.aliyun.com/rockylinux/9.6/AppStream/x86_64/os/
baseurl=http://mirrors.aliyun.com/rockylinux/9.6/AppStream/x86_64/os/
baseurl=ftp://10.0.0.15/
5、配置yum源
#更新yum源
yum makecache#查看yum源
yum repolist查看yum源信息
yum repolist -v查看指定yum源信息
yum repolist --repoid=aliyun -v
6、国内yum源地址(RockyLinux)
- 阿里云:https://mirrors.aliyun.com/rockylinux/
- 中国科学技术大学:http://mirrors.ustc.edu.cn/rocky/
- 南京大学:https://mirrors.nju.edu.cn/rocky/
- 上海交通大学:https://mirrors.sjtug.sjtu.edu.cn/rocky/
- 东软信息学院:http://mirrors.neusoft.edu.cn/rocky/
7、镜像挂载+配置本地yum源
挂载本地镜像文件
#新建目录 /mnt/cdrom 用于挂载镜像
mkdir -p /mnt/cdrom#上传 CentOS-7-x86_64-Minimal-2009.iso 文件到服务器 /mnt 目录下
#挂载镜像
mount -o loop /mnt/Rocky-9.4-x86_64-dvd.iso /mnt/cdrom# 取消挂载
umount /mnt/cdrom
注:在 Linux 中挂载 iso 镜像后,挂载点的磁盘使用率显示100%是正常现象,无需处理。原因是:iso 镜像文件的本质是一个完整的光盘文件系统镜像,包含了所有文件的打包数据,且文件系统大小是固定的(即为镜像文件的大小)。当挂载 iso 时,操作系统会将其识别为一个“只读的虚拟磁盘”,总量就是 iso 文件的大小,且内部没有空闲空间(所有空间都被镜像内容占满)。iso 镜像的设计目的就是“读取内容”(如安装操作系统,提取文件等),而非“写入数据”,所以也无需空闲空间。因此 df -h 等命令会显示该挂载点的磁盘使用率为100%。
配置本地yum源
[cdrom-appstream]
name=cdrom appstream
baseurl=file:///mnt/cdrom/AppStream
gpgcheck=0[cdrom-baseos]
name=cdrom baseos
baseurl=file:///mnt/cdrom/BaseOS/
gpgcheck=0
清除缓存信息并更新yum源
#清除yum源缓存
yum clean all
8、yum常用命令
命令格式:
yum [options] COMMAND
常用子命令:
- autoremove:卸载包,同时卸载依赖
- clean:清除本地缓存
- install:包安装
- list:列出所有包
- makecache:重建缓存
- search:包搜索,包括包名和描述
一般子命令:
- check-update:检查可用更新
- downgrade:包降级
- group:包组相关
- help:显示帮助信息
- history:显示history
- info:显示包相关信息
- reinstall:重装
- remove:卸载
- repolist:显示或解析repo源
- search:包搜索,包括包名和描述
常用选项:
- -y:自动回答为 yes
一般选项:
- -c file:指定配置文件,默认使用/etc/yum.conf
- -v:显示详细信息
- -b:尝试在可用包中寻找最匹配的版本
- --nogpgcheck:不进行包校验
- --repo repoid:指定repo源
- --enablerepo repoid:临时启用repo源,可用通配符
- --disablerepo repoid:临时禁用repo源,可用通配符
- --nodocs:不安装文档
- --skip-broken:跳过有问题的包
- --enable:启用源,配合 configmanager
- --disable:禁用源,配合 configmanager
- -x package:排除指定包,可用通配符
- --downloadonly:只下载,不安装
9、应用示例
#默认显示所有启用的yum源
yum repolist #显示启用的yum源
yum repolist --enable#显示禁用的yum源
yum repolist --disabled#查看所有软件
yum list#查看所有可更新的包
yum list --updates#查看所有以 t 开头的包,包括己安装的和可安装的
yum list --all t*#查看所有可用的包
yum list --available#查看指定软件可用的包
yum list --available telnet#查看所有已安装软件
yum list --installed#查看指定的已安装软件
yum list --installed telnet#查看软件
yum list telnet#指定源查看软件
yum list --repo=aliyun telnet#交互方式安装软件 - 需要输入 y 确认
yum install yum install httpd#直接安装软件 - 无需询问
yum install -y telnet#不安装软件,仅下载软件
yum install telnet --downloadonly --downloaddir=/tmp/#使用本地rpm文件安装
yum localinstall nginx-1.20.1-16.el9_4.1.x86_64.rpm#卸载单个软件
yum remove telnet#卸载多个软件
yum remove telnet httpd#升级指定包
yum update telnet#根据名字检索软件
yum search telnet#查看指定包所依赖的库和程序
yum deplist nginx#查看yum历史命令
yum history#查看跟指定软件相关的历史命令
yum history telnet