rpm和yum
在linux中安装一个软件包并不像在windows中双击就能安装,因为在linux的一个特性就是组合小的软件完成大的功能,所以为了完成一个大的功能通常需要安装多个包来组合,各个包完成相应的任务而包又相互组合。
在redhat中安装一个包用的命令是:rpm
rpm package management 最早是由redhat开发的用来在自己的系统上安装程序包,但由于其方便实用,在CentOS,Fedora,等系统中被采用。
另一种常用的是:dep 在debain,Ubuntu,上被使用。
在安装数据包的时候有时候有依赖关系:比如安装A需要B,安装B又需要安装C,但安装C又需要A,这样构成循环,虽说在rpm中可以强制安装包,但当有很多包有依赖关系时候,rpm或dep就很难解决了。所以就出现了yum:
yum 全称yellowdog update manager,是redhat在rpm的基础上进一步发展而成的,主要用于解决安装多个数据包时自动的解决依赖关系,自动的将多个包归为一组,同时提供了更多的选项来管理数据包。yum有客户端和服务器两部分,两部分可以在同一台主机上,也可以使分开的。服务器部分通常被称为yum库(因为其提供了所有的rpm数据包)。yum客户端的配置文件有两部分
1. /etc/yum.conf 其内容有以下几部分
cachedir 表示yum在本地的缓存位置
keepcache 是否存储缓存(0不存,1存储)
logfile 日志保存的目录
gpgcheck 是否检查(0不检查,1检查)
exactarch 版本是否精确匹配
metadata 缓存保存的时间
一般这个配置文件中的内容不需要改变。
2. /etc/yum.repos.d/*.repo 文件的名字随意,但后缀必须是repo,而这个文件中可以存储多个库,redhat中的库有以下几个:VT,Server,Cluster,ClusterStorage,分别实现虚拟化,基本操作,集群,集群中的存贮。没个库内容除了路径不相同之外其他的都相同。每个库中通常包括以下几部分:
[identify] 库的表示符
name=描述信息
baseurl=库的路径,必须写到包含repo的文件夹(最重要)
gpgcheck=1/0 1表示检查每个包的校验码,0表示不校验
enable=1/0 1表示启用该库,0反之
eg:
[ClusterStorage]
name=Instructor ClusterStorage Repository
baseurl=http://instructor.example.com/yum/ClusterStorage
gpgcheck=0
enable=1
表示ClusterStroage库所在的位置在baseurl=http://instructor.example.com/yum/中
其他的几个库也依照这种写法
yum命令的使用方法:
yum [option] [command] packagename
eg: yum -y install httpd
[option]中最常用的有:
-y 表示只要需确定的一直是yes
-q 使用静默模式
--nogpgcheck 不对数据包校验(要确认数据包的来源)
[command]中的命令:
install 安装软件包
update 升级软件包
check-update 检查并升级
remove/erase 卸载软件包
list 默认列出所有软件包,还有二级选项
all/available/updates/installed/extra/recent/glob_exp
info 显示简要信息
provides 表示有那个包提供
grouplist 列出组
groupinstall 已经安装的组
groupinfo 组信息
localinstall 安装本地的包,但有依赖关系的包在库中时自动查找并安装
reinstall 重新安装
downgrade 降级
repolist 列出可用的库
tips
1. 在使用yum库时能够自动的解决依赖关系主要是根据repodata这个文件中定义的信息来实现的,其中filelists.xml.gz记录库中的包名,other.xml.gz记录其他内容,primary.xml.gz记录主要信息,repomd.xml是总括前面三个信息的。当有一堆软件包时,可以使用命令:createrepo来创建repodata这个文件夹和其中的内容。详细createrepo的使用方法,我会在以后的博客中介绍的。
2. glob_exp 表示:bash中的统配符 如* . 等