標籤:yum
在上一篇部落格《Linux軟體包的管理--RPM包管理器》中詳細講述了RPM,但是存在一個問題?就是RPM不能自動解決軟體包之間的依賴性。所以就出現了增強版的RPM管理器-YUM。
以下講解以CentOS6系列為例。
一、YUM介紹
YUM(Yellowdog Updater Modified)是一種C/S架構,它為什麼就能自動解決依賴性關係呢?這取決於 YUM 服務端的RPM倉庫,在這個倉庫裡放著我們經常用到的rpm格式的軟體包。
1、yum倉庫的組成
組成 |
內容 |
資料
|
存放各個rpm包 |
中繼資料 |
包名、版本資訊、依賴關係、包分組資訊、依賴關係列表。 在centos6中遵循sqlite格式,產生的中繼資料目錄是repodata。 |
2、yum用戶端如何訪問服務端
以升級為例:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/3F/85/wKiom1PKQOHycOhCAAGR0TdSJ6A513.jpg" title="11111111111111111111111111111111111.jpg" alt="wKiom1PKQOHycOhCAAGR0TdSJ6A513.jpg" />
3、如何配置yum的服務端和用戶端
1)在伺服器端
首先:在伺服器端要確保有可用的yum倉庫。yum倉庫其實就是檔案伺服器。repodata目錄所在的父目錄就是一個yum倉庫。
其次:伺服器端必須通過某種手段將yum倉程式庫共用出去,可以讓用戶端使用,常見的共用方式有:ftp,http,nfs。如果是本地使用(用戶端和服務端是同一台機器),也可以使用file方式。
2)yum用戶端
提供repo設定檔,指明倉庫訪問路徑及各種屬性。主設定檔(中心設定檔):/etc/yum.conf。
# 在這裡定義一些預設配置屬性和全域配置屬性[main]cachedir=/var/cache/yum/$basearch/$releaseverkeepcache=0debuglevel=2logfile=/var/log/yum.logexactarch=1obsoletes=1gpgcheck=1plugins=1installonly_limit=5bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yumdistroverpkg=centos-release
一個後幾個相關的倉庫的配置儲存成一個檔案,檔案名稱都以.repo結尾,儲存在/etc/yum.repo.d目錄中。
下面介紹一下檔案格式(以163鏡像為例):
[base] # 指明倉庫名稱,使用者可自行定義name=CentOS-$releasever - Base - 163.com # 一般是對這個倉庫名稱的說明# 最關鍵的是這一項,指明倉庫的訪問路徑# 為了配置方便,yum引入了變數,yum設定檔中可用的四個變數:# releasever: 程式的版本,對Yum而言指的是redhat-release版本;只替換為主要版本號,如RedHat 6.5,則替換為6; # arch: 系統架構# basearch: 系統基本架構,如i686,i586等的基本架構為i386; # YUM0-9: 在系統中定義的環境變數,可以在yum中使用;# 最常用的就是 releasever 和 basearch# 下面在訪問的時候會被替換成:baseurl=# baseurl可以使用多個:例如# baseurl=# # 使用多個baseurl時需要用到以上格式 baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os# baseurl和mirrlist通常只需一個,我們一般配置baseurlgpgcheck=1 # 是否進行gpg檢測(包的完整性和合法性)gpgkey= # gpg檢測是的秘鑰檔案# 還有其他選型,讀者在配置時,可自行選擇# 常用的還有:# enable={0|1} 是否啟用該倉庫# cost=N 配置倉庫的”花費“,等價於優先順序。N的指越小,優先順序越高。
配置好這些準備工作,就可以使用yum工具了。
三、yum工具的使用
這裡以互連網163鏡像為例示範。
1、列出所有可用repo
yum repolist {enabled|disabled|all}
# yum repolist {enabled|disabled|all}# enabled 列出可用的 # disabled 停用 # all所有的[[email protected] yum.repos.d]# yum repolistLoaded plugins: fastestmirror, refresh-packagekit, securityLoading mirror speeds from cached hostfilebase | 3.7 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 repo id repo name statusbase CentOS-6 - Base - 163.com 6,367extras CentOS-6 - Extras - 163.com 14updates CentOS-6 - Updates - 163.com 1,153repolist: 7,534
2、列出rpm包
yum list {all|installed|available}
# yum list {all|installed|available}# all 列出所有的包 等價於 yum list # installed 列出已安裝的包# available 列出可用的包(不包括已安裝的)# 一般情況下,會這樣使用[[email protected] yum.repos.d]# yum list installed | grep "http"httpd.x86_64 2.2.15-26.el6.centoshttpd-tools.x86_64 2.2.15-26.el6.centos
3、包的描述資訊
yum info package_name
Loading mirror speeds from cached hostfileInstalled PackagesName : httpdArch : x86_64Version : 2.2.15Release : 26.el6.centosSize : 2.9 MRepo : installedFrom repo : anaconda-CentOS-201303050102.x86_64Summary : Apache HTTP ServerURL : http://httpd.apache.org/License : ASL 2.0Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.Available PackagesName : httpdArch : x86_64Version : 2.2.15Release : 30.el6.centosSize : 821 kRepo : updatesSummary : Apache HTTP ServerURL : http://httpd.apache.org/License : ASL 2.0Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.
4、列出所有的包組資訊
yum grouplist
# 經常情況下我們會是這樣來使用[[email protected] yum.repos.d]# yum grouplist | grep "Deve" Additional Development Desktop Platform Development Development tools Server Platform Development
5、顯示包組的資訊:例如組中包含的程式包列表
yum groupinfo "GROUP NAME"
[[email protected] yum.repos.d]# yum groupinfo "Development tools"Loaded plugins: fastestmirror, refresh-packagekit, securitySetting up Group ProcessLoading mirror speeds from cached hostfileGroup: Development tools Description: A basic development environment. Mandatory Packages: autoconf automake binutils bison flex gcc gcc-c++ gettext libtool make patch pkgconfig redhat-rpm-config rpm-build Default Packages: byacc cscope ctags cvs diffstat doxygen elfutils gcc-gfortran git indent intltool patchutils rcs subversion swig systemtap Optional Packages: ElectricFence ant babel bzr chrpath cmake compat-gcc-34 compat-gcc-34-c++ compat-gcc-34-g77 cvs-inetd dejagnu expect gcc-gnat gcc-java gcc-objc gcc-objc++ imake jpackage-utils kdewebdev ksc libstdc++-docs mercurial mod_dav_svn nasm perltidy python-docs rpmdevtools rpmlint systemtap-sdt-devel systemtap-server
6、清理緩衝
yum clean {all|packages|metadata|expire-cache|rpmdb|plugins}
# yum clean {all|packages|metadata|expire-cache|rpmdb|plugins}# all 所有緩衝# packages 清除包緩衝# metedata 清除中繼資料快取# expire-cache 清除到期緩衝# rpmdb 清除RPM資料庫緩衝# plufins 清除外掛程式緩衝# 最常用的就是 yum clean all[[email protected] yum.repos.d]# yum clean allLoaded plugins: fastestmirror, refresh-packagekit, securityCleaning repos: base extras updatesCleaning up EverythingCleaning up list of fastest mirrors
7、安裝程式包
yum install package_name
yum install httpd -y # 常用選項是 -y 意思是不需要確認,直接安裝
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/3F/85/wKiom1PKdIrQ2CS_AAS68Jnry00075.jpg" title="1213213213123.jpg" alt="wKiom1PKdIrQ2CS_AAS68Jnry00075.jpg" />
重新安裝:
yum reinstall package_name
yum reinstall httpd -y
8、升級
yum check-update: 檢查可用的升級包
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/3F/85/wKiom1PKd1iAcJ4pAADWasr_URw300.jpg" title="qwq.jpg" alt="wKiom1PKd1iAcJ4pAADWasr_URw300.jpg" />
yum update package_name 升級軟體
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/3F/86/wKioL1PKeUmDibpIAAN3IyhKUU8012.jpg" title="4.jpg" alt="wKioL1PKeUmDibpIAAN3IyhKUU8012.jpg" />
[[email protected] yum.repos.d]# rpm -q ntpntp-4.2.6p5-1.el6.centos.x86_64
yum downgrade package_name 降級使用的,退回原來的版本
# yum downgrade ntp -y 降級第一次可能會出現錯誤,解決辦法之一是:yum upgrade -y 升級yum工具[[email protected] yum.repos.d]# yum downgrade ntp -yLoaded plugins: fastestmirror, refresh-packagekit, securitySetting up Downgrade ProcessLoading mirror speeds from cached hostfileOnly Upgrade available on package: ntp-4.2.6p5-1.el6.centos.x86_64Nothing to do
9、卸載
yum remove|erase package_name
yum remove httpd -y
10、查詢某檔案是由哪個包安裝產生的
yum whatprovides|provides /path/to/somefile
# 會列出所有的提供此設定檔的包[[email protected] yum.repos.d]# yum provides /etc/httpd/conf/httpd.conf Loaded plugins: fastestmirror, refresh-packagekit, securityLoading mirror speeds from cached hostfilehttpd-2.2.15-30.el6.centos.x86_64 : Apache HTTP ServerRepo : updatesMatched from:Filename : /etc/httpd/conf/httpd.confhttpd-2.2.15-29.el6.centos.x86_64 : Apache HTTP ServerRepo : baseMatched from:Filename : /etc/httpd/conf/httpd.confhttpd-2.2.15-30.el6.centos.x86_64 : Apache HTTP ServerRepo : installedMatched from:Other : Provides-match: /etc/httpd/conf/httpd.conf
11、安裝包組
yum groupinstall "GROUP NAME"
# 常用的包有:# Desktop Platform Development 開發平台# Development tools 開發所用的包# 例如:yum groupinstall "Development tools" -y
12、卸載包組
yum groupremove "GROUP NAME"
四、自製yum倉庫
1、如果作為個人使用的話,最簡單的辦法是,掛載光碟片鏡像使用。
以VMware虛擬機器為例:
先關聯光碟片鏡像,掛載光碟片鏡像就可以使用。
其中:.repo中的baseurl使用file就可。例如:baseurl=file:///media/centos
2、自建yum倉程式庫伺服器
以ftp為例,步驟:
(1) 安裝ftp程式,並啟動服務
# rpm -ivh vsftp-版本號碼
或者
# yum install vsftpd -y
啟動服務
# service vsftpd start
# chkconfig vsftpd on
(2) ftp的共用目錄為/var/ftp/pub
建立子目錄,存放某相關的所有rpm包(建議)
(3) 為倉庫產生中繼資料檔案,以使能夠作為倉庫使用
# rpm -ivh createrepo-版本號碼
或者
# yum install createrepo -y
# createrepo /path/to/rpm_repo/ 產生repo的中繼資料目錄 例如:createrepo /var/ftp/pub/Packages
(4) 配置yum用戶端使用此倉庫即可
總結:本文主要介紹yum工具的使用,簡單介紹了自製yum服務端的步驟。
本文出自 “逆水寒” 部落格,請務必保留此出處http://guoting.blog.51cto.com/8886857/1440326
Linux軟體包的管理--YUM