Linux軟體管理之YUM軟體管理

pythontab發表於2013-05-23

在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

相關文章