YUM原理和命令详解

阅读更多

YUM 优点
自动解决包的依赖性的问题能更新的添加/删除/更新/RPM包
便于管理大量系统的更新问题
可以同时配置多个资源库(Repository)
简洁的配置文件(/etc/yum.conf)
保持与RPM数据库的一致性
有一个比较详细的log.可以查看何时升级了什么软件包

CentOS的镜像站点
了解 镜像站点的文件结构 对理解 yum 配置文件 .repo 文件有帮助
http://mirror-status.centos.org
http://isoredirect.centos.org/centos/5/isos/i386/
addons/       本目录包含Centos的addons 仓库
centosplus/   本目录包含Centos的centosplus 仓库
extras/      本目录包含Centos的extras 仓库
fasttrack/    本目录包含Centos的extras 仓库
isos-dvd/     本目录包含发行版的DVD iso 下载
isos/        本目录包含发行版 CD iso 下载
os/          本目录包含发行版(distributions)的仓库
updates/     本目录包含Centos的updates仓库

CentOS 的仓库
仓库(repository) 是一个预备好的目录或网站,包含了软件包和索引。
yum 可以在仓库中自动定位并获取正确的RPM软件。
镜像服务器为每个版本的Centos分别提供了一些仓库。
Centos中的软件管理工具 yum已经预先配置为使用下列四个仓库:
base: 构成Centos发行版(distributions)的软件包和安装光盘上的内容一样
updates: base 仓库中软件包的更新版本
addons: 已编译的但不在发行版(distributions)中的软件包
extras: 一大批附加的软件包
centospuls: 用于增强一些现有软件包的功能(默认未启用)

CentOS 仓库的目录结构
updates/
|--SRPMS                        #源代码目录
|  |--*.src.rpm                #源代码包目录   
|    |--repodata/                #源代码的索引文件
|--i386                        #Intel 32位平台的目录
|    |--RPMS                        #Intel 32位平台的RPMS目录
|    |    |--*.i386.rpm            #在intel 32位平台上编译的包文件
|    |    |--*.centos.noarch.rpm    #与平台无关的已编译的包文件
|    |--repodata/                #intel 32位平台的索引文件
|--x68_64                        #64位平台的目录
    |--RPMS                        #64位平台的RPMS目录
    |    |--x68_64.rpm            #在64位平台上编译的包文件
    |    |--*.centos.noarch.rpm    #与平台无关的已编译的包文件
    |--repodata/                #64位平台的索引文件
配置YUM客户的更新源
yum使用reposdir /etc/yum.repos.d 目录下的一系列.repo 文件列出可获取软件包仓库的镜像站点地址.
默认情况下有两个:
Centos-Base.repo: 用于设置远程仓库
Centos-Media.repo: 用于设置本地仓库

yum程序的目录结构
/etc
  |--yum/
  |   |--/pluginconf.d   
  |   |--/yum-updatesd.conf/
  |            |--downloadonly.conf
  |            |--fastestmirror.conf
  |            |--priorities.conf
  |--yum.conf
  |--yum.repos.d/
        |--CentOS-Base.repo
        |--CentOS-Media.repo

在.repo 文件中,配置语法是分段的,每一段配置一个软件仓库,语法如下:

设置网络更新源
-----------------------------------------------------------------------------------------
[base]  \\用于指定仓库
name=CentOS-$releasever - Base \\用于指定易读的仓库名称
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os \\用于指定本仓库的URL
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
#        =ftp://  \\用于指定远程ftp协议的愿
#        =file://  \\ 用于本地镜像或NFS挂载文件系统
#nabled=0/1  \\用于指定是否使用本地仓库,默认为1,即可用。
gpgcheck=1  \\用于指定是否检查软件包的GPG签名
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5  \\用于指定GPG签名文件的URL

注:
若指定mirrorlist,系统将从Centos 的镜像站点中选择离你最近的仓库。
[$releasever]当前系统的版本号
[$basearch] 当前系统的构架
baseurl 可以指定多个URL ,系统会依次检查你列出的仓库。以便某个服务器宕机时使用另一台服务器

设置本地更新源
为了使用 [c5-media]仓库,需将Centos-Base
-----------------------------------------------------------------------------------------
[c5-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

-----------------------------------------------------------------------------------------
设置非官方更新源
以安置rpmforge 软件包为例

http://rpm.pbone.net/
http://dag.wieers.com/rpm/
http://rpmforge.net
http://rpm.livna.org
http://freshrpms.net
http://atrpms.net
中找到适用于 Centos 5 的软件包
wget http://................rpmforge-release..... .rpm(省略了路径和具体包的版本等信息,这要看你用网址和版本了)
rpm -ivh rpmforge-release........... .rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-*

安装 rpmforge-release 软件包之后可以看到/etc/yum.repos.d/rpmfoge.repo文件

或者
建立一个DAG 的仓库
vi /etc/yum.repos.d/dag.repo
#
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KYE.dag.txt
#

yum 命令工具

yum check-update            检查可更新的软件包
yum update                    下载更新系统已安装的所有软件把
yum upgrade                    大规模的升级,不同于上面的是,连旧的淘汰的包也升级
yum install         安装指定的软件包
yum update         更新指定的软件包
yum remove         卸载指定的软件包
yum groupinstall     安装指定的软件组中的软件包
yum groupupdate     更新 ... ...
yum groupremove     卸载 ... ...
yum grouplist                查看系统中已经安装的和可以用的软件组
yum list                    列出资源库中所有可以安装or 更新以及已经安装的的rpm包
yum list              列出资源库中与正则表达式匹配的可以安装或更新以及已经安装的rpm包
yum list available             列出资源库中所有可以安装的rpm包
yum list available      列出资源库中与正则表达式匹配的所有可以安装的rpm包
yum list updates             列出资源库中所有可以更新的rpm包
yum list updates      列出资源库中与正则表达式匹配的所有可以更新的rpm包
yum list installed             列出资源库中所有已经安装的rpm包
yum list installed      列出资源库中与正则表达式匹配的所有已经安装的rpm包
yum list extras             列出已经安装的但是不包含在资源库中的rpm包
yum list extras      列出与正则表达式匹配的已经安装的但是不包含在资源库中的rpm包
yum list recent             列出最近被添加到资源库中的软件包
yum search              检测所有可用的软件的名称、描述、概述和已列出的维护者,查找与正则表达式匹配的值
yum provides          检测软件包中包含的文件以及软件提供的功能,查找与正则表达式匹配的值
yum clean headers             清除缓存中的rpm头文件
yum clean packages             清除缓存中rpm包文件
yum clean all                 清除缓存中的rpm头文件和包文件
yum deplist          显示软件包的依赖信息

第一次使用yum或者yum资源库有更新是.yum会自动下载所有需要的headers 放置于/var/cache/yum
还可以用yum info 命令列出包信息,yum info 可用的参数与 yum list的相同
yum 命令还可以使用 -y 参数 回答命令运行时所提出的问题。

yum update 升级时 排除升级内核
yum update 排除升级内核,方法有两个:
1.修改yum的配置文件 vi /etc/yum.conf,在[main]的最后添加exclude=kernel*
2.直接在yum的命令行执行如下的命令:
yum –exclude=kernel* update


附:
当仓库配置文件 *.repo 使用了多个URL yum-fastestmirror  可以自动选择最快的镜像站点
yum -y install yum-fastestmirror
yum-fastestmirror 的配置文件在 /etc/yum/pluginconf.d/fastestmirror.conf 默认不需要修改。

yum -updatesd
rpm -ql yum-updatesd


yum -cron
yum -y install yum-cron
rpm -ql yum-cron
/etc
    |--/cron.daily/yum.cron        每日更新脚本
    |--/cron.weekly/yum.cron    每周更新脚本
    |--/rc.d/int.d/yum            启动脚本
    |--/yum/yum-daily.yum
/usr/share/doc/yum-cron-0.1
                        |--/COPYING
                        |--/README
   

使用yum下载而不安装rpm包
先安装yum-downloadonly
# yum install yum-downloadonly

安装后使用方法如下:
# yum update httpd -y --downloadonly   ###下载到默认目录  /var/cache/yum
OR
# yum update httpd -y --downloadonly --downloaddir=/opt     ##下载到指定目录
# yum install perl-MailTools --downloadonly --downloaddir=/opt -y     ##如果软件已经下载过了,必须使用这个来下载

你可能感兴趣的:(Centos,Yum,Linux)