yum使用


yum簡介

yum,是Yellow dog Updater, Modified 的簡稱,是杜克大學爲了提高RPM 軟件包安裝性而開發的一種軟件包管理器。起初是由yellow dog 這一發行版的開發者Terra Soft 研發,用python 寫成,那時還叫做yup(yellow dog updater),後經杜克大學的Linux@Duke 開發團隊進行改進,遂有此名。yum 的宗旨是自動化地升級,安裝/移除rpm 包,收集rpm 包的相關信息,檢查依賴性並自動提示用戶解決。yum 的關鍵之處是要有可靠的repository,顧名思義,這是軟件的倉庫,它可以是http ftp 站點,也可以是本地軟件池,但必須包含rpm headerheader 包括了rpm 包的各種信息,包括描述,功能,提供的文件,依賴性等。正是收集了這些header 並加以分析,才能自動化地完成餘下的任務。

 

yum 的理念是使用一箇中心倉庫(repository)管理一部分甚至一個distribution 的應用程序相互關係,根據計算出來的軟件依賴關係進行相關的升級、安裝、刪除等等操作,減少了Linux 用戶一直頭痛的dependencies 的問題。這一點上,yum apt 相同。apt 原爲debian deb 類型軟件管理所使用,但是現在也能用到RedHat 門下的rpm 了。

 

yum 主要功能是更方便的添加/刪除/更新RPM 包,自動解決包的倚賴性問題,便於管理大量系統的更新問題。

 

yum 可以同時配置多個資源庫(Repository),簡潔的配置文件(/etc/yum.conf),自動解決增加或刪除rpm包時遇到的依賴性問題,保持與RPM 數據庫的一致性。

 

yum支持的協議

  • ftp://

  • http://

  • nfs://

  • file://

 

yum客戶端的相關配置文件:

[root@Linux_11 ~]# rpm -qc yum

/etc/logrotate.d/yum  # yum日誌滾動相關設置

/etc/yum.conf       # yum全局配置選項,爲所有倉庫提供公共配置

/etc/yum/version-groups.conf   #創建軟件包組的相關設置

 

yum.conf主配置文件說明

[main]      # 公共主配置段,對所有yum源生效

cachedir=/var/cache/yum/$basearch/$releasever   # yum在此存儲下載的rpm包和數據庫,一般是/var/cache/yum

keepcache=1            # 是否保存從服務器下載下來的rpm包,是否保持yum緩存,默認爲0

debuglevel=2           # 調試級別,0-10,默認是2

logfile=/var/log/yum.log        #yum存放yum日誌文件的路徑

exactarch=1    # 是否精確匹配平臺

obsoletes=1  #簡單的說就是相當於upgrade,允許更新陳舊的RPM包。

gpgcheck=1     # 是否進行來源合法性和包的吉完整性

plugins=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,也可以是安裝的任何針對自己發行版的rpm包。

 

如何查看yum配置文件說明:

[root@Linux_11 ~]# whatis yum.conf

yum.conf [yum]       (5)  - Configuration file for yum(8)

[root@Linux_11 ~]# man 5 yum.conf          # 5可以省略

 

注意:

  • 默認情況下yum在安裝完了軟件包之後,會將軟件包自動刪除,但是元數據不會刪除

 

查看CentOS下面默認的yum

[root@Linux_11 ~]# cd /etc/yum.repos.d/

[root@Linux_11 yum.repos.d]# ls

CentOS-Base.repo       CentOS-Media.repo

CentOS-Debuginfo.repo  CentOS-Vault.repo

 

注意:其中CentOS-Media.repo是本地源

定義yum

配置本地yum

[root@Linux_11 yum.repos.d]# pwd

/etc/yum.repos.d

 

[repositoryID]        # yumID

name=Somenameforthisrepository    #yum源的名稱,功能性的描述

mirrorlist=http://   # baseurl列表文件的地址,裏面保存的是baseurl地址,要使用此項,yum必須支持插件功能

baseurl=url://path/to/repository/

            url://path/to/repository/

            url://path/to/repository/  # yum源的url地址,baseurl可以有多個URL地址

enabled={1|0}       # 是否啓用此yum源,默認啓用

gpgcheck={1|0}      # 是否進行gpg檢驗

gpgkey=URL          # gpgURL地址

enablegroups={1|0}     # 是否支持在此倉庫上使用組批量管理程序包,默認爲1,是啓用的

failovermethod={roundrobin|priority}       # 指定使用什麼算法來確定baseurl,默認爲:roundrobin,意爲隨機挑選,後者是優先級,即自上而下的。但是默認是隨機挑選,並不是自上而下。

cost  # 定義了cost的,且數字較小的,會被優先訪問,默認爲1000

 

注意:

  • baseurl可以有多個url

  • 且等號兩邊不能有空格

 

 

配置網絡yum

primary_db元數據

 

yum命令的用法:

顯示yum源列表:

repolist[all|enabled|disabled]

  • yum repolist all         #顯示所有yum

  • yum repolist enabled       #顯示可用的yum

  • yum repolist disabled       #顯示不可用的yum

 

示例:顯示所有yum

spacer.gif

提示:

status表示此yum源是否可用

 

示例:顯示不能使用的yum

[root@Linux_1 yum.repos.d]# yum repolist disabled

Loaded plugins: fastestmirror, refresh-packagekit, security

repo id                                            repo name                                                 

C6.0-base                                          CentOS-6.0 - Base                                         

C6.0-centosplus                                     CentOS-6.0- CentOSPlus                                   

C6.0-contrib                                       CentOS-6.0 - Contrib                                      

C6.0-extras                                        CentOS-6.0 -Extras                                       

C6.0-updates                                       CentOS-6.0 - Updates                                      

C6.1-base                                          CentOS-6.1 - Base                                         

C6.1-centosplus                                     CentOS-6.1- CentOSPlus                                   

C6.1-contrib                                       CentOS-6.1 - Contrib                                       

C6.1-extras                                        CentOS-6.1 - Extras                                       

C6.1-updates                                       CentOS-6.1 - Updates                                      

C6.2-base                                          CentOS-6.2 - Base                                         

C6.2-centosplus                                     CentOS-6.2- CentOSPlus                                   

C6.2-contrib                                       CentOS-6.2 -Contrib                                      

C6.2-extras                                        CentOS-6.2 - Extras 

 

spacer.gif

spacer.gif

顯示程序包:

 

list子命令

yumlist{available|installed|updates}[glob_exp1][...]

  • yum list all        #顯示所有軟件包

  • yum list available    #顯示可用的軟件包,但是尚未安裝的軟件包

  • yum list installed      #顯示已經安裝的軟件包

  • yum list updates      #顯示可供更新的軟件包

  • yum list php*    #可以使用通配符

  • yum list extras

  • yum list obsoletes  #查看廢棄的軟件包,列出所有已安裝但不在Yum Repository 內的軟件包

  • yum list recent  #查看最近添加到yum倉庫中的軟件包 

 

示例:顯示所有軟件包

 

yum list 默認是all,即顯示所有軟件包

 

 

說明:

顯示爲@anaconda表示是安裝操作系統時安裝的軟件包

 

安裝程序包:

install子命令

install package1[package2][...]

reinstall package1[package2][...](重新安裝)

 

  • yum install  #安裝軟件包

  • yum reinstall    #重新安裝

 

 

 

提示:

C  yum install可以一次安裝多個包。

C  默認不輸入“Y”是不會安裝的

C  一個軟件包有多個版本,則可以使用yum install 版本號來指定要安裝的軟件的版本。例如yum install gcc4.5.5,默認是安裝最新版本

升級與降級程序包:

update [package1][package2][...]

downgrade package1[package2][...](降級)

 

  • yum update  #升級指定的程序包,同樣可以一次升級多個包

  • yum downgrade  #降級指定程序包

 

 

 

檢查可用升級:

  • yum check-update  #顯示可供升級的軟件包

  • yum upgrade  #顯示可升級的軟件包

 

提示:

兩者作用一樣

 

卸載程序包:

remove|erase package1[package2][...]

  • yum remove  #卸載指定程序包

  • yum erase  #卸載指定程序包

 

 

提示:

  1. 卸載包的時候連同它的依賴軟件也會一同卸載

  2. 兩個命令使用相同

查看程序包

info[...]information

 

  • yum info  #查看軟件包的相關信息

查看某文件屬於哪個軟件包

(可以是某文件)是由哪個程序包所提供:

 

provides|whatprovides feature1[feature2][...]

  • yum provides  #查看某個文件由屬於哪個軟件包,後面可以跟多個文件一起查看

  • yum whatisprovides

 

提示:

兩者作用一樣

清理本地緩存:

clean [packages|metadata|expire-cache|rpmdb|plugins|all]

  • yum clean packages

  • yum clean metadata

  • yum clean expire-cache

  • yum clean rpmdb

  • yum clean plugins

  • yum clean all

構建緩存:

yum makecache

說明:將服務器上的軟件包信息先在本地緩存以提高搜索安裝軟件的速度,不用執行也可以的。配合yum -C search xxx使用不用上網檢索就能查找軟件信息執行完 yum makecache之後,你可以用yum search subversionyum -C search subversion

搜索

search string1[string2][...]

以指定的關鍵字搜索程序包名及summary信息;

 

  • yum search #搜索程序包

 

 

 

示例:

yum search bash

 

提示:

"  並不是精確匹配,而是模糊匹配

"  不光匹配軟件包名中包含的查找字符串,還會匹配summary中包括的信息

查看指定軟件包所依賴哪些軟件包

deplist package1[package2][...]

 

  • yum deplist  #查看某軟軟件包依賴什麼軟件包

 

查看yumrpmdb信息

versioin

查看yum事務歷史:

history子命令

history[info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

 

  • yum history info

  • yum history list

  • yum history packages-list 包名

  • yum history packages-info 包名

  • yum history summary

  • yum history addon-info

  • yum history redo

  • yum history undo

  • yum history rollback

  • yum history new

  • yum history sync

  • yum history stats

 

示例:查看事務歷史

[root@Linux_1 ~]# yum history

Loaded plugins: fastestmirror, refresh-packagekit, security

ID     | Login user               | Date and time    | Action(s)      |Altered

-------------------------------------------------------------------------------

     7 | root<root>              | 2015-12-3110:00 | Install        |  104  

     6 | root<root>              | 2015-12-3109:58 | Install        |   10  

     5 | root<root>              | 2015-12-3109:55 | Install        |  132  

     4 | root<root>              | 2015-12-3109:48 | Install        |   36 <

     3 | root<root>              | 2015-12-3013:12 | Install        |   23 >

     2 | root <root>              | 2015-11-18 13:44 | Install        |  15  <

     1 | System<unset>           | 2015-11-1423:50 | Install        | 1107 >

 

 

[root@Linux_1 ~]# yum history summary

Loaded plugins: fastestmirror, refresh-packagekit, security

Login user                 | Time                | Action(s)        | Altered

-------------------------------------------------------------------------------

root <root>               | Last day            |Install          |      305

System <unset>            | Last 3 months       |Install          |     1107

root <root>               | Last 3 months       |Install          |       15

history summary

 

 

 

注意:

第一次yum的執行都啓動了一次yum事務,查詢不是事務,只有安裝、升級、卸載纔是事務

 

 

安裝及升級本地程序包:

localinstall rpmfile1[rpmfile2][...]

(maintainedforlegacyreasonsonly-useinstall)

 

localupdate rpmfile1[rpmfile2][...]

(maintainedforlegacyreasonsonly-useupdate)

 

  • yum localinstall

  • yum locateupdate

 

提示:

以兩命令是爲了兼容,CentOS5之前的系統只能使用localinstall,現在已經被install代替。

包組管理的相關命令:

groupinstall  group1[group2][...]

groupupdate group1[group2][...]

grouplist [hidden][groupwildcard][...]

groupremove group1[group2][...]

groupinfo group1[...]

 

  • yum groupinstall     #安裝軟件包組

  • yum groupupdate    #更新軟件包組

  • yum grouplist  #查看所有的軟件包組

  • yum groupremove  #刪除軟件包組

  • yum groupinfo  #查看某一個軟件包組的相關信息

 

 

yum的命令行選項:

  • --nogpgcheck:禁止進行gpgcheck

  • –y:自動回答爲“yes

  • -q:靜默模式;

  • --disablerepo=repoidglob:臨時禁用此處指定的repo

  • --enablerepo=repoidglob:臨時啓用此處指定的repo

  • --noplugins:禁用所有插件;

 

yumrepo配置文件中可用的變量:

  • $releasever  #當前OS的發行版的主版本號,如67

  • $arch  #平臺

  • $basearch  #基礎平臺,如i386x86_64

 

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

 

例如:

http://mirror.centos.org/centos/6/i386/os

http://mirror.centos.org/centos/6/x86_64/os

 

提示:

如上使用變量的好處是當客戶端發生變化的時候,不用更改baseurlurl,因爲會主動取得當前客戶端的相關信息。

手動創建yum倉庫:

createrepo[options]<directory>

--basedir

 

第一步:下載並安裝createrepo命令

[root@Linux_1 ~]# yum install createrepo#python研發

 

第二步:建立元數據

createrepo ./  #把所有需要作成yum源的軟件包放在./目錄下

 

手動掛載光盤並創建本地yum

第一步:掛載光盤

[root@Linux_11 yum.repos.d]# mount /dev/cdrom /mnt/

 

第二步:創建並修改本地yum

#

# To use this repo, put in your DVD and use it with the other repostoo:

#  yum --enablerepo=c6-media[command]

# or for ONLY the media repo, do this:

#

#  yum --disablerepo=\*--enablerepo=c6-media [command]

 

[c6-media]

name=本地yumCentOS-$releasever - Media

baseurl=file:///mnt/  # 此處baseurl必須指向repodata目錄

       file:///media/

      file:///media/cdrecorder/

gpgcheck=1

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

 

注意:

"  baseurl必須指向repodata目錄 

"  必須使用file://協議

"  第三個“/”指的是文件系統的根路徑                                              

 

注意事項:

  • 如果配置文件中指明作版本精確匹配,yum源只能升級,不能降級。例如:CentOS6.1yum源可以指向6.2yum源,只能升不能降。

  • yum的安裝是會啓動事務的,事務又有隔離概念,也就是說不能在兩個終端同時使用yum安裝,這是不允許的,因此產生阻塞。

 

 

 


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