《Linux系统》之"深入浅出"(二)软件包的线上升级机制YUM

一、YUM的简介

在使用rpm机制的时候,我们最闹心的地方,可能就是软件依赖问题了。而YUM机制恰恰帮助我们解决了这一问题。YUM,是Yellow dog Updater, Modified 的简称。YUM会通过分析rpm软件包内的预设参数,制定软件依赖的解决方法,然后自动处理软件依赖的问题。这样,在安装、升级或者是卸载时,用户就不必头疼这个依赖问题了。

图示YUM在线升级的原理与过程:

YUM服务器


yum客户端


流程

知道了软件的依赖关系,那如何解决的?YUM的理念是使用一个中心仓库(repository)管理一部分或是整个distribution 的应用程序的相互关系,根据计算出来的软件依赖关系,从资源库(repository)上自动下载这些软件,然后从下而上(好比盖高楼)的依次安装相关软件,从而解决软件的安装、升级、卸载等操作,减少了Linux 用户一直头痛的dependencies 的问题(注意,要保证你的Linux系统处于网络状态下)。

事实上,Linux厂商已经在全世界范围内架设了多个资源库(repository)基站,以供使用者进行下载,解决软件管理问题。

二、YUM的应用

1、YUM的查询功能

语法:yum [list|info|search|provides|whatprovides] 参数

常用案例如下:

[root@master test]#  yum list all              <==列出yum源仓库里面的所有可用的安装包
[root@master test]#  yum list installed    <==列出所有已经安装的安装包
[root@master test]#  yum list available   <==列出没有安装的安装包 ####安装软件
[root@master test]#  yum info [软件名]   <==查看软件的信息
[root@master test]#  yum search [keywords]              <==根据关键字查找到相关安装包软件的信息
[root@master test]#  yum whatprovides [文件名]      <==查找包含指定文件的相关安装包

2、YUM的安装/卸载功能

语法:yum [install | update| reinstall | remove ] [软件名称]

安装功能也必须获取root身份才可以进行

常用案例如下:

[root@master test]#  yum install appname         <==安装指定的软件
[root@master test]#  yum reinstall appname        <==重新安装指定的软件
[root@master test]#  yum update  [appname]               <==升级指定软件,不指定软件时,升级整个系统的软件
[root@master test]#  yum remove appname              <==卸装指定的软件

3、YUM进行软件组管理

语法:yum  [群组功能] [软件群组名称]

常用案例如下:

[root@master test]#  yum grouplist                                     <==列出所有可使用的软件组
[root@master test]#  yum groupinstall  [groupname]           <==安装一个软件组
[root@master test]#  yum groupremove  [groupname]       <==卸载一个软件组
[root@master test]#  yum groupinfo   [groupname]        <==查看一个软件组的信息

三、YUM源的管理

1、YUM的配置信息

熟悉了YUM的用法后,我们不得不来了解一下YUM的配置,因此YUM的配置是至关重要的。这关系到YUM能否解决你的Linux系统上的软件依赖问题。

yum 的配置文件分为两部分:main repository

main:定义了全局配置参数,位于/etc/yum.conf 中。

[root@master yum.repos.d]# cat /etc/yum.conf 
[main]
cachedir=/var/cache/yum/$basearch/$releasever   //yum缓存目录,用于存储下载的rpm包和数据库清单。
keepcache=0                    //安装完成后是否保留软件包,0为不保留(默认为0),1为保留。
debuglevel=2                    // Debug 信息输出等级,范围为0-10,缺省为2
logfile=/var/log/yum.log     //yum日志文件
exactarch=1                      // 值为1和0。1表示yum只会安装和平台匹配的软件包。
obsoletes=1                      //这是一个update 的参数,允许更新陈旧的RPM包。
gpgcheck=1                      //指定是否需要进行 GNU Private Guard) 校验,检查rpm的有效和安全性
plugins=1                          //是否启用插件,默认1为允许,0表示不允许
installonly_limit=5           
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release //指定一个软件包,yum 会根据这个包判断你的发行版本,默认是redhat-release.

repository:定义了每个源/服务器的具体配置,可以有一到多个。位于/etc/yum.repo.d 目录下的各文件中。文件的扩展名都是.repo。

[root@master yum.repos.d]# ll
-rw-r--r--. 1 root root 1926 12月 26 09:54 CentOS-Base.repo     <==是yum 网络源的配置文件
-rw-r--r--. 1 root root  638 11月 27 2013 CentOS-Debuginfo.repo     
-rw-r--r--. 1 root root  630 11月 27 2013 CentOS-Media.repo   <==是yum 本地源的配置文件
-rw-r--r--. 1 root root 3664 11月 27 2013 CentOS-Vault.repo

我们来看一下CentOS-Base.repo文件,其他三个文件可以自己看看。

[root@master yum.repos.d]# cat CentOS-Base.repo.bak 
[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/  <==指定一固定地址
gpgcheck=1                                                   <==指定是否需要进行 GNU Private Guard) 校验,检查rpm的有效和安全性
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 <==校验用的公钥

#released updates 
[updates]      <==资料库的唯一标识符
..................

#additional packages that may be useful
[extras]          <==资料库的唯一标识符
...............

#additional packages that extend functionality of existing packages
[centosplus]
.................
enabled=0   <==0为禁用资料库,默认为1,是启用资料库,
.................

#contrib - packages by Centos Users
[contrib]
....................
enabled=0
....................

我们可以通过【 yum repolist all】查看启用的资料库

[root@master yum.repos.d]# yum repolist all
 * base: mirrors.aliyun.com       
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com    <== *号表示:可用的资料库和对应的服务器
  
repo id                                                          repo name                                              status
C6.0-base                                                    CentOS-6.0 - Base                                 disabled
C6.0-centosplus                                           CentOS-6.0 - CentOSPlus                     disabled
C6.0-contrib                                                  CentOS-6.0 - Contrib                             disabled
..............                                                          ............................                                    ...........
base                                                              CentOS-6 - Base                                    enabled: 6,713
extras                                                            CentOS-6 - Extras                                  enabled:   35
updates                                                         CentOS-6 - Updates                               enabled:   257

repolist: 7,005

2、YUM源的更改

几个国内常用的YUM源

1、https://mirrors.aliyun.com/centos/,阿里的服务器
2、http://mirrors.163.com/centos,网易的开源服务器镜像。全国用户推荐. 下载CentOS-Base-163.repo, 放入/etc/yum.repos.d/
3、http://ftp.sjtu.edu.cn/centos/,上海交大,服务器位于北京。北方用户与教育网用户推荐,速度飞快。
4、http://centos.ustc.edu.cn,中国科技大学,服务器位于合肥。 南方用户推荐。
5、http://mirrors.sohu.com/,搜狐的开源镜像服务器,服务器位于山东省联通。全国用户推荐。
6、http://ftp.twaren.net/Linux/CentOS ,台湾的高速网络中心
7、http://ftp.ksu.edu.tw/FTP/CentOS/7/,太歪的昆大服务器

配置网易的YUM源案例:

第一步:备份原有的YUM源,以便出错后进行还原

#  mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

第二步:下载网易的CentOS-Base.repo 到/etc/yum.repos.d/ 

联网下面语法:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo

第三步:清空缓存并重置资料库

# yum clean all
# yum makecache

-------------------------------------------------------------------------有何疑问,留言必答------------------------------------------------------------

猜你喜欢

转载自blog.csdn.net/Michael__One/article/details/85265004