基於rpm安裝程序包時,程序包之間的依賴性太過於複雜和麻煩,開發了yum程序包管理器,可以自行的解決程序包之間的依賴關係,並且一次性安裝所有的有依賴關係的程序包,無須繁瑣的下載依賴性的程序包,相對於rpm來說,rpm爲基礎包管理,yum是前端工具。而yum需要一個文件服務的服務器,總共有四種文件服務器:ftp服務,http服務,本地文件目錄,NFS服務。yum命令工具可以通過配置文件,指向倉庫的位置以及相關的各種配置信息;每個yum命令行可以同時指向多個倉庫,倉庫間可以優先級等相關的配置。
當yum第一次訪問yum倉庫時,會將yum倉庫的元數據緩存在本地配置文件中,當安裝過程中會自動尋找yum倉庫中的相關依賴性的程序包,然後一併下載。當然,有時yum倉庫會發生更改,緩存也需要更改管理。/etc/yum.conf爲主配置文件,各倉庫文件定義在:/etc/yum.repos.d下,文件必須以.repo結尾,每個repo配置文件中可以匹配一致多個倉科。在/etc/yum.repos.d的[main]提供的是公共配置信息。對於當前系統的yum來說,每個倉庫的repositoryid用於指向repository,因此都是唯一的。
各倉庫配置(在/etc/yum.repos.d下創建文件)
[repositoryid]
#對於當前系統的yum來講;此repositoryid用於唯一標識此repository指向,因此,其必須唯一
name=
#當前倉庫描述信息
baseurl= baseurl=url://path/to/repository/
#指明repository的訪問路徑;通常爲一個文件服務器上輸出的某repository;
url:(或使用mirrolist指明一個url,此url指向的文件中包含多個指向庫的url)
ftp服務:
ftp://SERVER/PATH/TO/REPOSITORY
http服務:
http://SERVER/PATH/TO/REPOSITORY
本地目錄:
file://SERVER/PATH/TO/REPOSITORY
enabled={1|0}
此倉庫是否可被使用
gpgcheck={1|0}
是否對程序包做校驗
gpgkey=url://path/to/keyfile
指明gpgkey文件路徑;
cost=#
指明當前repository的訪問開銷,默認爲1000
例:
[yumtest]
enabled=1
gpgcheck=0
baseurl=http://172.16.0.1/fedora-epel/6/x86_64/
name=epe
讀取倉庫的元數據後,會保存在/var/cache/yum/x86_64/6下,方面下次使用yum命令時進行檢索讀取,通過yum clean all 可以清楚此目錄下的所有緩存信息,yum repolist可以重新建立緩存信息。
下面是yum命令的常用的選項:
command is one of:
* install package1 [package2] [...]
* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* list [...]
* info [...]
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
* search string1 [string2] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
* reinstall package1 [package2] [...]
* downgrade package1 [package2] [...]
* deplist package1 [package2] [...]
* repolist [all|enabled|disabled]
* version [ all | installed | available | group-* | nogroups* | grouplist |
groupinfo ]
* history [info|list|packages-list|packages-info|summary|addon-
info|redo|undo|rollback|new|sync|stats]
* load-transaction [txfile]
* check
* help [command]
倉庫管理:
repolist:列出已經配置的所有可用倉庫
repolist [all|enabled|disabled]
緩存管理:
clean:清理緩存
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
makecache:緩存創建
自動連接至每一個可用倉庫,下載其無數據,將其創建爲緩存;
程序包查看:list
yum list [all | glob_exp1] [glob_exp2] [...]
yum list available [glob_exp1] [...]
yum list updates [glob_exp1] [...]
yum list installed [glob_exp1] [...]
yum list extras [glob_exp1] [...]
yum list obsoletes [glob_exp1] [...]
yum list recent
grouplist
程序包安裝:
install package1 [package2] [...]
Note:只需要提供包名:
yum install package1
如果某包有在不同倉庫中有多個不同版本,默認會安裝最新版本;
如果要安裝指導版本: install PACKAGE-VERSION...
重新安裝(覆蓋安裝)
reinstall package1 [package2] [...]
程序包升級:
update [package1] [package2] [...]
程序包降級:
downgrade package1 [package2] [...]
檢查有哪些升級可用:
check-update
卸載:
remove | erase package1 [package2] [...]
所有依賴於正卸載的程序包的程序包會被一併卸載;
查詢:
查詢程序的相關簡要信息:info [...]
在包名和sumary信息中搜索指定的關鍵字: search KEYWORD...
查詢指定文件有哪個程序包安裝生成 provides | whatprovides feature1 [feature2] [...]
安裝本地的程序包文件:
localinstall rpmfile1 [rpmfile2] [...]
用於安裝倉庫中並不存在的程序包文件,這些程序包有可能依賴於倉庫中的某些程序包;
localupdate rpmfile1 [rpmfile2] [...]
包組管理:
列出所有包組:grouplist
顯示指定包組詳情:groupinfo group1 [...]
安裝:groupinstall group1 [...]
卸載:groupmove group1 [...]
升級:groupupdate group1 [...]
可直接用install 、 remove 或update來管理包組:
@GROUP_NAME
yum install @"Server Platform Development"
yum命令的可用選項:
-y ;自動回答爲yes
--disablerepo= : 臨時禁用在配置文件中配置並啓用的某repository
--enablerepo=:臨時啓用指定某repo
--nogpgcheck:禁止做包檢驗
yum有內置變量,用於保存當前平臺的相關信息;
(1)$releasever :當前OS發行版的主版本號;
例如,對CentOS 6.6 x86_64 , 主版本號爲6
(2) $arch :平臺
(3) $basearch:基礎平臺,例如i686 , i586 , i486及 i386的基礎平臺爲 i386
(4) $YUM0-$YUM9爲定義的變量,一般不常用。
例如:
baseurl=http://repo.magedu.com/centos/$releasever/$basearch
當前系統爲CentOS6.6 x86_64,會生成http://repo.magedu.com/centos/6/x86_64的路徑,6爲版本號,若有升級版6.0、6.1、6.2多個版本時可以在目錄下建立文檔,通過鏈接到升級版本的文件;還可以在$basearch想建立多個平臺的文檔。
在實際運用中,我們還可以通過使用光盤鏡像來作爲yum repository;
(1)掛載光盤到指定掛載點,如/media/cdrom
(2)新建yum repo配置文件,類似如下所示:
[dvdbasel name=CentOS 6.6 X86_64 on dvdl baseurl=file: // /media/cdrom gpgcheck=0 enabled=1 自己創建yum倉庫: (1)在基於發行版安裝樹安裝createrepo (2)確定repository輸出方式: 本地輸出:提供一個方式rpm包的本地路徑 網絡輸出:提供一個文件服務器,配置好ftp服務或http服務 ftp服務: 安裝程序包: vsftpd 文件存傳遞放路徑 /var/ftp/pub 啓動服務: service vsftpd start http服務 安裝程序包:httpd 文件存放路徑: /var/www/html 啓動服務: service httpd start Note:確保防火牆服務關閉 (3)在準備好的目錄中方式rpm程序包文件 (4)對此目錄運行createrepo命令即可 (5)在配置文件中加入配置