Linux系统之YUM

Posted jasonminghao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统之YUM相关的知识,希望对你有一定的参考价值。

02 YUM工具管理RPM包

1.YUM软件仓库管理

yum是基于RPM包管理,yum最大的优势在于联网下载所需要的rpm包,也能够从指定的服务器下载RPM包安装,同时能够自动处理依赖性关系,并且一次安装所有依赖的软件包,无需繁琐地一次次下载、安装。
yum提供了查询、安装、删除某一个、一组甚至全部软件包的命令,而且命令简介又好记忆。yum安装才是真正的生产最佳实践

1.联⽹获取软件
2.基于RPM管理
3.⾃动解决依赖
4.命令简单好记
5.⽣产最佳实践

1.1YUM全局配置

#vim /etc/yum.conf
cachedir=/var/cache/yum/$basearch/$releasever  #缓存目录
keepcache=0     #缓存软件包,1 启动 0 关闭
debuglevel=2    #调试级别
logfile=/var/log/yum.log #日志记录位置
exactarch=1     #检查平台是否兼容
obsoletes=1     #检查包是否废弃
gpgcheck=1      #检查来源是否合法,需要有制作者的公钥信息
plugins=1       #是否启动查询
installonly_limit=5
bugtracker_url
distroverpkg=centos-release

1.2本地光驱YUM源配置

有时候你的linux系统不能联⽹,当然就不能很便捷的使⽤联⽹的yum源了,这时候就需要你⾃⼰ 会利⽤linux系统光盘制作⼀个yum源。具体步骤如下:

1.挂载镜像

mount /dev/cdrom  /mnt/

2.备份原有的仓库

cp -r /etc/yum.repos.d /etc/yum.repos.d.bak

3.删除仓库内所有源

rm -rf /etc/yum.repos.d/*

4.创建新的仓库文件,并加入如下内容

# vim /etc/yum.repos.d/cdrom.repo
[repo_dev]
name=Local_centos
baseurl=file:#/mnt
enabled=1
gpgcheck=0

[]          #仓库名称 
name        #仓库描述信息
baseurl     #YUM源url地址 ,可以是file:# ftp:# http:# 
enabled     #是否激活该YUM源(0代表禁⽤,1代表激活,默认为激活) 
gpgcheck    #安装软件时是否检查签名(0代表禁⽤,1代表激活)

5.刷新repos⽣成缓存

yum makecache

1.3网络YUM源配置

官⽅⽹络YUM源配置
阿里镜像站,传送门

基本源:Base
扩展源:epel
官方源:nginx、zabbix ...

Base基本源

// Base/Extras/Updates: 系统默认国外官⽅源 
[root@xmh ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo \\
xmhhttp:#mirrors.aliyun.com/repo/Centos-7.repo

EPEL扩展源

//国外epel源 
[root@xmh ~]# yum -y install epel-release

//阿⾥云epel源 
[root@xmh ~]# wget -O /etc/yum.repos.d/epel.repo \\ 
http:#mirrors.aliyun.com/repo/epel-7.repo

官方源
1.编辑repo文件添加Nginxrepo源

//所有源的查找⽅式基本⼀致,zabbix,mysql,saltstack,openstack
[root@xmh ~]# vim /etc/yum.repos.d/nginx.repo 
[nginx] 
name=nginx repo 
baseurl=http:#nginx.org/packages/centos/7/$basearch/ 
gpgcheck=0 
enabled=1

2.使用rpm方式安装Zabbix的repo源

https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

//使用rpm安装会自动将安装包中的已打包好的zabbix的repo文件进行安装

1.4红帽配置Centos仓库

红帽Redhat7替换Centos7⽹络源

//1.卸载红帽yum源 
rpm -e $(rpm -qa|grep yum) --nodeps

//2.删除所有repo相关⽂件 
rm -rf /etc/yum.conf 
rm -rf /etc/yum.repos.d/ 
rm -rf /var/cache/yum

//3.下载centos相关yum组件
wget https:#mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-161.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-50.el7.noarch.rpm
wget https:#mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-updateonboot-1.1.31-50.el7.noarch.rpm
wget https:#mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-utils-1.1.31-50.el7.noarch.rpm

#如果没有wget命令则使⽤curl命令
curl -o yum-3.4.3-161.el7.centos.noarch.rpm https:#mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-161.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-50.el7.noarch.rpm https:#mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
curl -o yum-updateonboot-1.1.31-50.el7.noarch.rpm https:#mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-updateonboot-1.1.31-50.el7.noarch.rpm
curl -o yum-utils-1.1.31-50.el7.noarch.rpm https:#mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-utils-1.1.31-50.el7.noarch.rpm

3.安装所有相关组件
[root@xmh ~]# rpm -ivh *.rpm

4.下载base和epel仓库 
//base源,来自阿里云
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

//epel源,来自阿里云
wget -O /etc/yum.repos.d/epel.repo http:#mirrors.aliyun.com/repo/epel-7.repo

5.刷新repos⽣成缓存
yum makecache

2.YUM软件命令管理

2.1搜索软件包指令

//列出软件仓库中可⽤的软件 
[root@xmh ~]# yum list

//进⾏模糊查找 
[root@xmh ~]# yum list|grep ftp

//列出软件包详情 
[root@xmh ~]# yum info ftp 

2.2安装软件包指令

//安装软件只需要给出软件名称 
[root@xmh ~]# yum install traceroute

//安装过程中分析依赖关系后,直接安装,⽆需交互 
[root@xmh ~]# yum install php -y

//安装本地的rpm包, 如果有依赖关系, 会⾃动从软件仓库中下载所需依赖(⾮来⾃.repo定义的软件仓库) 
[root@xmh ~]# yum localinstall /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm

//安装⽹络上rpm包 
[root@xmh ~]# yum install http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

2.3重装软件包指令

//检查软件是否存在 
[root@xmh ~]# rpm -q vsftpd 
vsftpd-2.2.2-24.el6.x86_64

//检查vsftpd软件配置⽂件 
[root@xmh ~]# rpm -qc vsftpd 
/etc/logrotate.d/vsftpd 
/etc/pam.d/vsftpd 
/etc/vsftpd/ftpusers 
/etc/vsftpd/user_list 
/etc/vsftpd/vsftpd.conf

//不⼩⼼删除vsftpd配置⽂件 
[root@xmh ~]# rm -f /etc/vsftpd/vsftpd.conf

//重新安装软件 
[root@xmh ~]# yum reinstall vsftpd

//再次检查 
[root@xmh ~]# rpm -qc vsftpd 
/etc/logrotate.d/vsftpd 
/etc/pam.d/vsftpd 
/etc/vsftpd/ftpusers 
/etc/vsftpd/user_list 
/etc/vsftpd/vsftpd.conf

2.4更新软件包指令

//对⽐Linux已安装的软件和yum仓库中的软件, 有哪些需要升级 
[root@xmh ~]# yum check-update

//更新软件(不建议) 
[root@xmh ~]#yum update acl -y

2.5删除软件包指令

//先安装⼀个samba软件 
[root@xmh ~]# yum install samba -y

//删除该软件包, 不会删除依赖, 但是我们尽可能不要使⽤删除软件操作 
[root@xmh ~]# yum erase samba -y 
[root@xmh ~]# yum remove samba -y

2.6仓库相关指令

//列出yum源可⽤的软件仓库 
[root@xmh ~]# yum repolist

//列出全部yum源可⽤和禁⽤的仓库 
[root@xmh ~]# yum repolist all

//查看这个⽂件或命令属于哪个包 yum provides
/etc/my.cnf yum provides cd

2.7缓存相关指令

//缓存yum源软件仓库, xml元数据⽂件 
[root@xmh ~]# yum makecache

//缓存软件包, 修改yum全局配置⽂件 
[root@xmh ~]# vim /etc/yum.conf 
[main] 
cachedir=/var/cache/yum/$basearch/$releasever 
keepcache=1 #启动缓存 

//查看缓存的xml⽂件 
[root@xmh ~]# ls /var/cache/yum/x86_64/7/base/ 

//查看缓存软件包路径 
[root@xmh ~]# /var/cache/yum/x86_64/7/

//另⼀种缓存rpm包⽅式 

//1.安装插件⽀持只下载软件包不安装 
[root@xmh ~]# yum install -y yum-plugin-downloadonly 

//2.将软件下载⾄指定⽬录 (系统已安装的包则无法下载)
[root@xmh ~]# yum install httpd -y --downloadonly --downloaddir=/tmp

//清除所有yum缓存 
[root@xmh ~]# yum clean all 

//只清除缓存的软件包 
[root@xmh ~]# yum clean packages

2.8包组相关指令

//列出已经安装和所有可使⽤的软件组 
[root@xmh ~]# yum groups list

//安装⼀整个组的软件 
[root@xmh ~]# yum groups install Development tools \\ 
Compatibility libraries \\ 
Base Debugging Tools

//yum删除包组
[root@xmh ~]# yum groups remove-y Base

2.9历史记录指令

//查看历史执⾏yum命令 
[root@xmh ~]# yum history

//查询历史执⾏yum命令ID详细信息 
[root@xmh ~]# yum history info N

//撤销历史执⾏过的yum命令 
[root@xmh ~]# yum history undo N

3.构建yum仓库

本地光盘提供基础软件包Base
yum缓存提供update软件包
yum缓存提供常⽤软件包:nginx,zabbix,docker,saltstack

环境准备

系统 IP 角色 主机名
centos7.4 10.0.0.171 yum仓库服务端 yum_server_171
centos7.4 10.0.0.172 yum仓库服务端 yum_client_172

服务端配置
1.基础环境准备

//关闭防⽕墙
[root@yum_server_171 ~]# systemctl stop firewalld

//临时关闭selinux
[root@yum_server_171 ~]# setenforce 0

//安装ftp服务,启动并加⼊开机启动
[root@yum_server_171 ~]# yum  install vsftpd -y
[root@yum_server_171 ~]# systemctl start vsftpd
[root@yum_server_171 ~]# systemctl enable vsftpd

//开启yum缓存功能
[root@yum_server_171 ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
debuglevel=2

[root@yum_server_171 ~]# yum clean all

2.提供基础base

//创建一个用于存放基础base的rpm包目录
[root@yum_server_171 ~]# mkdir /var/ftp/{centos69,centos74} -p

//挂载ios镜像并拷贝该镜像中的rpm包至存放目录
[root@yum_server_171 ~]# mount /dev/cdrom /mnt 
[root@yum_server_171 ~]# cp -rp /mnt/Packages/*.rpm /var/ftp/centos74/

3.提供第三⽅源

//创建一个用于存放第三放源的rom包目录
[root@yum_server_171 ~]# mkdir /var/ftp/ops 

//下载第三方rpm包
[root@yum_server_171 ~]# yum -y install nginx docker zabbix-agent  zabbix-server-mysql salt-mastet salt-minion 

//复制已缓存的 Nginx docker 及依赖包等,到⾃定义 YUM 仓库⽬录中 
[root@yum_server_171 ~]# find /var/cache/yum/x86_64/7/ -iname "*.rpm" -exec cp -rf {} /var/ftp/ops/ \\;

4.安装createrepo并创建repo仓库

//安装createrepo 
[root@yum_server_171 ~]# yum -y install createrepo 

//⽣成仓库信息 
[root@yum_server_171 ~]# createrepo /var/ftp/ops
[root@yum_server_171 ~]# createrepo /var/ftp/centos74

注意: 如果此仓库每次新增软件包则需要重新⽣成⼀次

5.在浏览器输入ftp://10.0.0.171/,可访问到ftp的内容(根据实际地址为准)

客户端使⽤yum源
1.备份原有仓库

[root@yum_client_172 ~]# gzip /etc/yum.repos.d/*

2.配置并使⽤base基础源

[root@yum_client_172 ~]# vim /etc/yum.repos.d/centos7.repo
[centos74] 
name=centos74_base 
baseurl=ftp://10.0.0.171/centos74 
gpgcheck=0

3.客户端指向本地ops

[root@yum_client_172 ~]# vim /etc/yum.repos.d/ops.repo
[ops]
name=ops_repo
baseurl=ftp://10.0.0.171/ops
gpgcheck=0

4.客户端yum安装

[root@yum_client_172 ~]# yum install salt-minion -y

以上是关于Linux系统之YUM的主要内容,如果未能解决你的问题,请参考以下文章

Linux系列之yum安装

Linux系列之yum安装

程序包管理之yum

Linux之RedHat7如何更换yum源

Linux 学习笔记之yum

Linux系统之Centos安装epel源