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 的header,header 包括了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] # yum的ID
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 # gpg的URL地址
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源
提示:
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
顯示程序包:
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 #卸載指定程序包
提示:
卸載包的時候連同它的依賴軟件也會一同卸載
兩個命令使用相同
查看程序包
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 subversion和yum -C search subversion
搜索
search string1[string2][...]
以指定的關鍵字搜索程序包名及summary信息;
yum search #搜索程序包
示例:
yum search bash
提示:
" 並不是精確匹配,而是模糊匹配
" 不光匹配軟件包名中包含的查找字符串,還會匹配summary中包括的信息
查看指定軟件包所依賴哪些軟件包
deplist package1[package2][...]
yum deplist #查看某軟軟件包依賴什麼軟件包
查看yum的rpmdb信息
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:禁用所有插件;
yum的repo配置文件中可用的變量:
$releasever #當前OS的發行版的主版本號,如6、7
$arch #平臺
$basearch #基礎平臺,如i386、x86_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
提示:
如上使用變量的好處是當客戶端發生變化的時候,不用更改baseurl的url,因爲會主動取得當前客戶端的相關信息。
手動創建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=本地yum源CentOS-$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.1的yum源可以指向6.2的yum源,只能升不能降。
yum的安裝是會啓動事務的,事務又有隔離概念,也就是說不能在兩個終端同時使用yum安裝,這是不允許的,因此產生阻塞。