一、前言
之前我們介紹了RPM的應用(詳細請查看http://www.www58058.com/archives/6383),發覺RPM安裝軟件有一個很繁瑣的問題,那就是包與包之間的依賴關系,如果想正常安裝和使用軟件程序,就必須根據要求一步一步的解決軟件之間的依賴關系。那么如果程序使用的包很多,將會很消耗使用人的時間和精力。那么有沒有辦法解決這一問題呢?
在RPM中我們介紹了RPM軟件會記錄軟件之間的安裝信息,其中也包括了軟件之間的依賴屬性。那么如果我們在安裝前就分析這個列表,那么在安裝時就能根據軟件之間的關系將所需的軟件一次性安裝起來,這樣就能解決這一問題,這就是 YUM 的機制。
二、yum的介紹
yum(Yellow dog Updater Modified)是CentOS中屬于RPM前段軟件包管理器,能從指定的服務器中下載RPM包,并自動分析和處理RPM包之間的依賴關系,最后將依次所依賴的軟件包都安裝了,而無需繁瑣的一個一個安裝。
三、yum repository:yum倉庫
yum倉庫的組成部分
3.1、數據
包含所有的軟件包文件
3.2、元數據
指的是數據文件:包括每個包的包名、版本信息、各包所包含的文件列表、包與包之間的依賴關系、包的分組信息
小擴展:元數據是怎么來的呢? 使用createrepo工具,能夠簡潔的快速的將我們所指定的存放大量RPM包的目錄,里面所有的RPM包信息都讀出來,分析他的依賴關系并生成元數據。所以createrepo可以理解為它是制作yum元數據的工具。 在光盤里其實也有這個元數據,路徑在光盤中的 [root@www mnt]# cd repodata/ 里,然后是以 sqlite文件后綴 備注:centos5 是以 xml 后綴,centos6、7是以sqlite數據庫的方式存儲的
四、yum的配置文件介紹
yum的配置文件有2中 : 主配置文件 + 倉庫配置文件
4.1、主配置文件路徑 /etc/yum.conf
[main] cachedir=/var/cache/yum/$basearch/$releasever #下載RPM包的緩存目錄 keepcache=0 #RPM緩存的程序包安裝完成后是否保存,0表示不保存,1表示保存 buglevel=2 #調試級別 取值范圍 0 - 10,默認值為2 logfile=/var/log/yum.log #yum相關日志存放路徑 exactarch=1 #是否要平臺完全匹配才能安裝 obsoletes=1 #需不需要檢查已過期的倉庫 gpgcheck=1 #是否檢查包的完整性和合法性 plugins=1 #是否允許支持yum的插件功能,0 表示不允許 ,1表示允許,建議允許,一般會用yum-fastestmirror這個插件 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 包
4.2、倉庫配置文件路徑 /etc/yum.repos.d/*.repo
倉庫文件可以有多個,而且一個或幾個相關的倉庫的配置信息也可保存為一個文件,并且所以的倉庫文件名都以 .repo結尾
[REPOID] #容器名字,必須是唯一的 name= #some name for this repository倉庫的名字,僅作一個標識 baseurl= #指定真正倉庫所在的路徑,可以指多個倉庫 #例如:baseurl=file:///media/cdrom # ftp://172.168.1.1/path #備注第二行不能頂格寫,否則會出錯 mirrorlist= #列出容器可以使用站點,如果不想使用,可以再前面加 # 注釋 enabled= {0 | 1} #指是否啟用這個倉庫,0表示不啟用,1表示啟用 gpgcheck= {0 | 1} #是否要檢測軟件包的合法性,0表示不檢測,1表示不檢查 gpgkey= #軟件包的公鑰文件所在路徑,例如:gpgkey=file:///media/cdrom/GPG-RPM-KEY-centos-6 cost= #倉庫優先級,比如一個軟件包在多個倉庫都有,那應該選擇哪個安裝呢?就是根據這個優先級,默認是100,數字越小表示越優先使用
備注:默認各倉庫的用法:
base庫:通常為系統發行版所提供的程序包(就是光盤)
updates庫:存放更新包
extra庫:存放額外包
epel庫:epel庫文件
庫本身有優先級的,但是僅是在客戶端有,服務器端是沒有優先級的
小貼士:yum可支持多個協議,包括 ftp、http、nfs和本地文件共享服務
所以倉庫配置文件中的 baseurl 一項可以有多個寫法,下面是各寫法的格式
1)ftp
格式:ftp://server/path/to/repository
2)http
格式:http://server/path/to/repository
3)nfs
格式:nft://server/nfs_path
4)本地文件共享服務
格式:file:///path/to/repository
五、yum安裝步驟
六、yum命令的使用
6.1、yum查詢功能
yum [option] [需要查詢的信息][參數]
-y:默認yum需要是交互模式,-y表示自動提供yes響應
search:搜索某個軟件名或關鍵字
list:列出所有yum所管理的軟件包和名稱
info:同上,也類似rpm -qai
provides:查找該命令是由軟件安裝生成的,類似rpm -df的功能
repolist:列出所有可用的repo
例如: [root@localhost ~]# yum provides bash
[root@localhost ~]# yum repolist
6.2、安裝、升級、降級、卸載功能
yum [option] [需要查詢的信息][參數]
install:后面接需要安裝的軟件
reinstall:后面接需要重新安裝的軟件
update:后面接需要升級到的軟件
check-update:檢查可用的升級包
downgrade:后面接需要降級到的版本
remove:卸載軟件
erase:功能同上,卸載
例如: [root@localhost yum.repos.d]# yum install zlib-static
6.3、和軟件組相關的功能
yum [組功能] [軟件組]
grouplist:列出所有可使用的組列表
groupinfo:后面接group name,可用了解該group內含所有組的名稱
groupinstall:安裝整組的軟件
groupremove:刪除某個組的軟件
例如: [root@localhost yum.repos.d]# yum grouplist #所有的包組未一一列舉,若想安裝某組可使用groupinstall直接安裝 Installed Groups: #已經安裝的軟件組 Additional Development Base Console internet tools Development tools Installed Language Groups: #已經安裝的語言組 Arabic Support [ar] Armenian Support [hy] Georgian Support [ka] Available Groups: #有效軟件組包文件 Backup Client Backup Server Available Language Groups: #有效的語言組包文件 Afrikaans Support [af] Albanian Support [sq]
6.4、清理緩存
yum clean { all | package | headers }
all:將所有的數據刪除,包括元數據和軟件文件
package:將所有已下載的軟件文件刪除
headers:刪除所有下載的元數據文件
例如 [root@localhost yum.repos.d]# yum clean all #這樣將會清除所有的已下載的元數據和軟件文件 Loaded plugins: fastestmirror, security Cleaning repos: base extras updates Cleaning up Everything Cleaning up list of fastest mirrors
七、知識小結
7.1、yum是RPM包的前端工具,主要解決了程序包的依賴關系
7.2、需要了解yum的配置文件
主配置文件 /etc/yum.conf 和 倉庫配置文件 /etc/yum.repos.d/*.repo
7.3、yum按住功能的流程
7.4、yum的命令
安裝、卸載、更新、程序組、清理緩存、查詢等功能
原創文章,作者:螃蟹,如若轉載,請注明出處:http://www.www58058.com/6445
螃蟹的文章越來越專業了,文章寫法也自成一派
@stanley:謝謝老師,我會繼續努力的
很好的分享