Linux命令--YUM

来源:互联网 发布:node.js 安装 编辑:程序博客网 时间:2024/04/25 16:46

用过rpm安装过软件的同学应该体验过“软件依赖”这个可怕的东西,一旦遇上了装一个软件可能会被逼疯!特别是遇到循环依赖的时候,压根就不知道怎么解决。还好RedHat还有YUM这个好东西,它可以帮我们自动解决软件依赖的问题,实现一键安装。前提是要联上网(或者使用光盘也行)。

YUM的原理

YUM的原理还比较复杂,重点在于理解“容器”的概念。

我们知道rpm安装有软件依赖的问题,rpm机制也会记录依赖属性(rpm -qR即可查询),那如果我们先把一个软件的依赖属性做成一张表(header),在安装软件的时候先到这个表中查找,同时与系统中已安装的软件进行比较,发现没有安装的软件就都下载安装起来,那这样依赖问题不就圆满解决了吗!【这就是YUM的原理】

CentOS发布软件的时候,将新的软件放置在YUM服务器中,然后分析软件的依赖属性并记录成列表(会放在repodata这个目录下)。 把这些列表数据和软件(packages)本身所在的路径就称作容器。即:

容器=repodata+软件+其他数据

反正容器里面一定有软件和repodata这个目录(因为存放着软件的依赖属性)。

当要安装后升级软件的时候,主机会先从指定的YUM服务器的容器下载列表(下载到/var/cache/yum),通过列表与本机RPM数据库已存在的软件进行比较,然后就可以实现一键安装了。(下载好安装包后依然是用rpm来安装)

YUM语法

yum [option] [action] option:查询:    -y:自动相应yes    --installroot=/path/:将软件安装在指定路径action:    search:搜索某个软件    list:列出YUM服务器中所有的软件名称与版本(类似rpm -qa)    info:列出详细信息(即如rpm -qai)安装、升级删除:        install:后接要安装的软件名    update:接要升级的软件名(如果后面没有参数,即为整个系统升级)    remove:删除软件软件组功能:    grouplist:列出所有可使用的软件组,如(Desktop、Development Tools)    groupinfo:查询组的详细信息    groupinstall:安装一组软件    groupremove:删除一组软件清除:    clean packages:将已下载的软件包删除    clean headers:将已下载的依赖列表删除    clean all:将所有容器数据都删除容器:    repolist all:列出目前YUM使用的所有容器

YUM配置文件

YUM很智能的,它会自动分析离你主机最近的镜像站点,然后使用它作为YUM源。但我们总有自己配置YUM源的时候。
我们先来看看YUM的配置文件。

[root@localhost ~]# cd /etc/yum.repos.d/[root@localhost yum.repos.d]# lsadobe-linux-x86_64.repo  CentOS-Debuginfo.repo  CentOS-Vault.repoCentOS-Base.repo         CentOS-Media.repo

我们可以看到/etc/yum.repos.d/目录下有几个文件,这里的每个文件里都包含了一个或多个容器,存为多个文件只是为了方便标识罢了。如CentOS-Media.repo就是用来指定光盘作为YUM源的。

[base]name=CentOS-$releasever - Basemirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6#released updates [updates]name=CentOS-$releasever - Updatesmirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/#enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6......(省略)

我们可以看到其中有多个容器,每一个都有几个重要的项目:

[base]:代表容器的名字,在一个系统里面容器名需独一无二。否则YUM会不知道使用哪个源。name=:容器的commentmirrorlist=:列出这个容器可以使用的镜像站点列表。因为可以在baseurl里直接指定镜像站点,所以这个可以不要。baseurl=:这里直接指定容器的实际地址。(即该网址目录下要有repodata这个文件夹)enabled=1:表示启用这个容器,0表示禁用。注释掉的话默认即为启用。gpgcheck=1:开启rpm数字签名机制gpgkey=:数字签名公钥路径

更换YUM源

YUM很智能的,它会自动分析离你主机最近的镜像站点,然后使用它作为YUM源。但我们总有自己配置YUM源的时候。

以鸟哥在书里举的例子来说好了,他给我们提供了一个台湾的镜像站:
http://free.nchc.org.tw/drbl-core/i386/RPMS.drbl-stable/

1、在/etc/yum/repos.d/下新建一个文件(必须以.repo结尾)
2、

[root@localhoat ~]# vim /etc/yum/repos.d/drbl.repo[drbl]name=Test sitebaseurl=http://free.nchc.org.tw/drbl-core/i386/RPMS.drbl-stable/enable=1gpgcheck=0

3、用yum repolist all查看drbl的导入情况。

......(省略)debug                                                      CentOS-6 - Debuginfo                                                disableddrbl                                                       Test site                                                           enabled:    22extras                                                     CentOS-6 - Extras                                                   enabled:    62updates                                                    CentOS-6 - Updates                                                  enabled:   289repolist: 7,071

其中enable的表示该容器是启用的,后面跟的数字是该容器里拥有的软件个数。

使用光盘作为YUM源

我们也可以使用挂载光盘来作为YUM源,我们知道CentOS-Media.repo就是用来指定光盘作为YUM源的。只需要这样:
1、挂载光盘
2、/etc/yum.repo.d/文件下的所有文件(除CentOS-Media.repo)都更名为.bak。因为如果容器名不以.repo结尾,yum无法识别。(或者把其他文件里的enable=1都注释掉,但改个名字更方便~)
3、将CentOS-Media.repo中的enable=1注释掉即可

0 0
原创粉丝点击