Linux运维*一.Linux基础---20、yum包管理工具

一、yum简介

yum全名:Yellowdog Update Modifier,包管理器的前端工具

yum的开发组织:yellow dog

yum服务端:

yum服务器也被称为yum仓库(yum repo)或者yum源,储存了众多的rpm包以及包的相关的元素文件(放置于特定目录下:repodata)

createrepo文件服务器工具:服务器需要原数据文件描述存储了哪些程序包、程序包的依赖关系、程序包的版本等信息,createrepo是一款可以重rpm程序包提取程序组成清单制作服务器的原数据文件

yum客户端:yum命令

 

 

二、yum工作机制

Linux运维*一.Linux基础---20、yum包管理工具_第1张图片

 

 

1、yum是典型的C/S架构的应用,由客户端和服务端组成;

2、启动yum时,yum客户端会根据其配置文件到指定的远程文件存储服务器(可以是URL也可以是自己内网维护的文件服务区)下载服务器的存储列表文件,并存储于cache;

3、存储列表文件存储了服务器中有哪些程序包及程序包的依赖关系,yum回提取依赖关系,查询本地已尽安装的依赖包后,向服务器请求并下载自己没有的程序包;

4、下载完成后,yum会根据依赖关系文件,自动安装程序,直到安装完成所需的程序包;

5、安装完成后,自动删除缓存中的程序包,保留原数据,作为其它需要安装程序的依赖包源。

(以上过程中,yum查询自己没有的依赖包之前会和服务器对比已有依赖包的校验码,若版本较老,则会到远程服务器下载新版本的程序包、原数据文件、依赖关系文件;)

 

yum支持的文件存储服务器:http://、ftp://、nfs://、file:///(本地光盘)

 

三、yum配置

1、/etc/yum.conf             # 主配置文件:为所有仓库提供公共配置

[root@localhost rpm]# cat /etc/yum.conf

[main] #主配置文件

cachedir=/var/cache/yum/$basearch/$releasever #chche缓存目录

keepcache=0 #安装完成后cache缓存是否保存

#0:不保存,1:保存

debuglevel=2 #调式级别

logfile=/var/log/yum.log #安装日志文件路径

exactarch=1 #安装时是否需要精确匹配平台

#1:精确匹配,若不一致则不安装

obsoletes=1

gpgcheck=1 #安装时是否检查程序包来源合法性及程序包完整性

plugins=1 #是否支持插件机制

installonly_limit=5 #一次同时安装几个程序包

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum #追踪bug时的URL

distroverpkg=centos-release #发行版的获取

 

2、/etc/yum.repos.d/*.repo # 子配置文件:为仓库的URL指向提供配置

[root@localhost yum.repos.d]# cat CentOS-Base.repo

[base] # base仓库

name=CentOS-$releasever - Base # 仓库名

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra

#使用了mirrorlist而没有使用baseurl

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ # baseurl,即yum源

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

enable=0 # 不启用该仓库,默认为启用(1)

#released updates

[updates]

name=CentOS-$releasever - Updates

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

#additional packages that may be useful

[extras]

name=CentOS-$releasever - Extras

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

 

3、查看配置文件帮助文档: man yum.conf

 

4、子配置文件格式整理说明:

[repositoryID] # 仓库ID

name=仓库名 # 任取,一般取为仓库功能的简要描述

baseurl=url1:// # 仓库的访问路径,支持ftp:// 、 http:// 、nfs:// 、file:///

url2://

...

mirrolist=http://.. # 使用mirrolist,"http://"指向一个url服务器

# url服务器存储了baseurl列表

# 使用mirrolist相当于baseurl为指定url服务器中存储的url

# mirrolist与baseurl不能同时使用

enabled=1 # 启用此仓库(0为禁用)

gpgcheck=1 # 查程序包的来源合法性和完整性(0为不检查)

repp_gpgcheck=1 # 检查程序包来源服务器提供的原数据的合法性和完整性

gpgkey=URL # 指明检查合法性和完整性的密钥获取URL

enablegroups=1 # 支持通过组来管理程序包(0为不支持)

failovermethod={roundrobin|priority} # roundrobin,随机使用URL

# priority,根据优先级使用URL

username= # 访问yum服务器的用户名

passwd= # 访问yum服务器的密码

cost= # 开销,默认为1000

 

5、yum配置文件中常用变量

常用于URL:http://mirrors.magedu.com/centos/$releasever/$basearch/os

$releasever:当前OS的发行版本号

$arch:当前运行平台

$basearch:当前运行的基础平台

$YUM0-$YUM9

 

6、自定义yum源:

在 /etc/yum.repos.d/下自己创建yum源配置文件并指向本地yum源储存服务器

[root@localhost yum.repos.d]# vim /etc/yum.repos.d/centos-yumserverlocal.repo

[base]

name=yumserverlocal on 192.168.0.19

baseurl=http://192.168.0.19/cobbler/ks_mirror/CentOS-6.6-x86_64/

gpgcheck=0

enable=1

 

四、yum命令

1、yum help # 查看命令帮助

 

2、yum仓库管理命令:

yum repolist 选项 # 显示启用的yum仓库

选项:

all # 显示所有的yum仓库

enable # 显示启用的yum仓库

disabled # 显示禁用的yum仓库

 

3、yum程序包管理命令:

yum list 选项 # 显示yum源的所有程序包

选项:

all # 显示全部程序包

available # 显示可用但未安装的程序包

installed # 显示已安装的程序包

updates # 显示可用的升级包

extras # 显示可用的扩展包

obsoletes # 显示废弃的程序包

通配符 # 显示通配符匹配的程序包

 

yum check-update # 检查有哪些升级包可以使用

 

yum search 关键字 # 根据关键字搜索程序包及摘要信息

 

yum info 指定程序包 # 查看指定程序包的简要信息

 

yum provides 指定功能特性 # 查看指定功能特性(或文件)由那个程序包提供

示例:

[root@localhost ~]# yum provides python

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

* base: mirrors.aliyun.com

* extras: mirrors.cn99.com

* updates: mirrors.aliyun.com

python-2.7.5-86.el7.x86_64 : An interpreted, interactive, object-oriented programming language

Repo : base

 

python-2.7.5-68.el7.x86_64 : An interpreted, interactive, object-oriented programming language

Repo : @anaconda

 

yum deplist 指定程序包 # 显示指定程序包的依赖关系

 

yum install -y 程序包1 程序包2 ... # 安装程序包

# -y为默认yes,不进入交互安装页面

 

yum install --downloadonly # 仅下载不安装

 

yum reinstall -y 程序包1 程序包2 ... # 重新安装程序包

 

yum update 程序包1 程序包2 # 升级指定程序包

 

yum downgrade 程序包1 程序包2 # 降级指定程序包

 

yum remove 程序包1 程序包2 # 卸载指定程序包

# 补充:该程序包的依赖包也会被卸载

 

yum localinstall 程序包 # 使用本地程序包进行yum安装

# 若没有相关依赖包,指定下载安装依赖包

 

yum localupdate 程序包 # 使用本地程序包升级

 

注意:yum安装升级时候常用选项:

--nogpgcheck # 禁止检查gpg

-y # 自动回答y,不进入交互安装页面

-q # 静默模式进行安装

--disablerepo=指定仓库 # 本次安装禁用该仓库

--enablerepo=指定仓库 # 使用指定仓库安装

--noplugins #本次安装禁用所有插件

--installroot=/指定路劲 # 指定程序包安装路径

 

4、yum包组:

yum grouplist # 查看所有包组

yum groupinstall 包组名 # 安装包组内的程序包

yum groupupdate 包组名 # 升级包组内的程序包

yum groupremove 包组名 # 拆卸包组内的程序包

yum groupinfo 包组名 # 查看包组信息

 

 

 

5、yum客户端管理命令:

yum clean 选项 # yum缓存清理

选项:

all # 清理所有缓存

packages # 只清理程序包

metadate # 只清理原数据

expire-cache # 只清理过期缓存

rpmdb # 只清理rpmdb

plugins # 只清理插件

 

yum makecache # 生成yum缓存

 

yum history # 查看yum操作历史

 

6、yum扩展源,有些程序包无法安装时需要安装扩展源

yum -y install epel-release

 

五、使用光盘做yum源

1、mount -r /dev/cdrom /media/cdrom           #挂载光盘

2、查看光盘中的文件,其中erpodata即是yum仓库的指向文件

[root@localhost Packages]# cd /media/cdrom/

[root@localhost cdrom]# ls

CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL

3、到yum的次配置文件(yum仓库)下创建本地yum仓库

[root@localhost cdrom]# cd /etc/yum.repos.d/

[root@localhost yum.repos.d]# ls

CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  CentOS-Vault.repo

[root@localhost yum.repos.d]# vim localCD.repo

[base]

name=CentOS 7 Release 7.1.1503

baseurl=file:///media/cdrom

enabled=1

gpgcheck=0

~              

4、查看可以使用的yum仓库是否有自己创建的仓库

[root@localhost yum.repos.d]# yum repolist

 

六、yum服务器部署(createrepo)

1、安装createrepo程序包

[root@localhost ~]# yum install -y createrepo

 

2、上传程序包到服务器指定路径

[root@localhost ~]# mkdir -p /yum/repo                                                        

[root@localhost Packages]# cp /media/cdrom/Packages/*.rpm /yum/repo/         #将挂载好的光盘中的rpm包复制到本地yum源路径

 

3、createrepo读取yum源储存的rpm包,指定该路径为yum的仓库,并生成repodata目录

[root@localhost Packages]# cd /yum/repo/

[root@localhost repo]# createrepo ./

Spawning worker 0 with 931 pkgs

Spawning worker 1 with 931 pkgs

Spawning worker 2 with 931 pkgs

Spawning worker 3 with 930 pkgs

Workers Finished

Saving Primary metadata

Saving file lists metadata

Saving other metadata

Generating sqlite DBs

Sqlite DBs complete

 

4、查看是否生成repodata目录

[root@localhost repo]# cd repodata/

[root@localhost repodata]# ls

40bac61f2a462557e757c2183511f57d07fba2c0dd63f99b48f0b466b7f2b8d2-other.xml.gz

74cff0b4b9ebc7b9d5dd73429d883d4956a583f57ceaa82af94ec1706d960c53-primary.xml.gz

9710c85f1049b4c60c74ae5fd51d3e98e4ecd50a43ab53ff641690fb164a6d63-other.sqlite.bz2

bbf080777e242f7aa46639dac48a2046bbccabb90822984692c92571f664cb32-primary.sqlite.bz2

cfa741341d5d270d5b42d6220e2908d053c39a2d8346986bf48cee360e6f7ce8-filelists.xml.gz

d863fcc08a4e8d47382001c3f22693ed77e03815a76cedf34d8256d4c12f6f0d-filelists.sqlite.bz2

repomd.xml                               #首先下载repomd.xml,与yum客户端中的本地安装程序包比较,安装版本较老时,从yum服务端下载重新安装

 

5、在yum客户端服务器配置yum源为刚部署好的yum源

[root@localhost repodata]# cd /etc/yum.repos.d/

[root@localhost yum.repos.d]# vim yumlocal.repo

[yumlocal]

name=yumserverlocal CentOS 7

baseurl=file:///yum/repo/

gpgcheck=0

[root@localhost yum.repos.d]# yum repolist #获取新的并查看可用的yum源

已加载插件:fastestmirror

Repository base is listed more than once in the configuration

yumlocal | 2.9 kB 00:00:00

yumlocal/primary_db | 2.8 MB 00:00:00

Loading mirror speeds from cached hostfile

* base: mirrors.cn99.com

* extras: mirrors.sohu.com

* updates: mirrors.sohu.com

源标识 源名称 状态

base/7/x86_64 CentOS-7 - Base 9,591

extras/7/x86_64 CentOS-7 - Extras 329

updates/7/x86_64 CentOS-7 - Updates 1,698

yumlocal yumserverlocal CentOS 7 3,723

repolist: 15,341

 

6、目前yum源即可本地使用,配置http服务或者web服务后,将相关路径输出即可将变为yum源的储存服务器,供远程使用

 

你可能感兴趣的:(Linux运维)