Linux軟體包的管理--YUM

來源:互聯網
上載者:User

標籤: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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.