Linux下程序包管理之YUM
实验环境:
CentOS release 6.6 (Final) 一台
IP地址:172.16.249.230
附带:CentOS release 6.6光盘镜像文件
CentOS-6.6-x86_64-bin-DVD1.iso
CentOS-6.6-x86_64-bin-DVD2.iso
YUM(Yellow dog Updater, Modified) 由Duke University团队,修改Yellow Dog Linux的Yellow Dog Updater开发而成,是一个基于 RPM 包管理的字符前端软件包管理器。能够从指定的服务器自动下载 RPM 包并且安装,可以处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。被Yellow Dog Linux本身,以及Fedora、Red Hat Enterprise Linux、CentOS、SUSE采用。
一.YUM仓库和客户端简介
YUM repository:yum仓库
存储了众多rpm包,以及包的相关元数据的文件服务器
文件服务器:
HTTP:http://ip/centos/$releasever/os/$basearch/
FTP:ftp://ip/centos/$releasever/os/$basearch/
NFS:网络文件系统,nfs://ip/centos/$releasever/os/$basearch/
FILE:本地,file:///centos/$releasever/os/$basearch/
YUM Client :客户端
配置文件:指向仓库的位置以及各种配置信息,每个yum客户端可以有多个仓库。
缓存文件:/var/cache/yum/
二.YUM的配置文件详解
yum的配置一般有两种方式,一种是直接配置/etc目录下的yum.conf文件,另外一种是在/etc/yum.repos.d目录下增加.repo文件。
(一).关于yum.conf文件详解
#cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
#yum下载的RPM包的缓存目录
keepcache=0
#缓存是否保存,1保存,0不保存。
debuglevel=2
#调试级别(0-10),默认为2(具体调试级别的应用,我也不了解)。
logfile=/var/log/yum.log
#yum的日志文件所在的位置
exactarch=1
#在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。
obsoletes=1
#这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
gpgcheck=1
#是否检查GPG(GNU Private Guard),一种密钥方式签名。
plugins=1
#是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。
installonly_limit=5
#允许保留多少个内核包。
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
# This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
# It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
(二).关于/etc/yum.repos.d/*.repo文件详解
什么是repo文件?
repo文件是CentOS中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!
我们以一份系统自带的repo文件做为实例来探讨(#号后面是我加的注释):
[base]
name=CentOS-$releasever - Base
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[base]
#方括号里面的是软件源的名称,将被yum取得并识别
name=CentOS-$releasever - Base
#这里也定义了软件 仓库的名称,通常是为了方便阅读配置文件,一般没什么作用,
$releasever变量定义了发行版本,通常是5,6,7等数字,
这个变量根据当前系统的版本架构不同而有不同的取值,
这可以方便yum升级的时候选择 适合当前系统的软件包,以下同……
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
#上面的一行baseurl第一个字符是'#'表示该行已经被注释,将不会被读取,
$basearch变量定义了系统的架构,可以是i386、x86_64、ppc等值
这一行的意思是指定一个baseurl(源的镜像服务器地址)
enabled=1
#这个选项表示这个repo中定义的源是启用的,0为禁用
gpgcheck=1 #
这个选项表示这个repo中下载的rpm将进行gpg的校验,已确定rpm包的来源是有效和安全的
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#定义用于校验的gpg密钥
三.构建YUM仓库
简要步骤说明
(一).确认文件共享方式
(二).把rpm包放置于能够被各yum客户端访问到位置
(三).创建yum仓库的元数据
createrepo命令
#yum -y install createrepo
为yum仓库创建元数据文件
#createrepo 软件包文件目录
实验案例:
在本文中我创建一个本地光盘yum来构建一个本地YUM仓库。
(一)、挂载本地光盘
#mkdir /mnt/cdrom
#新建挂载目录
#mount -t iso9660 /dev/cdrom /mnt/cdrom
#挂载光盘到/mnt/cdrom 目录
#ls /mnt/cdrom
#查看/mnt/cdrom 目录内容
[root@LinuxHost yum.repos.d]# mkdir /mnt/cdrom
[root@LinuxHost yum.repos.d]# mount -t iso9660 /dev/cdrom /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@LinuxHost yum.repos.d]# ls /mnt/cdrom
CentOS_BuildTag isolinux RPM-GPG-KEY-CentOS-Debug-6
EFI Packages RPM-GPG-KEY-CentOS-Security-6
EULA RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Testing-6
GPL repodata TRANS.TBL
images RPM-GPG-KEY-CentOS-6
(二)、配置本地YUM源
#cd /etc/yum.repos.d/
#进入/etc/yum.repos.d 目录
#ls
#查看目录内容
#mv CentOS-Base.repo CentOS-Base.repo.bak
#mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
#重命名上面2个文件
#vi CentOS-Media.repo
#对CentOS-Media.repo 进行编辑
(三)、修改CentOS-Media.repo内容
[c6-media]
name=CentOS-$releaserver - Media
#自定义Yum源名称
baseurl=file:///mnt/cdrom/
#本地光盘挂载路径
gpgcheck=1
#检查GPG-KEY
enabled=1
#启用Yum源
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-6
#GPG-KEY路径
[root@LinuxHost yum.repos.d]# cat CentOS-Media.repo
[C6-Media]
name=CentOS-$releaserver-Media
baseurl=file:///mnt/cdrom
gpcheck=1
enabled=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-6
检查列出可用yum仓库元数据
[root@LinuxHost yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
repo id repo name status
C6-Media CentOS-$releaserver-Media 6,518
repolist: 6,518
至此,本地YUM源配置完成,我们就可以使用yum命令来安装管理程序包了。