linux 初学者之yum使用
一、什么是yum
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum工作流程:
要用yum程序来管理程序包,得先需要有一个yum仓库。yum和yum仓库之间是通过文件传输协议来实现的。yum仓库的构建是在yum仓库的某个路径下放上一堆的rpm包并使用一个仓库构建程序把这对rpm包的信息抽取出来保存在repodata的目录下当作这个仓库元数据保存起来。客户端每一次使用一个仓库时,首先会联系这个仓库,获取这个仓库的元数据缓存在本地,从而知道这个仓库上到底有哪些程序包,每一个程序包到底依赖于哪个程序,每一个程序包安装时生产哪些文件目录列表等等一些信息。但需要安装数据包时,在本地通过分析已经安装的数据包,未安装的数据包,获取差异性,把本地没有的、此时又需要的数据包通过文件传输协议,从yum仓库中下载下来,然后调用rpm程序工具完成安装
从yum的工作流程可以看出,yum的核心是yum仓库中的各种程序包及仓库程序包信息的元数据repodata,使用yum的重点是构建yum仓库。
yum与rpm的关系:
rpm为基础包管理器,可以独立工作
yum则是rpm的前端工具,是rpm的补充,不能独立工作。
二、yum的使用
(一)从0开始构建本地的yum仓库
(1) 在基于发行版安装树安装createrepo程序包
# yum install createrepo
createrepo是构建仓库时生存repo的命令。
(2) 确定repository输出方式:
A、本地输出:提供一个放置rpm包的本地路径;
B、网络输出:提供一个文件服务器,配置好ftp服务或http服务;
a、配置ftp服务:
安装程序包: # yum install vsftpd
(系统默认的文件存放路径为:/var/ftp/pub)
启动服务:# service vsftpd start
关闭防火墙:# service iptables stop
如此可以在windows浏览器里输入 ftp://172.16.20.97(换成自己linux的ip地址) 回车,这时会有一个pub目录,进行下面的(4)的createrepo命令后就会在pub目录里有一个repodata了。
这时可以将此时得到的地址,编辑/etc/yum.repos.de/NAME.repo的baseurl了
创建完就可以yum clean all,再 yum makecache,更新repos
工作done!!!
b、http服务:
安装程序包:# yum install httpd
(系统默认的文件存放路径:/var/www/html)
启动服务:# service httpd start
PS:确保防火墙服务关闭;
(3) 在准备好的目录中放置rpm程序包文件
本地输出的,就放置在自己准备好的目录里;ftp输出的就放置在/var/ftp/pub里;http输出的就放置在/var/www/html里。
(4) 对此目录运行createrepo命令
# createrepo /DIR/IN/LOCAL (/DIR/IN/LOCAL为自己准备好的存储程序包的目录)
# createrepo /var/ftp/pub
# createrepo /var/www/html
运行上述命令后,程序会自动在该目录里生成一个“repodata”文件目录,里面存放了本程序包仓库的元数据。
(5)修改仓库配置文件
A. 知识补充:
配置文件:指向仓库的位置以及相关的各种配置信息;每个yum命令行可以同时指向多个仓库,仓库间可以有优先级等相关的配置;
有两部分组成:
主配置文件:/etc/yum.conf
为各仓库指向提供公共配置文件;
各仓库的配置:/etc/yum.repos.d/*.repo
man yum.conf查看详细说明
各仓库配置参数:
a、[repositoryid]
# 对于当前系统的yum来讲,此repositoryid用于唯一标识此repository指向,因此,其必须惟一;
b、name=
# 当前仓库描述信息;
c、baseurl=url://path/to/repository/
url2://path/to/repository/
url3://path/to/repository/
# 指明repository的访问路径;通常为一个文件服务器上输出的某repository;(和mirrorslist是有排斥性的)
url:
ftp服务
ftp://SERVER/PATH/TO/REPOSITORY
http服务
http://SERVER/PATH/TO/REPOSITORY
本地目录:
仓库指向的路径:repodata目录所在的父目录
http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/
d、enabled={1|0}
此仓库是否可被使用,不指明的话默认是1
e、gpgcheck={1|0}
是否对程序包做校验,不指明的话默认也为1
f、gpgkey=url://path/to/keyfile
指明gpgkey文件路径;当gpgcheck=1时必须指明gpgkey的路径
g、cost=#
指明当前repository的访问开销,默认为1000;访问消耗越小的越优先允许其访问本仓库
B. 操作:
[root@test ~]# vim /etc/yum.repos.d/test.repo 其中test可以换成自己取的易辨识的文件名
然后安装上面说明,设置好repo id,name,baseurl,gpgcheck,enabled基本配置即可。
(6)更新repolist
(6.1)清理缓存
clean
[ packages | metadata | expire-cache | rpmdb | plugins | all ]
[程序包|仓库的元数据|过期的缓存|rpm数据库|插件|所有缓存]
PS:前面都是清理指定的文件数据,all是清理除目录的其他所有文件数据
命令格式例子: # yum clean all
(6.2)重新创建缓存
makecache: 缓存创建,自动连接至每一个可用仓库,下载其元数据,将其创建为缓存
命令格式:# yum makecache
(6.3)查看所有可用仓库
repolist: 列出已经配置的所有可用仓库 (默认是只列出已经启用的,即enabled=1的仓库)
repolist [all|enabled|disabled]
PS:用# yum repolist 命令,系统会自动更新并重建yum 仓库的缓存
(二)yum仓库的使用与维护
(1)程序包查看:
(1.1)# yum list [all | glob_exp1] [glob_exp2] [...]
[root@test ~]# yum list bash
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
Installed Packages
bash.x86_64 4.1.2-29.el6 @anaconda-CentOS-201410241409.x86_64/6.6
[root@test ~]#
(1.2)# yum list {available|updates|installed|extras|obsoletes|recent} [glob_exp1] [...]
available: 可安装而尚未安装的
updates:可用于升级的包
installed:已安装过的包
extras:系统已安装但任何一个yum仓库都不存在的包
obsoletes:系统已安装但已被yum仓库废弃的包(有更新的包供升级)
recent:最近刚刚加进仓库的包
(1.3) # yum grouplist [hidden] [groupwildcard] [...] 程序包组的查看
可以用# yum grouplist查看yum分的各个组:
Installed Groups:已安装的组
Installed Language Groups:已安装的语言组
Available Groups:可用的组
Available Language Groups:可用的语言组
每个组下面都有列表,可选择安装一个组或者多个组。
(2)程序包安装:
# yum install package1 [package2] [...]
PS: 只需要提供一个或多个包名(如 bash,zsh,xen);
如果某包有在不同仓库中有多个不同版本,默认会安装最新版本,因此不需要提供版本号、发行号、适用的平台等信息;
如果要安装指定版本:install PACKAGE-VERSION ...
(3)重新安装(覆盖安装)
# yum reinstall package1 [package2] [...]
(4)程序包升级:包名+版本号
# yum update [package1] [package2] [...]
upgrade package1 [package2] [...]这个已经不常用了,红帽7已经可以用update代替了
(5) 程序包降级:包名+版本号
# yum downgrade package1 [package2] [...]
(6) 检查有哪些升级可用:
# yum check-update
(7)卸载:
# yum remove | erase package1 [package2] [...]
所有依赖于正卸载的程序包的程序包会被一并卸载
(8)查询:
(8.1)查询程序的相关简要信息:
# yum info PACKAGE ...
(8.2)在包名和sumary信息中搜索指定的关键字:
# yum search KEYWORD ...
(8.3)查询指定文件由哪个程序包安装生成:
# yum provides|whatprovides /PATH/TO/SOMEFILE
例子:
[root@test ~]# yum provides /bin/echo
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
coreutils-8.4-37.el6.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo : base-test
Matched from:
Filename : /bin/echo (后面还有多行显示内容,太长,省略)
(9)安装或升级本地的程序包文件:
# yum localinstall rpmfile1 [rpmfile2] [...]
用于安装仓库中并不存在的程序包文件,这些程序包有可能又依赖于仓库中的某些程序包;
# yum localupdate rpmfile1 [rpmfile2] [...]
上面安装和升级里的rpmfile1和rpmfile2 要指明有效路径——使用绝对路径或者切换到程序包所在目录里使用命令。
PS:在红帽7中已经统一到 install和update、remove中了,但仍能用这个命名。
(10)包组管理:
(10.1) 列出所有包组:# yum grouplist
包组一般都多词,中间有空格,所以一个包组需要用引号引起来。否则会被当作多个包组而报错。
[root@test ~]# yum groupinfo Compatibility libraries Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Group Process Loading mirror speeds from cached hostfile Warning: Group Compatibility does not exist. Warning: Group libraries does not exist.
(10.2)显示指定包组详情:# yum groupinfo group1 [...]
包组的信息只能用groupinfo查看,info报错
[root@test ~]# yum info "Compatibility libraries" Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile Error: No matching Packages to list
(10.3)安装:# yum groupinstall group1 [group2] [...]
(10.4)卸载:# yum groupremove group1 [group2] [...]
(10.5)升级:# yum groupupdate group1 [group2] [...]
在红帽7中已经统一到install、remove、update中,组名加双引号,引号前加@
Note: 可直接用install、remove或update来管理包组:
@GROUP_NAME
例子: # yum install @"Server Platform Development"
三、练习
创建xen4仓库,分别通过本地及ftp或http服务输出
练习题解参考见附录
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。