《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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章