第404集软件管理-YUM工具管理RPM包
|字数总计:3.8k|阅读时长:16分钟|阅读量:
软件管理 - YUM工具管理RPM包
1. YUM概述
yum是基于RPM包管理, 能够自动解决依赖关系, 极大的方便rpm包的安装升级。
1.1 YUM特点
- 联网获取软件: 从远程仓库获取软件包
- 基于RPM管理: 底层使用RPM包管理
- 自动解决依赖: 自动下载并安装依赖包
- 命令简单好记: 命令简洁易用
- 生产最佳实践: 企业级软件管理方案
1.2 YUM与RPM对比
| 特性 |
RPM |
YUM |
| 依赖处理 |
需要手动解决 |
自动解决 |
| 软件源 |
本地文件 |
远程仓库 |
| 安装速度 |
快 |
相对慢(需要下载) |
| 适用场景 |
离线安装、单个包 |
在线安装、批量安装 |
2. YUM软件仓库管理
2.1 本地YUM仓库
有时候你的linux系统不能联网,当然就不能很便捷的使用联网的yum源了,这时候就需要你自己会利用linux系统光盘制作一个yum源。具体步骤如下:
步骤1: 挂载镜像
步骤2: 备份原有仓库
步骤3: 创建新仓库文件
方式1: 使用yum-config-manager命令
方式2: 手动添加repo配置文件
1 2 3 4 5 6 7
| [root@liyanzhao ~] [cdrom] name=This is local cdrom baseurl=file:///mnt enabled=1 gpgcheck=0
|
repo配置文件说明:
| 配置项 |
说明 |
示例 |
[] |
仓库名称 |
[cdrom] |
name |
仓库描述信息 |
name=This is local cdrom |
baseurl |
YUM源url地址 |
baseurl=file:///mnt |
enabled |
是否激活该YUM源 |
enabled=1 (0代表禁用,1代表激活,默认为激活) |
gpgcheck |
安装软件时是否检查签名 |
gpgcheck=0 (0代表禁用,1代表激活) |
baseurl支持的类型:
file:// - 本地文件系统
ftp:// - FTP服务器
http:// - HTTP服务器
https:// - HTTPS服务器
步骤4: 刷新repos生成缓存
2.2 网络YUM仓库
官方网络YUM源配置
阿里镜像站点: http://mirrors.aliyun.com
1 2 3
| [root@liyanzhao ~] http://mirrors.aliyun.com/repo/Centos-7.repo
|
EPEL扩展源
EPEL (Extra Packages for Enterprise Linux): 提供额外的软件包
1 2 3 4 5 6
| [root@liyanzhao ~]
[root@liyanzhao ~] http://mirrors.aliyun.com/repo/epel-7.repo
|
2.3 官方YUM仓库
Nginx官方源
1 2 3 4 5 6 7
| [root@liyanzhao ~] [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1
|
其他常用官方源
MySQL官方源:
1 2 3
| wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm rpm -ivh mysql80-community-release-el7-3.noarch.rpm
|
Zabbix官方源:
1 2
| rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
|
2.4 红帽配置Centos仓库
红帽Redhat7替换Centos7网络源
步骤1: 卸载红帽yum源
1 2
| rpm -e $(rpm -qa|grep yum) --nodeps
|
步骤2: 删除所有repo相关文件
1 2 3 4
| rm -rf /etc/yum.conf rm -rf /etc/yum.repos.d/ rm -rf /var/cache/yum
|
步骤3: 下载centos相关yum组件
1 2 3 4 5 6 7 8 9 10 11 12 13
| wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-154.el7.centos.noarch.rpm wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-42.el7.noarch.rpm wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-updateonboot-1.1.31-42.el7.noarch.rpm wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-utils-1.1.31-42.el7.noarch.rpm
curl -o yum-utils-1.1.31-42.el7.noarch.rpm https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-utils-1.1.31-42.el7.noarch.rpm curl -o yum-3.4.3-154.el7.centos.noarch.rpm https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-154.el7.centos.noarch.rpm curl -o yum-metadata-parser-1.1.4-10.el7.x86_64.rpm https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm curl -o yum-plugin-fastestmirror-1.1.31-42.el7.noarch.rpm https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-42.el7.noarch.rpm curl -o yum-updateonboot-1.1.31-42.el7.noarch.rpm https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-updateonboot-1.1.31-42.el7.noarch.rpm
|
步骤4: 安装所有相关组件
1 2
| [root@liyanzhao-node1 ~]
|
步骤5: 下载base和epel仓库
1 2 3 4 5 6
| wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo sed -i 's#\$releasever#7#g' /etc/yum.repos.d/CentOS-Base.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
|
3. YUM软件命令管理
3.1 搜索软件包指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
|
3.2 安装软件包指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
|
3.3 重装软件包指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| [root@liyanzhao ~] vsftpd-2.2.2-24.el6.x86_64
[root@liyanzhao ~] /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~] /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf
|
3.4 更新软件包指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| [root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
|
3.5 删除软件包指令
1 2 3 4 5 6 7 8 9
| [root@liyanzhao ~]
[root@liyanzhao ~] [root@liyanzhao ~]
[root@liyanzhao ~]
|
3.6 仓库相关指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~] [root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~] [root@liyanzhao ~]
|
3.7 缓存相关指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| [root@liyanzhao ~]
[root@liyanzhao ~] [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=1 //启动缓存
[root@liyanzhao ~]
[root@liyanzhao ~]
|
另一种缓存rpm包方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
|
3.8 包组相关指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [root@liyanzhao ~]
[root@liyanzhao ~] "Compatibility libraries" \ "Base Debugging Tools"
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
|
3.9 历史记录指令
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| [root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
[root@liyanzhao ~]
|
3.10 全局配置文件
配置文件说明:
1 2 3 4 5 6 7 8 9 10 11 12 13
| [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 bugtracker_url
|
4. YUM签名检查机制
rpm软件提供组织redhat在构建rpm包时, 使用其私钥private key对 rpm进行签名
客户端在使用rpm为了验证其合法性, 可以使用redhat提供的公钥public key进行签名检查
4.1 方式1: 指定公钥的位置
1 2 3 4 5 6 7 8
| [root@liyanzhao ~] [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
|
4.2 方式2: 提前导入公钥
1 2 3 4 5 6 7 8 9 10
| [root@liyanzhao ~]
[root@tianyun ~] [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
gpgcheck=1
|
4.3 方式3: 不进行签名验证
1 2 3 4 5
| [root@liyanzhao~]
gpgcheck=0
|
4.4 签名检查说明
| 方式 |
说明 |
安全性 |
| gpgcheck=1 + gpgkey |
检查签名并指定公钥位置 |
高 |
| gpgcheck=1 + 导入公钥 |
检查签名,公钥已导入 |
高 |
| gpgcheck=0 |
不检查签名 |
低(不推荐) |
| –nogpgcheck |
单次安装不检查签名 |
低(临时使用) |
5. 构建企业YUM仓库
5.1 环境准备
需求:
- 本地光盘提供基础软件包Base
- yum缓存提供update软件包
- yum缓存提供常用软件包: nginx, zabbix, docker, saltstack
5.2 服务端配置
步骤1: 基础环境准备
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| [root@yum_server_69_112 ~]
[root@yum_server_69_112 ~]
[root@yum_server_69_112 ~] [root@yum_server_69_112 ~] [root@yum_server_69_112 ~]
[root@yum_server_69_112 ~] [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=1
[root@yum_server_69_112 ~]
|
步骤2: 提供基础base源
1 2 3 4 5 6 7 8
| [root@yum_server_69_112 ~]
[root@yum_server_69_112 ~]
[root@yum_server_69_112 ~]
|
步骤3: 提供第三方源
1 2 3 4 5 6 7 8 9
| [root@yum_server_69_112 ~]
[root@yum_server_69_112 ~]
[root@yum_server_69_112 ~] -iname "*.rpm" -exec cp -rf {} /var/ftp/ops \;
|
步骤4: 安装createrepo并创建repodata仓库
1 2 3 4 5 6 7 8 9
| [root@yum_server_69_112 ~]
[root@yum_server_69_112 ~]
[root@yum_server_69_112 ~]
|
5.3 客户端使用yum源
步骤1: 配置并使用base基础源
1 2 3 4 5 6 7 8 9 10
| [root@yum_client_69_113 ~]
[root@yum_client_69_113 ~] [centos74] name=centos74_base baseurl=ftp://192.168.69.112/centos74 gpgcheck=0 enabled=1
|
步骤2: 客户端指向本地ops源
1 2 3 4 5 6 7 8 9 10 11 12 13
| [root@yum_client_69_113 ~] [ops] name=local ftpserver baseurl=ftp://192.168.69.112/ops gpgcheck=0 enabled=1
[root@yum_client_69_113 ~]
[root@yum_client_69_113 ~]
|
5.4 企业YUM仓库优化
优化1: 使用HTTP服务
1 2 3 4 5 6 7 8 9 10 11
| yum install -y httpd systemctl start httpd systemctl enable httpd
ln -s /var/ftp/centos74 /var/www/html/centos74 ln -s /var/ftp/ops /var/www/html/ops
baseurl=http://192.168.69.112/centos74
|
优化2: 定期更新仓库
1 2 3 4 5 6 7 8 9
| vim /root/update_repo.sh
createrepo --update /var/ftp/centos74 createrepo --update /var/ftp/ops
crontab -e 0 2 * * * /root/update_repo.sh
|
优化3: 仓库权限控制
1 2 3 4
| vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES anon_root=/var/ftp
|
6. YUM命令总结
6.1 软件包管理
| 命令 |
功能 |
示例 |
yum install |
安装软件包 |
yum install nginx -y |
yum localinstall |
安装本地RPM包 |
yum localinstall package.rpm |
yum reinstall |
重装软件包 |
yum reinstall nginx |
yum update |
更新软件包 |
yum update nginx -y |
yum remove |
删除软件包 |
yum remove nginx -y |
yum erase |
删除软件包 |
yum erase nginx -y |
6.2 查询命令
| 命令 |
功能 |
示例 |
yum list |
列出软件包 |
yum list |
yum list installed |
列出已安装的包 |
yum list installed |
yum list available |
列出可用的包 |
yum list available |
yum info |
显示软件包信息 |
yum info nginx |
yum search |
搜索软件包 |
yum search nginx |
yum provides |
查询文件属于哪个包 |
yum provides /etc/my.cnf |
yum deplist |
查看依赖关系 |
yum deplist nginx |
6.3 仓库管理
| 命令 |
功能 |
示例 |
yum repolist |
列出仓库 |
yum repolist |
yum repolist all |
列出所有仓库 |
yum repolist all |
yum-config-manager |
管理仓库 |
yum-config-manager --enable epel |
6.4 缓存管理
| 命令 |
功能 |
示例 |
yum makecache |
生成缓存 |
yum makecache |
yum clean all |
清除所有缓存 |
yum clean all |
yum clean packages |
清除包缓存 |
yum clean packages |
6.5 包组管理
| 命令 |
功能 |
示例 |
yum groups list |
列出包组 |
yum groups list |
yum groups install |
安装包组 |
yum groups install "Development tools" |
yum groups remove |
删除包组 |
yum groups remove "Development tools" |
6.6 历史记录
| 命令 |
功能 |
示例 |
yum history |
查看历史 |
yum history |
yum history info |
查看历史详情 |
yum history info 1 |
yum history undo |
撤销操作 |
yum history undo 1 |
yum history redo |
重做操作 |
yum history redo 1 |
7. YUM最佳实践
7.1 仓库配置建议
- 使用国内镜像: 提高下载速度
- 定期更新缓存: 使用
yum makecache更新元数据
- 启用缓存: 设置
keepcache=1保存下载的RPM包
- 签名验证: 生产环境启用
gpgcheck=1
7.2 安装建议
- 使用-y参数: 避免交互式确认
- 批量安装: 一次安装多个相关软件包
- 查看依赖: 安装前使用
yum deplist查看依赖
- 测试安装: 使用
--downloadonly测试下载
7.3 维护建议
- 定期更新: 定期执行
yum update更新系统
- 清理缓存: 定期清理不需要的缓存
- 备份配置: 备份
/etc/yum.repos.d/目录
- 监控日志: 查看
/var/log/yum.log了解操作历史