yum歷史: yellowdog update modifier的縮寫
好處之一:可以自行解決linux下程序安裝時的依賴關係。
yum是 c/s架構
文件服務的服務器:ftp http NFS 本地文件
yum 通過一個配置文件可以獲取多個yum repo 的位置
yum repo 數據: 程序包
yum -------- yum repo 元數據 : repodata
repodata yum repo createrepo
yum 相對於rpm來說:
rpm爲基礎包管理器
yum則是rpm的前端工具
倉庫指向的路徑: repodata目錄所在的父目錄
http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/
http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/(試驗教室倉庫)
yum 命令行工具:
配置文件:指向倉庫的位置以及相關的各種配置信息:每個yum命令行可以同時指向多個倉庫,倉庫間可以優先級等相關的配置:
有兩部分組成:
主配置文件: /etc/yum.conf
爲各倉庫指向提供公共配置文件:
各倉庫的定義:/etc/yum.repos.d/*.repo
directive(指令)=value(值)
注意:文件以.repo結尾;每個repo配置文件可以配置一至多個倉庫
[main]提供公共配置
各倉庫配置
[repositoryid]
#對於當前系統的yum來講,此repositoryid用於唯一標識此repository指向,必須唯一.
name=
#當前倉庫描述信息
baseurl=url://path/to/repository/
#指明repository的訪問路徑,通常爲一個文件服務器上輸出的某repository。(指向多個路徑時:可以有多個但是:從第二行起,要空格,不要頂格寫)
(mirrorlist效果和baseurl效果相似,不可以公用。mirrorlist可分析開銷選擇,選最小開銷的)
url:
ftp 服務
ftp://SERVER/PATH/TO/REPOSITORY(repodata的父目錄)
http 服務
http://SERVER/PATH/TO/REPOSITORY(repodata的父目錄)
nfs服務
nft://SERVER/PATH/TO/REPOSITORY(repodata的父目錄)
本地目錄
file:///PATH /TO /REPOSITORY(repodata的父目錄)
enabled={1|0}
此倉庫是否可被使用
gpgcheck={1|0}
是否對程序包做校驗
gpgkey=url://path/to/keyfile
指明gpgkey文件路徑(如果設置了gpgcheck=1.需要設置這項,不然無法檢測)
cost=#
指明當前repositor的訪問開銷。默認1000(優先級)
教室環境可用倉庫:
DVD1:http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/
DVD2:http://172.16.0.1/centos/6/extras/x86_64
epel:http://172.16.0.1/fedora-epel/6/x86_64
新建倉庫緩存路徑 /var/cache/yum/
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] [pack- age2] [...]
* 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|roll-
back|new|sync|stats]
* load-transaction [txfile]
* check
* help [command]
倉庫管理:
yum repolist:列出已經配置的所有可用倉庫。
repolist [all|enabled|disabled]
緩存管理:
yum clean:清理緩存
clean [ packages(包)| metadata(元數據) | expire-cache (過期緩存)| rpmdb(數據庫) | plugins (插件)| all ]
makecache:緩存創建
自動連接至每個可用倉庫,下載其下數據,將其創建爲緩存。
程序包查看:
yum list [all | glob_exp1] [glob_exp2] [.....]
yum list{available(可安裝爲安裝)|updates(可升級)|installed|extras(未包含在倉庫中的)
|obsoletes(可被廢棄)|recent(剛加入倉庫的)} [glob_exp1] [...]
查看組:
grouplist [hidden] [groupwildcard] [...]
程序包安裝:
yum install pachage1 [pachage2][...]
只需要包名
如果某個包在不同倉庫中有多個不同版本,默認會安裝最新版本。
安裝指定版本
yum install PACKAGE-VERSION(版本名)(如果還有依賴關係。默認都安裝最新的版本,不然都需要指定新版本)
覆蓋安裝(重新安裝)
yum reinstall package1 [package2][...]
程序包升級
yum update [package1][package2][...]
程序包降級
yum downgrade package1 [package2][...]
檢查有哪些升級可用:
yum check-update(需要配置升級路徑,不然無法使用,依託於配置文件)
卸載:yum
remove | erase package1 [package2] [...]
所有依賴於正卸載的程序包的程序包 會被一併卸載。
查詢:
1.查詢程序相關簡要信息
yum info [...]
2.在包名和sumary信息中搜索指定關鍵字:
yum search KEYWORD
3.查詢指定文件由哪個程序安裝生成:
yum provides|whatprovides /PATH/TO/SOMEFILE
安裝本地程序包文件:
yum localinstall rpmfile1 [rpmfile2][...](R7版本中也忽視了。直接 install就可以了)
用於安裝倉庫中並不存在的程序包文件,這些程序包有可能又依賴於倉庫中的某些程序包.
yum localupdate(升級)
包組管理:
需要引用有空格的組名是用“” 不然會解釋成多個組
列出所有包組詳情:yum grouplist
顯示指定包組詳情 yum groupinfo group1 [....]
安裝: yum groupinstall group1 [....]
卸載:yum groupremove group1 [....]
升級:yum groupupdate group1[....]
R7 版本中可直接用 install ,remove或update來管理包組。
@GROUP_NAME(在組名前+@.組名中有空格+"GROUP_NAME")
以安裝包組“Server Platform Development"爲例:
yum install @"Server Platform Development"
yum 命令的可用選項
-y : 自動回答爲:yes
--disablerepo= 臨時禁用在配置文件中配置並啓用的某repository
--enablerepo= 臨時啓用指定的某repo
--nogpgcheck 禁止做包校驗
yum有內置變量:用於保存當前平臺的相關信息。
(1)$raleasever:當前OS發行版的主版本號
例如:對CentOS 6.6 x86_64: 主版本號爲:6
(2)$arch :平臺
i386 i486
(3)$basharch:基礎平臺,例如i686,i586,及i386的基礎平臺同爲i386
(4)$YUM0-$YUM9
例如:
baseurl=http://repo.magedu.com/centos/$releasever/$basearch
當前的系統爲 CentOS 6.6 x86_64
$releasever :6 $basearch:x86_64
%%%%%%%% (鏈接法則: 6.0 6.1 ln 6 6.0)%%%%%%%%%
利用光盤使用yum
1:掛載光盤:mount -o ro -t iso9660 /dev/dvd /media/repo
(如果mount-point(/media/repo)沒有要先創建:此目錄下不要創建別的文件了,不然掛載後讀不出來)
2:創建yum倉庫: 先移除原來的yum倉庫
進入 /etc/yum.repos.d mv test.repo test.repo.bak
3: yum repolist 查看是否移除
4:重新配置 yum倉庫(vim test.repo 這裏後綴名必須 .repo路徑要在
/etc/yum.repos.d下面)
#cd /etc/yum.repos.d
# vim sr0.repo
[dvdrepo]([repositoryid]是唯一的重名,讀取會出錯)
name=CentOS 6.6 X86_64 dvd1(這個是相關的描述信息便於查找理解)
baseurl=file:///media/repo(///追後一個/表示路徑)
enabled=1(是否可以加載)
gpgcheck=0(是否校驗)
5.測試:
# yum repolist(查看是否建倉成功)
# yum install -y php(查看是否倉庫可以用)
自己創建yum倉庫:
(1)基於發行版安裝樹安裝createrepo 程序(這個命令作用:創建repodata元數據)
#yum install createrepo
(2)創建文件用於存放軟件包文件
#mkdir -pv /var/yum/xen
(3)安裝ftp 服務用於獲取文件存放並存放到/var/yum/xen下
#yum install lftp(安裝服務)
#cd /var/yum/xen
#lftp 172.16.0.1/pub/Sources/6.x86_64/xen-4.1/(連接到ftp服務器)
#mget *.rpm(下載所有的關於xen的.rpm包)
(4)基於剛纔下載的文件構建yum倉庫所需的repodata 元數據
#createrepo /var/yum/xen
(查看效果
[root@localhost xen]# pwd
/var/yum/xen
[root@localhost xen]# ls
xen-ocaml-4.1.3-2.el6.x86_64.rpm
repodata )
(5)配置本地文件連接到yum倉庫
#cd /etc/yum.repos.d
#vim test.repo
[xenlocal]
name=xen loacl /var/yum/xen
baseurl=file:///var/yum/xen
gpgcheck=0
enbaled=1
(6)查看是否構建成功
#yum repolist
repo id repo name status
xenlocal xen loacl /var/yum/xen 41