一、rpm和yum简介
ReHat和CentOS厂商的linux上的软件均是以rpm软件包的方式来安装的。rpm是安装的是一种经过编译后的软件包,即是厂商经过在自己的一套硬件和软件平台编译安装后无问题打成的一个包,以这种方式安装软件可以认为是第一需要和其原始的硬件和软件平台一致、第二需要符合原先的安装平台的那套依赖关系、且由root来进行安装(即将包内的文件解压打各指定目录)。
因此,单独下载一个rpm包进行安装,是需要考虑以上三个问题的。尤其是第二个问题,依赖关系的解决。而yum的出现则解决了该问题,用yum进行安装的时候是首先去这个rpm包中寻找依赖关系的清单,然后将这些依赖包都下载下来且安装上,然后再安装指定要安装的包。注意,最终软件的安装还是以一个rpm包安装的。
rpm包内的相关数据文件在/var/lib/yum内,这里记录着一个rpm包的相关参数,用于以后的升级、移除、查询等;
rpm默认按照的路径在linux系统内的一些指定的路径下,例如/etc下放置一些配置文件,/usr/bin下放置一些可执行的命令,/usr/lib放置一些程序使用的动态函数库,/usr/share/doc下放置一些软件使用手册和说明文件,/usr/shar/man放置一些软件的帮助文档等。
二、rpm的相关命令
rpm最好的地方在于提供很多命令,可以直接的查看我当前的系统内是否有某个软件,其安装的位置,其的配置文件所在等等信息。
1、rpm的安装
rpm -ivh *.rpm ##安装rpm软件包,以可见的过程和进度显示
rpm -ivh http://website.name/path/pkgname.rpm ##以网上的某个文件来安装某软件包
rpm -ivh *rpm --test ##检测要安装的某软件包是否有依赖
rpm -ivh *rpm --prefix PATH ##要将软件安装到其他非正规目录时。比如,想要将某软件安装到 /usr/local 而非常规的/bin, /etc 等目录, 就可以使用--prefix /usr/local
一般来说,rpm 的安装选项参数大约就是这些。通常建议直接使用 -ivh 就好了, 如果安装的过程中发现问题,一个一个去将问题找出来,尽量不要使用『 暴力安装法 』。
2、rpm的更新与升级
rpm -Uvh *rpm ##后面接的文件若没有则直接安装,若有则升级
rpm -Fvh *rpm ##后面接的文件若没有则不执行命令,若有才进行升级
3、rpm查询
rpm -qa ##列出所有的rpm软件包,一般和grep *rpm结合使用来查询是否安装了某软件包
rpm -ql *rpm-3.1-5.i386.rpm ##后面要跟具体的包名称,要带上版本信息,即列出包的文件都安装到了什么位置
rpm -qi *rpm-3.1-5.i386.rpm ##后面要跟具体的包名称,要带上版本信息,即列出软件的详细信息,如开发商、版本与说明等;
rpm -qc *rpm-3.1-5.i386.rpm ##后面要跟具体的包名称,要带上版本信息,即列出包的配置文件(即/etc下的文件)都有哪些
rpm -qf /etc/crontab ##后面跟文件名,找出该文件属于哪一个已安装的软件
4、移除rpm软件包
rpm -e *rpm ##移除某rpm软件包
PS:软件的移除必须是先移除最顶层的,然后再移除下面的,比如openssh依赖于openssl,此时应该先移除openssh,若先移除openssl则有可能会造成openssh不可用的故障。
三、yum的相关命令
1、yum源及yum仓库
是透过分析 RPM 的标头资料后, 根据各软件的相关性制作出属性相依时的解决方案,然后可以自动处理软件的相依属性问题,以解决软件安装、移除、升级的问题。yum源,可以理解为是一个yum-server提供的具有多种软件的仓库(这里的仓库是以软件分类为颗粒度的,即一个软件分类为一个仓库),yum进行安装时会去这个yum源里去寻找相应软件仓库中的rpm包。一个.repo的文件就是一个仓库,例如阿里云提供的CentOS-Base.repo,其内容如下
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com ##此仓库的名称
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ ##仓库的地址
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
可知,yum在进行安装时,是去指定仓库中下载软件到本地,然后进行安装的。另外,yum 会先下载容器的清单到本机的 /var/cache/yum 里面去!那我们修改了网址或者下载了新的yum源,却没有修改容器名称 (中括号内的文字), 可能就会造成本机的列表与 yum 朋务器的列表丌同步,此时就会出现无法更新,需要yum clean all来进行删除所有容器缓存数据。
2、yum相关命令
yum [list|info|search|provides|whatprovides] 参数 ###查询功能
yum [install|update] 软件 ##安装升级软件
yum [remove] 软件 ##移除某软件
yum clean [packages|headers|all] ##清除yum仓库的所有缓存数据
yum makecache ##生成缓存