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命令来安装管理程序包了。

相关推荐