yum历史: yellowdog update modifier的缩写
好处之一:可以自行解决linux下程序安装时的依赖关系。
yum是 c/s架构
文件服务的服务器:ftp http NFS 本地文件
yum 通过一个配置文件可以获取多个yum repo 的位置
yum repo 数据: 程序包
yum -------- yum repo 元数据 : repodata
repodata yum repo createrepo
yum 相对于rpm来说:
rpm为基础包管理器
yum则是rpm的前端工具
仓库指向的路径: repodata目录所在的父目录
http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/
http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/(试验教室仓库)
yum 命令行工具:
配置文件:指向仓库的位置以及相关的各种配置信息:每个yum命令行可以同时指向多个仓库,仓库间可以优先级等相关的配置:
有两部分组成:
主配置文件: /etc/yum.conf
为各仓库指向提供公共配置文件:
各仓库的定义:/etc/yum.repos.d/*.repo
directive(指令)=value(值)
注意:文件以.repo结尾;每个repo配置文件可以配置一至多个仓库
[main]提供公共配置
各仓库配置
[repositoryid]
#对于当前系统的yum来讲,此repositoryid用于唯一标识此repository指向,必须唯一.
name=
#当前仓库描述信息
baseurl=url://path/to/repository/
#指明repository的访问路径,通常为一个文件服务器上输出的某repository。(指向多个路径时:可以有多个但是:从第二行起,要空格,不要顶格写)
(mirrorlist效果和baseurl效果相似,不可以公用。mirrorlist可分析开销选择,选最小开销的)
url:
ftp 服务
ftp://SERVER/PATH/TO/REPOSITORY(repodata的父目录)
http 服务
http://SERVER/PATH/TO/REPOSITORY(repodata的父目录)
nfs服务
nft://SERVER/PATH/TO/REPOSITORY(repodata的父目录)
本地目录
file:///PATH /TO /REPOSITORY(repodata的父目录)
enabled={1|0}
此仓库是否可被使用
gpgcheck={1|0}
是否对程序包做校验
gpgkey=url://path/to/keyfile
指明gpgkey文件路径(如果设置了gpgcheck=1.需要设置这项,不然无法检测)
cost=#
指明当前repositor的访问开销。默认1000(优先级)
教室环境可用仓库:
DVD1:http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/
DVD2:http://172.16.0.1/centos/6/extras/x86_64
epel:http://172.16.0.1/fedora-epel/6/x86_64
新建仓库缓存路径 /var/cache/yum/
yum 命令
command is one of:
* install package1 [package2] [...]
* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [pack- age2] [...]
* 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] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy 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|roll-
back|new|sync|stats]
* load-transaction [txfile]
* check
* help [command]
仓库管理:
yum repolist:列出已经配置的所有可用仓库。
repolist [all|enabled|disabled]
缓存管理:
yum clean:清理缓存
clean [ packages(包)| metadata(元数据) | expire-cache (过期缓存)| rpmdb(数据库) | plugins (插件)| all ]
makecache:缓存创建
自动连接至每个可用仓库,下载其下数据,将其创建为缓存。
程序包查看:
yum list [all | glob_exp1] [glob_exp2] [.....]
yum list{available(可安装为安装)|updates(可升级)|installed|extras(未包含在仓库中的)
|obsoletes(可被废弃)|recent(刚加入仓库的)} [glob_exp1] [...]
查看组:
grouplist [hidden] [groupwildcard] [...]
程序包安装:
yum install pachage1 [pachage2][...]
只需要包名
如果某个包在不同仓库中有多个不同版本,默认会安装最新版本。
安装指定版本
yum install PACKAGE-VERSION(版本名)(如果还有依赖关系。默认都安装最新的版本,不然都需要指定新版本)
覆盖安装(重新安装)
yum reinstall package1 [package2][...]
程序包升级
yum update [package1][package2][...]
程序包降级
yum downgrade package1 [package2][...]
检查有哪些升级可用:
yum check-update(需要配置升级路径,不然无法使用,依托于配置文件)
卸载:yum
remove | erase package1 [package2] [...]
所有依赖于正卸载的程序包的程序包 会被一并卸载。
查询:
1.查询程序相关简要信息
yum info [...]
2.在包名和sumary信息中搜索指定关键字:
yum search KEYWORD
3.查询指定文件由哪个程序安装生成:
yum provides|whatprovides /PATH/TO/SOMEFILE
安装本地程序包文件:
yum localinstall rpmfile1 [rpmfile2][...](R7版本中也忽视了。直接 install就可以了)
用于安装仓库中并不存在的程序包文件,这些程序包有可能又依赖于仓库中的某些程序包.
yum localupdate(升级)
包组管理:
需要引用有空格的组名是用“” 不然会解释成多个组
列出所有包组详情:yum grouplist
显示指定包组详情 yum groupinfo group1 [....]
安装: yum groupinstall group1 [....]
卸载:yum groupremove group1 [....]
升级:yum groupupdate group1[....]
R7 版本中可直接用 install ,remove或update来管理包组。
@GROUP_NAME(在组名前+@.组名中有空格+"GROUP_NAME")
以安装包组“Server Platform Development"为例:
yum install @"Server Platform Development"
yum 命令的可用选项
-y : 自动回答为:yes
--disablerepo= 临时禁用在配置文件中配置并启用的某repository
--enablerepo= 临时启用指定的某repo
--nogpgcheck 禁止做包校验
yum有内置变量:用于保存当前平台的相关信息。
(1)$raleasever:当前OS发行版的主版本号
例如:对CentOS 6.6 x86_64: 主版本号为:6
(2)$arch :平台
i386 i486
(3)$basharch:基础平台,例如i686,i586,及i386的基础平台同为i386
(4)$YUM0-$YUM9
例如:
baseurl=http://repo.magedu.com/centos/$releasever/$basearch
当前的系统为 CentOS 6.6 x86_64
$releasever :6 $basearch:x86_64
%%%%%%%% (链接法则: 6.0 6.1 ln 6 6.0)%%%%%%%%%
利用光盘使用yum
1:挂载光盘:mount -o ro -t iso9660 /dev/dvd /media/repo
(如果mount-point(/media/repo)没有要先创建:此目录下不要创建别的文件了,不然挂载后读不出来)
2:创建yum仓库: 先移除原来的yum仓库
进入 /etc/yum.repos.d mv test.repo test.repo.bak
3: yum repolist 查看是否移除
4:重新配置 yum仓库(vim test.repo 这里后缀名必须 .repo路径要在
/etc/yum.repos.d下面)
#cd /etc/yum.repos.d
# vim sr0.repo
[dvdrepo]([repositoryid]是唯一的重名,读取会出错)
name=CentOS 6.6 X86_64 dvd1(这个是相关的描述信息便于查找理解)
baseurl=file:///media/repo(///追后一个/表示路径)
enabled=1(是否可以加载)
gpgcheck=0(是否校验)
5.测试:
# yum repolist(查看是否建仓成功)
# yum install -y php(查看是否仓库可以用)
自己创建yum仓库:
(1)基于发行版安装树安装createrepo 程序(这个命令作用:创建repodata元数据)
#yum install createrepo
(2)创建文件用于存放软件包文件
#mkdir -pv /var/yum/xen
(3)安装ftp 服务用于获取文件存放并存放到/var/yum/xen下
#yum install lftp(安装服务)
#cd /var/yum/xen
#lftp 172.16.0.1/pub/Sources/6.x86_64/xen-4.1/(连接到ftp服务器)
#mget *.rpm(下载所有的关于xen的.rpm包)
(4)基于刚才下载的文件构建yum仓库所需的repodata 元数据
#createrepo /var/yum/xen
(查看效果
[root@localhost xen]# pwd
/var/yum/xen
[root@localhost xen]# ls
xen-ocaml-4.1.3-2.el6.x86_64.rpm
repodata )
(5)配置本地文件连接到yum仓库
#cd /etc/yum.repos.d
#vim test.repo
[xenlocal]
name=xen loacl /var/yum/xen
baseurl=file:///var/yum/xen
gpgcheck=0
enbaled=1
(6)查看是否构建成功
#yum repolist
repo id repo name status
xenlocal xen loacl /var/yum/xen 41