一、Yum 仓库基本概念
Yum(Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器。它能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。Yum 仓库是一个存储了众多 RPM 软件包以及软件包相关信息(如包名、版本、依赖关系等)的目录结构集合。它可以分为公共仓库和私有仓库。
- 公共仓库:由软件开发商、Linux 发行版维护者或第三方组织提供,供广大用户免费使用。例如,CentOS 官方的 yum 仓库就包含了大量经过测试和稳定的软件包。
- 私有仓库:由企业或个人根据自身需求搭建,用于管理内部使用的软件包,可更好地控制软件版本和安全性,满足特定的业务需求。
二、常见yum操作指令
- 软件包安装与升级类:
- yum install <package1> <package2>...:安装一个或多个软件包。如:yum install wget 安装 wget 工具。
- yum groupinstall <group-name>:安装软件包组。如:yum groupinstall "Development Tools" 安装开发工具组。
- yum update:升级系统中所有已安装的软件包到最新版本。
- yum update <package-name>:升级指定的软件包。
- yum upgrade:与yum update类似,进行系统软件包的全面升级。
- 软件包查询类:
- yum list:列出所有可用的软件包。
- yum list installed:列出系统中已安装的所有软件包。
- yum list updates:列出可升级的软件包。
- yum info <package-name>:显示指定软件包的详细信息。
- yum provides <command>:查找哪个软件包提供了特定的命令。如:yum provides grep查找提供 grep 命令的软件包。
- yum search <keyword>:根据关键字查找可用的软件包。
- 软件包删除与清理类:
- yum remove <package-name>:删除指定的软件包。
- yum autoremove:自动删除不再需要的依赖包。
- yum clean all:清除 Yum 缓存,包括软件包文件、元数据等。
- 仓库管理类:
- yum repolist:列出系统中可用的 Yum 仓库。
- yum repolist all:列出系统中所有的 Yum 仓库,包括启用和禁用的。
- yum enable <repo-id>:启用指定的 Yum 仓库。
- yum disable <repo-id>:禁用指定的 Yum 仓库。
- yum history:查看 Yum 的操作历史记录。
- yum deplist <package-name>:显示指定软件包的依赖关系列表。
三、搭建 Yum 公共仓库
- 安装必要软件
- 以 CentOS 系统为例,确保系统中安装了httpd(Apache HTTP 服务器)和createrepo工具。可以使用以下命令安装:
sudo yum install httpd createrepo
-
准备软件包目录
- 创建一个目录用于存放软件包,例如/var/www/html/yumrepo。
- 将需要的 RPM 软件包复制到这个目录中。
-
创建仓库元数据
- 进入软件包目录,执行以下命令创建仓库元数据:
createrepo /var/www/html/yumrepo
- 启动 HTTP 服务
- 启动httpd服务,并设置为开机自启动:
sudo systemctl start httpd
sudo systemctl enable httpd
- 配置客户端
- 在客户端系统上,编辑/etc/yum.repos.d/目录下的.repo文件,添加如下内容:
四、搭建 Yum 私有仓库
-
安装软件
- 安装docker和docker-compose,以便使用容器化方式搭建私有仓库。安装方法可参考相应的官方文档。
-
创建docker-compose.yml文件
- 在一个合适的目录下创建docker-compose.yml文件,内容如下:
version: '3'
services:
registry:
image: registry:2
ports:
- "5000:5000"
volumes:
-./data:/var/lib/registry
- 启动私有仓库
- 在该目录下执行以下命令启动私有仓库:
docker-compose up -d
- 配置客户端
- 在客户端系统上,编辑/etc/yum.repos.d/目录下的.repo文件
五、写在最后
问:如果有多个仓库,是否可以设置yum源的优先级设定?
- 可以设置,但是需要安装插件yum-plugin-priorities。
- 安装完插件后,只需要在yum源配置文件*.repo里指定优先级即可
- 比如当你同时有epel仓库,又额外指定了某软件repo仓库,默认epel里的软件版本较低,你可以给自定义的软件仓库添加优先级
问:如果想把从网络源安装的软件包下载到本地方便后续使用,怎么做呢?
- 只需要开启yum缓存功能即可
- 通过修改配置文件开启yum缓存功能