在Linux系統下通常使用的軟體管理機制有原始碼的形式、以及RPM(redhat Package Manager)包管理機制,在這篇隨筆裡面,我們將詳細講解Linux軟體管理只YUM軟體管理。
【注意:】首先必須先明確一點,yum並不是一種新的軟體包管理形式,我們的rpm則是一種新的軟體包管理形式,yum只是rpm的一個前端程式,yum最主要的功能就是幫助我們解決軟體包的依賴性問題!!!
在上一篇隨筆裡面我們詳細比較過了基於原始碼形式安裝以及RPM軟體包安裝的優缺點。rpm軟體包形式管理軟體雖然方便,但是需要我們手工的去解決軟體包的依賴性問題,比如安裝當前這個軟體我需要A軟體的支援,安裝A軟體又需要用到了B軟體,這樣我們就必須手動的去安裝好該軟體所依賴的所有的rpm包,有的時候安裝一個軟體可能需要首先安裝好1個或者多個(有時多達上百個)其他的軟體,這樣我們在手工解決時就非常的麻煩。所以我們在這裡就需要使用YUM來解決這個問題!
YUM(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE、CentOS中的Shell前端軟體包管理器。基於RPM管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
一、YUM的特點主要有以下幾點:
①自動解決依賴性問題 這個是yum最主要的功能,我們可以透過yum來自動的解決軟體包直接的依賴性問題
②可以對RPM進行分組,並基於組來進行安裝操作 有時候我們可能需要對軟體進行分組,比如基於開發的軟體放在一組,桌面軟體又放在一組,在傳統的RPM包管理機制裡,我們需要自己手動的去將每一個組裡面的軟體都安裝了才行,而yum就可以方便的對RPM進行分組,我只需要安裝這個組,那麼這個組裡面的所有軟體都會自動給我們安裝好。
③引入了倉庫的概念,支援多個倉庫 透過yum來進行軟體的安裝其實就是基於倉庫這個概念的,我將所有的rpm軟體包都事先放在一個倉庫裡面,然後yum就可以在這個倉庫裡面尋找我們需要安裝的軟體,找到了就可以自動安裝,沒找到則就安裝不了
④配置簡單 在現在的RHEL、CentOS裡面基本上都使用yum的方式來進行軟體的安裝,其主要原因也是基於其倉庫的配置非常的簡單,這個將在下面進行詳細論述
二、YUM
yum裡引入了倉庫的概念,倉庫裡其實就是用來存放我們所有現有的rpm軟體包,因為yum就是基於rpm軟體包管理的一個前端程式,所以yum也是透過rpm來進行軟體的安裝的。當使用yum進行軟體安裝時,如果存在依賴關係,那麼yun也會自動的去倉庫裡面去尋找所依賴的rpm軟體包,並自動安裝,解決軟體包的依賴問題。
這個倉庫既可以是本地的,也可以是網際網路上的,可以透過http、ftp或者nfs等形式使用集中的、統一的網路倉庫
三、YUM倉庫
yum使用的是倉庫來保持管理我們的rpm軟體包,倉庫的配置檔案是存放在 /etc/yum.repos.d/ 這個檔案目錄下,我們可以進入到該目錄,檢視一下里面的資訊
[root@xiaoluo home]# cd /etc/yum.repos.d/
[root@xiaoluo yum.repos.d]# ls -l
總用量 16
-rw-r--r--. 1 root root 1926 2月 25 16:57 CentOS-Base.repo
-rw-r--r--. 1 root root 638 2月 25 16:57 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 630 2月 25 16:57 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 2月 25 16:57 CentOS-Vault.repo
我們看到在該目錄下一共有四個yum的配置檔案(每個配置檔案必須是以.repo結尾),CentOS系統會預設的給出我們這四個yum倉庫的配置檔案,裡面儲存著非常多的網路倉庫資訊,RHEL系統預設可能就沒有這些yum倉庫的配置檔案,如果我們需要這些,我們必須向紅帽購買相應的服務才行。
我們首先來看一下yum倉庫的配置格式:
[xiaoluo] // 這個就是我們倉庫的名字
name=This is xiaoluo's rpm soft repo // 這個雖然寫著是name,但是其實後面通常是寫一些對該倉庫進行描述的語句
baseurl=http://www.xiaoluo.com/yum/soft/CentOS/x86_64/rpms/ // 這個是倉庫的地址,可以是http、ftp、nfs等網路倉庫的地址,也可以是我們本地倉庫的地址
enabled=1 // enabled=1表示我們使用這個倉庫,預設就是enabled=1
gpgcheck=1 // 是否啟用軟體校驗,基於安全考慮,主流的Linux發行版本都會對一些常用的rpm進行簽名操作
以上就是yum倉庫的基本的配置格式,當然可能還有其他的一些配置欄位,下面我們開啟CentOS下 /etc/yum.repos.d/ 這個目錄裡面的yum倉庫配置檔案來看看其裡面的內容
[root@xiaoluo yum.repos.d]# cat CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base
...
我們看到每一個這樣的yum倉庫配置檔案裡面都包含了好多個yum倉庫的配置資訊,在上面有一個mirrorlist選項,這個選項的主要作用就是去動態的獲取我們的baseurl地址,因為如果yum倉庫的網路地址修改以後,我們不需要每次都去修改baseurl來更換地址,只需要設定mirrorlist這個選項,它就會動態的去獲取我們所需要的baseurl的地址。其中的gpgkey這個欄位就是設定我們啟用校驗時所需要的金鑰。
使用yum倉庫需要注意一下幾點:
①倉庫可以使用http、ftp、file、nfs等方式
②yum配置檔案必須以.repo結尾
③一個yum配置檔案裡面可以存放多個倉庫的配置資訊
④/etc/yum.repos.d/ 目錄下可以存放多個yum配置檔案
四、yum基本命令
yum管理軟體的常用命令有如下幾個:
安裝軟體:yum install software-name
刪除軟體:yum remove software-name
升級軟體:yum update software-name
在這裡我們透過安裝 tigervnc 這個軟體來試驗一下:
[root@xiaoluo ~]# yum install tigervnc
Loaded plugins: fastestmirror, refresh-packagekit, security
Determining fastest mirrors
* base: mirrors.grandcloud.cn
* extras: mirrors.grandcloud.cn
* updates: mirrors.grandcloud.cn
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package tigervnc.x86_64 0:1.1.0-5.el6_4.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
tigervnc x86_64 1.1.0-5.el6_4.1 updates 258 k
Transaction Summary
================================================================================
Install 1 Package(s)
Total download size: 258 k
Installed size: 644 k
Is this ok [y/N]: y
Downloading Packages:
tigervnc-1.1.0-5.el6_4.1.x86_64.rpm | 258 kB 00:03
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : tigervnc-1.1.0-5.el6_4.1.x86_64 1/1
Verifying : tigervnc-1.1.0-5.el6_4.1.x86_64 1/1
Installed:
tigervnc.x86_64 0:1.1.0-5.el6_4.1
Complete!
如果我們需要刪除該軟體,則可以透過 yum remove softname 來刪除軟體,透過 yum update softname 命令可以來更新某個軟體
五、yum查詢命令
基於關鍵字搜尋軟體:yum search 關鍵字
列出全部的、安裝的、最近的、更新的軟體 yum list (all | installed | recent | updates)
列出YUM倉庫中全部軟體:yum list all
顯示軟體資訊:yum info packagename
查詢某個rpm軟體包含該目標檔案 yum whatprovides filename
因為我們使用yum來進行軟體安裝時,必須要寫全軟體的名字,所以如果我們對某個軟體記不太清楚,需要搜尋某個軟體的資訊,可以使用 yum search 軟體名字的關鍵字 來進行搜尋
[root@xiaoluo ~]# yum search mysql
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirrors.grandcloud.cn
* extras: mirrors.grandcloud.cn
* updates: mirrors.grandcloud.cn
...
我們如果需要列出YUM倉庫中全部軟體,可以使用 yum list all 命令來檢視
[root@xiaoluo ~]# yum list all
第一列就是我們的軟體的名字,第二列顯示的是該軟體的版本資訊以及適用的作業系統平臺,第三列顯示的軟體屬於哪個倉庫,倉庫的名字
如果需要檢視已經安裝的 yum 軟體,則使用 yum list installed 命令即可
[root@xiaoluo ~]# yum list installed
***********************************此處省略N個字*****************************************
yum-metadata-parser.x86_64
1.1.2-16.el6 @anaconda-CentOS-201303020151.x86_64/6.4
yum-plugin-fastestmirror.noarch
1.1.30-14.el6 @anaconda-CentOS-201303020151.x86_64/6.4
yum-plugin-security.noarch
1.1.30-14.el6 @anaconda-CentOS-201303020151.x86_64/6.4
yum-utils.noarch 1.1.30-14.el6 @anaconda-CentOS-201303020151.x86_64/6.4
zd1211-firmware.noarch 1.4-4.el6 @anaconda-CentOS-201303020151.x86_64/6.4
zenity.x86_64 2.28.0-1.el6 @anaconda-CentOS-201303020151.x86_64/6.4
zip.x86_64 3.0-1.el6 @anaconda-CentOS-201303020151.x86_64/6.4
zlib.x86_64 1.2.3-29.el6 @anaconda-CentOS-201303020151.x86_64/6.4
zlib-devel.x86_64 1.2.3-29.el6 @anaconda-CentOS-201303020151.x86_64/6.4 // @ 符號就表示該軟體已經被安裝
如果我們要檢視某個軟體的詳細資訊,可以使用 yum info softname 命令,這個命令與 rpm -qi softname 的作用完全一樣
root@xiaoluo ~]# yum info tigervnc
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirrors.grandcloud.cn
* extras: mirrors.grandcloud.cn
* updates: mirrors.grandcloud.cn
Installed Packages
Name : tigervnc
Arch : x86_64
Version : 1.1.0
Release : 5.el6_4.1
Size : 644 k
Repo : installed
From repo : updates
Summary : A TigerVNC remote display system
URL : http://www.tigervnc.com
License : GPLv2+
Description : Virtual Network Computing (VNC) is a remote display system which
: allows you to view a computing 'desktop' environment not only on
: the machine where it is running, but from anywhere on the Internet
: and from a wide variety of machine architectures. This package
: contains a client which will allow you to connect to other
: desktops running a VNC server.
如果我們需要檢視哪個rpm檔案包含了指定的目標檔案,可以使用 yum whatprovides filename 命令來檢視:
[root@xiaoluo ~]# yum whatprovides httpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirrors.grandcloud.cn
* extras: mirrors.grandcloud.cn
* updates: mirrors.grandcloud.cn
httpd-2.2.15-28.el6.centos.x86_64 : Apache HTTP Server
Repo : updates
Matched from:
httpd-2.2.15-26.el6.centos.x86_64 : Apache HTTP Server
Repo : base
Matched from:
httpd-2.2.15-26.el6.centos.x86_64 : Apache HTTP Server
Repo : installed
Matched from:
Other : Provides-match: httpd