Linux命令--YUM

用过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]# ls
adobe-linux-x86_64.repo  CentOS-Debuginfo.repo  CentOS-Vault.repo
CentOS-Base.repo         CentOS-Media.repo

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

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

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

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

[base]:代表容器的名字,在一个系统里面容器名需独一无二。否则YUM会不知道使用哪个源。
name=:容器的comment
mirrorlist=:列出这个容器可以使用的镜像站点列表。因为可以在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 site
baseurl=http://free.nchc.org.tw/drbl-core/i386/RPMS.drbl-stable/
enable=1
gpgcheck=0

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

......(省略)
debug                                                      CentOS-6 - Debuginfo                                                disabled
drbl                                                       Test site                                                           enabled:    22
extras                                                     CentOS-6 - Extras                                                   enabled:    62
updates                                                    CentOS-6 - Updates                                                  enabled:   289
repolist: 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注释掉即可

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值