Linux的程序包管理器(中)——yum命令從未如此詳細過

    與rpm包管理器相比,yum包管理器恐怕更受用戶的青睞,其很大的原因在於這款包管理器能自動解決rpm包之間的相互依賴關係。本文就CentOS 6.6爲例,儘可能詳細的給讀者朋友們講解yum包管理器的用法。

    yum(Yellowdog Updater Modified的縮寫)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,用戶無須繁瑣地一次次下載、安裝。---引自“百度百科”。因此我們就可以判斷出它實際上是一個C/S工具,有客戶端和服務器端。通常把服務器端叫做“yum倉庫”。這個叫法非常貼切,每當我們用yum安裝一個程序的時候,它就如同一個機器人,自動的從yum倉庫中找到相應的包,搬到我們的系統上自動爲我們安裝。

    yum的配置文件是/etc/yum.conf,其中定義了yum倉庫的位置等信息

wKiom1R6dNywPB41AAP0GvbJbwM169.jpg

從圖中我們可以看出在/etc/yum.repos.d/目錄下存有不止一個的yum倉庫,實際上系統自帶的yum倉庫就存放在該目錄下,其命名以.repo結尾,後文我們將爲大家講解yum倉庫的相關內容

wKioL1R6eDSTd1DZAACLPTYZf18806.jpg

    yum命令的使用:

    安裝:yum install PACKAGE_NAME ...  可以同時安裝多個程序,yum從yum倉庫中找到該程序後,會詢問用戶是否安裝。

例如:使用yum安裝mysql程序:yum install mysql

wKioL1R6g4GT_PuEAAWCOxyIfcg802.jpg

如果想實現完全自動化安裝,只需要在程序包名後面加上 -y,替用戶自動回答爲yes。則上述安裝命令還可以寫爲:yum install mysql -y

如果要安裝指定的程序包版本的程序:yum install PACKAGE_NAME-VERSION

注:使用yum命令也可以安裝本地的程序包:yum localinstall /path/to/rpm_package_file ...,在CentOS 7上可以直接使用yum install /path/to/rpm_package_file ...安裝本地程序包

    重裝:yum reinstall PACKAGE_NAME ...

例如:使用yum重裝nginx:yum reinstall nginx -y

wKioL1R6hKWyXOfqAAPthVDMxx8853.jpg

    升級:yum update PACKAGE_NAME;檢查當前系統上可升級的程序:yum check-update;如果有多個版本的升級包可用,且僅期望升級到指定版本:yum update PACKAGE-VERSION

wKioL1R6hpjDaDWqAARtAeAsERQ705.jpg

例如升級nginx,從1.4.7-1升級到1.6.2-1版本:yum update nginx -y

wKioL1R6huuDQ2QeAAQrjzDhn_o200.jpg

    降級:yum downgrade PACKAGE_NAME。注:將當前版本降級到它的前一級,如果想降級到指定版本,需指明包版本號

例如,將現版本的nginx降級到1.4.7-1版本:yum downgrade nginx-1.4.7-1.el6.ngx  -y

wKiom1R6iGaB8RDsAARqxn54yjY781.jpg

   卸載包:yum erase PACKAGE_NAME 或 yum remove PACKAGE_NAME。注:被依賴的包會被一併卸載。

   查詢類命令:

        查詢某程序是否安裝:yum list PACKAGE_NAME,不加包名,將列出系統上安裝的所有包

wKioL1R6i3qBNzdMAAHtig1VH7M477.jpg

      查看某包的摘要信息:yum info PACKAGE_NAME


wKiom1R6jiGSVw99AAMXV0mDtyI279.jpg   

        根據關鍵字模糊查詢包名或包的摘要信息包含此KEYWORD的相關列表:yum search KEYWORD

        查詢某文件是由哪個包安裝生成:yum provides /path/to/somefile 或 yum whatprovides /path/to/somefile

    附:包組管理。通常在開發程序包時,需要使用,如:Development Tools、Server Platform Development、Desktop Platform Development、Debug Tools等包組


    顯示所有包組:yum grouplist

    顯示某包組的相關信息:yum groupinfo "GROUP_NAME"

    安裝包組:yum groupinstall "GROUP_NAME"或 yum install @"GROUP_NAME"

    卸載包組:yum groupremove "GROUP_NAME"或 yum remove @"GROUP_NAME"

    升級包組:yum groupupdate "GROUP_NAME"或 yum update @"GROUP_NAME"

    下面爲讀者朋友們講解一下yum倉庫的有關內容。

    在/etc/yum.repo.d/目錄中,以.repo命名的都是yum倉庫。yum倉庫存放了衆多rpm包以及和rpm包元數據相關的服務器路徑,yum命令的安裝,升級都是依賴於yum倉庫。

    yum倉庫類命令:   

        列出當前系統上所有可用的倉庫: yum repolist

wKioL1R6qoWQ6qONAAE9dAWsaOo743.jpg                 

        禁用某個yum倉庫   yum --disablerepo=REPO_ID repolist,如禁用nginx倉庫: yum --disablerepo=nginx repolist

wKioL1R6q1Lwf4A_AAFLxzXHkQY951.jpg

        啓用某個yum倉庫yum --enablerepo=REPO_ID repolist,如啓用nginx倉庫: yum --enablerepo=nginx repolist

wKiom1R6qyLyOJn1AAFfdb5N8Fg707.jpg

    注:命令行啓用或禁用yum倉庫的優先級要高於配置文件/etc/yum.repos.d/*.repo中enable定義的屬性。

        清理yum倉庫緩存:yum clean all;通常在切換yum倉庫的時候,需要先清理緩存

    我們可以使用系統自帶的yum倉庫,但在公司裏有些時候網絡環境不太給力,那麼我們也可以自己配置yum倉庫,Linux允許用戶在一個repo文件中定義多個倉庫,也可以將多個倉庫一一命名爲repo文件。

    yum倉庫定義的格式:

        [REPO_ID]定義了倉庫在此係統上的唯一標識,如[base]

        name=REPO的描述信息

        baseurl=yum客戶端訪問倉庫的路徑,注:要頂格寫,如:baseurl=ftp://172.16.0.1/pub/CentOS6/;常用的文件協議有:ftp://、http://、nfs、file:///(最後一個/表示根文件系統路徑)。

        enabled={1|0}是否啓用此yum倉庫

        gpgcheck={1|0}是否檢查包的來源合法性和包的完整性

        gpgkey=指定公鑰key的存放路徑,如:ftp://172.16.0.1/pub/CentOS6/gpg-key

        cost=開銷值,默認爲1000,值越小yum客戶端越優先選擇,當有多個yum倉庫時可指定某個yum倉庫被率先訪問


    附:yum客戶端配置的高級用法

    ①在yum客戶定義倉庫時可使用cost定義倉庫的使用開銷,默認爲1000;

    ②baseurl中指定路徑時可使用變量:$releasever: 當前OS發行版的主版本號

                                     $arch: 平臺

                                     $basearch: 基礎平臺,例如i686,i586,i486,i386系列的基礎平臺都是i386,如:http://mirrors.sohu.com/centos/$releasever/os/$basearch

    ③可以使用mirrorlist指令替換baseurl:指向一個URL,此URL是一個文本文件,其中保存了大量鏡像服務器列表;用戶使用yum倉庫時,會獲取此列表文件,而後通過fastestmirror插件判斷哪一個鏡像爲訪問速度最快的服務器,並以之做爲本次訪問的baseurl;


    在定義yum倉庫的時候,其實只需要定義[REPO_ID]、baseurl、enabled就滿足了一個yum倉庫使用的基本條件了。定義完之後,不要以爲就可以用了,還需要用createrepo程序將其組建起來。

    構建yum倉庫命令:createrepo <DIR >。注:需先yum安裝該程序。

    

實戰:將CentOS6.6DVD2中的rpm包放到FTP服務器上,創建成yum倉庫。供公司內部使用。

爲了給大家演示,使用兩臺虛擬機,一臺作爲ftp服務器(IP:172.16.24.1),一臺作爲客戶端(IP:172.16.24.24)

將dvd光盤映像添加進虛擬機,開機啓動系統。

wKioL1R6l3vyyW_oAAIsvA--31I632.jpg

啓動ftp服務: service vsftpd start

wKioL1R6rgeRKrF0AAB7ZC_MzaY148.jpg

創建dvd的掛載點:mkdir /media/cdrom;

以只讀方式掛載光盤:mount /dev/cdrom /media/cdrom;

在/var/ftp/pub/中,創建一個目錄pub存放這些rpm包,並將dvd目錄下Packages目錄下的所有包複製到/var/ftp/pub/pub目錄中:cp /media/cdrom/Packages/* /var/ftp/pub/pub(注:這個目錄是ftp服務器的共享目錄,放在其他目錄下的用朋友請檢查客戶機是否有權訪問到這個目錄)

wKiom1R6meuB2IZDAAD3zCAF2Nw740.jpg

安裝構建yum倉庫程序:yum install createrepo -y 或者將crearepo的rpm包下載至FTP服務器上,使用rpm -i createrepo-主版本號-次版本號-發行號-其他.rpm安裝   

wKiom1R6nKKzaA47AAOrpzLfm64126.jpg

構建倉庫:createrepo /var/ftp/pub/pub/

wKioL1R6pUnAGcWsAAEMmOv8j8M025.jpg

在客戶機上編輯配置文件指向該倉庫:vi /etc/yum.repos.d/ftp.repo

[ftp_pub]

baseurl=ftp://172.16.24.1/pub/pub

enabled=1

gpgcheck=0

cost=200

保存退出;

清理yum緩存:yum clean all;並查看結果:

wKiom1R6rffQepW8AAOBdt9-0k4149.jpg

結果測試:安裝axel:yum install axel

wKiom1R6t4qiSaabAAPUyF1LV1k768.jpg

注:新上傳到ftp上rpm包,要重建yum倉庫,切記!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章