yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。起初是由yellow dog 这一发行版的开发者Terra Soft 研发,用python 写成,后经杜克大学的Linux@Duke 开发团队进行改进,遂有此名。
yum基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。 yum 可以同时配置多个资源库(Repository),简洁的配置文件(/etc/yum.conf),自动解决增加或删除rpm 包时遇到的依赖性问题,保持与RPM 数据库的一致性。
CentOS默认已经安装了yum,不需另行安装。可使用#rpm�Cqa yum 查看所安装的yum版本。
一、yum的配置文件
yum的配置文件分为两部分:main 和repository。main一般位于/etc/yum.conf中,repository位于/etc/yum.repos.d/中,且以.repo后缀结尾,每个repo配置文件中可以配置一至多个仓库。
main中的配置选项
[main]
cachedir=/var/cache/yum/$basearch/$releasever 缓存目录
keepcache=0 安装完成后是否保留软件包,默认0保留
debuglevel=2 debug信息输出等级
logfile=/var/log/yum.log yum的日志文件
exactarch=1 1只安装和系统架构匹配的软件包
obsoletes=1 检查RPM包是被遗弃
gpgcheck=1 是否进行gpg校验
plugins=1 是否启用插件默认1允许
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 bug追踪路径
distroverpkg=centos-release
仓库配置
[repositoryid] 对于当前系统的yum来讲,此repositoryid用于惟一标识此repository指向,因此,其必须惟一;
name= 当前仓库描述信息;
baseurl=url://path/to/repository/ 指明repository的访问路径;通常为一个文件服务器上输出的某repository;
enabled={1|0} 此仓库是否可被使用
gpgcheck={1|0} 是否对程序包做校验
gpgkey=url://path/to/keyfile 指明gpgkey文件路径;
cost= 指明当前repository的访问开销,默认为1000;
二、yum命令
yum [options] [command] [package ...]
command is one of:
* installpackage1 [package2] [...] 程序包安装:如果某包有在不同仓库中有多个不同版本,默认会安 装最新版本;如果要安装指定版本:install PACKAGE-VERSION ...
*update [package1] [package2][...] 程序包升级
* update-to [package1] [package2] [...]
* check-update 检查有哪些升级可用
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [package2] [...]
* remove |erase package1 [package2] [...] 卸载, 所有依赖于正卸载的程序包的程序包会被一并卸载
* list [...]
* info [...] 查询程序的相关简要信息
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all] 清理缓存
* makecache 缓存创建, 自动连接至每一个可用仓库,下载其无数据,将其创建为缓存
* groupinstall group1 [group2] [...] 安装包组
* groupupdate group1 [group2] [...] 升级包组
* grouplist [hidden] [groupwildcard] [...] 列出所有包组
* groupremove group1 [group2] [...] 卸载包组
* groupinfo group1 [...] 显示指定包组详情
* search string1 [string2] [...] 在包名和sumary信息中搜索指定的关键字
* shell [filename]
* resolvedep dep1 [dep2] [...]
*localinstall rpmfile1 [rpmfile2] [...] 安装或升级本地的程序包文件; 用于安装仓库中并不存在的程序 包文件,这些程序包有可能又依赖于仓库中的某些程序包;
* localupdate rpmfile1[rpmfile2] [...] 升级本地的程序包文件
(maintained forlegacy reasons only - use update)
* reinstall package1 [package2] [...] 重新安装(覆盖安装)
* downgrade package1 [package2] [...] 程序包降级
* deplist package1 [package2] [...]
* repolist [all|enabled|disabled] 列出已经配置的所有可用仓库
* version [ all | installed | available | group-* | nogroups* |grouplist | groupinfo ]
*history[info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
* load-transaction [txfile]
* check
* help [command]
yum命令的可用选项:
-y:自动回答为“yes”
--disablerepo=:临时禁用在配置文件中配置并启用的某repository;
--enablerepo=:临时启用指定的某repo;
--nogpgcheck:禁止做包校验;
yum有内置变量,用于保存当前平台的相关信息;
(1) $raleasever: 当前OS发行版的主版本号;
例如,对CentOS 6.6 x86_64,主版本号为6;
(2) $arch:平台
i386, i486
(3) $basearch: 基础平台, 例如i686, i586, i486以及i386的基础平台同为i386;
(4) $YUM0-$YUM9
使用光盘创建yum仓库:
1. 虚拟机中设置ISO镜像文件
挂载光盘镜像:#mount/dev/cdrom /media/cdrom
2.新建repo配置文件
# vim local.repo [dvdbase] name=CentOS 6.6 X86_64 on dvd1 baseurl=file:///media/cdrom gpgcheck=0 enabled=1
[root@localhost yum.repos.d]# yum repolist Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: mirrors.btte.net * extras: mirrors.hust.edu.cn * updates: mirrors.pubyun.com dvdbase | 4.0kB 00:00 ... dvdbase/primary_db | 4.5 MB 00:00 ... repo id reponame status base CentOS-6 - Base 6,518 dvdbase CentOS 6.6 X86_64 on dvd1 6,518 extras CentOS-6 - Extras 37 updates CentOS-6 - Updates 1,044 repolist: 14,117
网络输出:提供一个文件服务器,配置好ftp服务或http服务;
ftp服务:
安装程序包: vsftpd
文件存放路径:/var/ftp/pub
启动服务:service vsftpdstart
[xen4]
name=xen4 on local host
baseurl=ftp://192.168.1.105/pub/xen4
gpgcheck=0
enabled=1
http服务:
安装程序包:httpd
文件存放路径:/var/www/html
启动服务:service httpdstart
Note: 确保防火墙服务关闭;
#service iptables stop