Linux軟件管理(rpm,yum)

Linux的應用程序安裝提供了兩中格式的軟件包:一種是軟件開發者直接提供的源碼包;另一種是發行版廠商提供事先編譯好打包的軟件包;用戶需要根據需要來選擇何種方式安裝軟件,作為系統管理運維人員,要想合理應用,必須熟悉這兩者之間的內在聯系以及各自的特性和差異;

*軟件包管理工具)

  — RPM軟件包管理工具

 — YUM軟件包前端管理工具

軟件包管理工具:

早先用戶安裝軟件是非常痛苦的,只能編譯安裝,尤其對于一個不是軟件開發人員,不熟悉編譯過程的人,要想編譯安裝軟件幾乎沒有辦法做到,不過后來有大量的發行版廠商,根據他們自己對用戶需求的理解,事先通過軟件包管理器在一個通用平臺上(比較老的硬件平臺架構,因為軟件向下兼容)添加一些特性進行編譯,然后打包成自己特定的軟件包格式,要想靈活應用,必須使用與之對應的軟件包管理工具,每個發行版的廠商都有自己對軟件組織打包的理解方式,雖然廠商之間的管理工具不同,但是要實現的目的和功能基本上都是一致的,這包含他們必須能夠實現軟件包的安裝、升級、卸載、查詢、校驗等功能;目前主流的Linux發行版redhat系使用的是自己rpm工具,debian系使用的是dpt工具,雖然都是軟件包管理工具,但是理解層次深度還是有所差別的,經過多年相互借鑒學習,為了適應管理更加合理,redhat做出了更多調整進去,事實現在的rpm更是Linux系統中軟件包管理模式的一種規范;下面也主要介紹它.


軟件包獲取途徑:

    首先要知道軟件包獲取的途徑,跟對一般信息的獲取不同,首先要找信任的官方機構或網站;確保程序包是安全可信任的,沒有內置其他不正當的后門或惡意程序,作為系統運維人員,系統安全必須考慮到位;下面介紹一下比較值得信任的獲取途徑:

   (1)系統發行版安裝光盤;

 

   (2)官方鏡像站點;

      http://mirrors.aliyum.com

      http://mirrors.sohu.com

      http://mirrors.163.com

   (3)項目官方站點:

      apache

   (4)第三方組織:

      EPEL

   (5)搜索站點:

      http://rpm.pbone.net

      http://pkgs.org

      http://rpmfind.net

RPM工具功能詳解:

    rpm 工作原理:

    rpm工具使用rpm命令對軟件包進行管理,同時在內部維護一個叫PMS(Package Management Systme)軟件包管理系統;rpm工具借助數據庫,對rpm軟件進行管理;主要記錄信息如下:

    a:Linux系統安裝了什么軟件包;

    b:每個軟件包安裝后生產了什么文件在系統中;

    c:每個安裝后的軟件包版本

    b:包之間的依賴關系

  

   rpm軟件包格式:

      一般rpm分為主包和輔助包;帶devel字符串的開發包、帶utils字符串的工具包等輔助包,通常實現功能較多軟件程序包會有較多的輔助包;

     一般程序包名稱格式如下:

     軟件名詞-軟件版本發行號-軟件打包發行號-支持的平臺架構-以“.”rpm結尾

     這里主要介紹一下架構:

       一般分為運行在32位CPU系統上的x86系列,和運行在64位CPU系統上的x64位系列,同時64位的平臺兼容x86,程序有向下兼容的特性,      需要注意:程序中的高級特性依賴較新的硬件,如果運行在較老的硬件平臺架構上,高級功能特性有可能無法實現;noarch字符串表示跟平臺無關,不依賴;

    

     rpm包內文件類型:

     rpm的元數據,如名稱,版本,依賴,描述等

     rpm程序文件

     rpm腳本:一般有如下腳本:

     1.preinstall:安裝之前;

     2.postinstall:安裝之后;

     3.preuinstall:卸載之前;

     4.postuninstall:卸載之后

     

 

   (1)安裝:

      語法格式:

          rpm -i[option] PACKAGE_FILE

      常用選項:

        -i:表示install安裝

        -v -vv:表示顯示安裝過程,后者顯示更加詳細;

        -h:以#號顯示進度條格式;

        –nodeps:忽略依賴關系

        –force:強制動作,注意安裝成功后可能不能運行;

        –test:測試安裝,作為測試檢查

        –nosignature:不檢查簽名就是來源合法性;

        –nodigest:不檢查包完整性;MD5頭;

     注意:根據Linux的哲學之一,每個程序只做好一件事,單一小程序組成完成復雜任務;這樣結果就導致每個程序的要想運行,有較強的依賴性,有時A程序依賴B,B又依賴C,這樣要想安裝A必須先安裝最底層依賴的C,如果強制或忽略依賴關系,將會導致程序無法運行,安裝也沒有意義;

   

    (2)升級:

       語法格式:

          rpm -U|F[optIon] PACAGE_FILE

       常用選項:

         -U:表示不管軟件事先是否存在都要升級,存在就升級,不存在就安裝;

         -F:表示軟件軟件存在就升級,如何不存在,就放棄升級;

         –oldpackage:降級,如果升級之后發現有Bug或者兼容性問題,可以使用此選項回滾到升級前的版本;

         –force:強制動作,注意安裝成功后可能不能運行;

         –replacepkgs:注意不能替換配置文件;

       注意

         (1)不要對kernel做升級操作;支持多kernel并存;可以直接安裝;

         (2)修改過的配置升級不會覆蓋,升級同新文件,會重命名為file.rpmnew

        

     (3)卸載:

        語法格式:

           rpm -e[option] PACKAGE-NAME

        常用選項:

           -vh:顯示過程

           –nodeps:忽略依賴

           –noscripts:忽略腳本

           –allmatches:卸載所有匹配指定名稱的程序包,也就是說卸載軟件名稱中包含此名稱的所有包;

           –test:測試檢查卸載,不是真卸載

        注意:

          卸載會檢查依賴關系,如果卸載的軟件被其他程序依賴,請謹慎卸載,否則導致其依賴程序無法運行;

        

          

     (4)查詢:

        語法格式:

           rpm -q[option] [PACKAGE-NAME|PACKAGE_FILE]

        常用選項:

           -qa:查詢系統所有已安裝的程序包;

           -qf /path/to/file:查詢文件是由那個程序包生成;

           -ql:查詢程序生成的文件:

           -qi:查詢程序屬性信息;

           -qc:查詢程序配置文件;

           -qd:查詢程序提供的文檔

           -q –whatprovides CAPABILITY(功能):查詢這種CAPABILITY由那個程序提供;

           -q –whatrequires CAPABILITY:查詢這種CAPABILITY被哪些程序包依賴;

           -q –scripts:查詢程序包生成的腳本;

           -q –changelog:查詢軟件歷史

        查詢未安裝的軟件包信息,需要加-p選項跟上面的選項結合使用,后面的參數必須是PACKAGE_FILE;

           列如:

           -qpi:查詢指定PACKAGE_FILE的程序屬性信息;

           …

      (5)校驗:

        工作原理:校驗檢查的是軟件包來源的合法性和完整性,要想對它們校驗檢查,必須要有校驗機制,這種機制是根據簽名和加密實現的,通常發行版的光盤中會有一個包含所有軟件特征碼的文件,特征碼是根據軟件包特征提取的,通過單項加密實現的用來校驗軟件包的完整性,如果軟件包在獲取途中被修改,在系統中再次提取軟件包特征碼,跟系統已有的特征碼文件比對,不同則判斷被攥該,修改過的軟件包,根據相同的加密算法提取的特征肯定不同;來源合法性是根據簽名實現的;特征碼文件被稱為公鑰;校驗是由校驗程序完成的,默認rpm命令安裝時會調用;

      a.公鑰獲取:

        官方網站

        系統光盤

       系統配置文件中,這是系統在安裝時從安裝光盤復制進去的

       系統公鑰位置:/etc/pik/rpm-gpg/RPM-GPG-KEY-CentOS-7

      b.導入公鑰:

       rpm –import /path/to/pub.key

       

     校驗軟件:

      rpm -V PACKAGE-NAME:校驗安裝文件自安裝后是否被修改過,根據PMS記錄信息判斷;

      rpm -K PACKAGE_FILE:對指定未安裝的軟件包進行手工校驗;

    (6)RPM數據庫維護:

       默認數據庫目錄位置:/var/lib/rpm

       語法格式:

       rpm –initdb :初始化數據庫

       rpm –rebuilddb :重新構建

       –dbpath=/path/ :指定數據庫創建位置;

2.yum軟件包管理:

   前面的rpm安裝和卸載都需要檢查依賴關系,尤其是對依賴關系較多較復雜的軟件進行管理,是很難快速部署管理的;有沒有一種軟件管理工具能自自行解決依賴關系呢?yum就可以自動解決依賴關系,實現快速部署;

   Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器?;赗PM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包;

   yum工作原理:yum工作原理遵循C/S架構(客戶端/服務器);在客戶端僅需安裝yum客戶端軟件,并且配置yum配置文件指向的yum服務器端地址,為了故障冗余,可以指向多個yum源;在yum服務器端需要創建yum倉庫,作為放置所有rpm軟件的倉庫,同時創建一個名為repodata數據庫目錄文件,用不同的文件分門別類記錄倉庫內所有軟件包信息,通過網絡服務把資源地址發布出去;當客戶端yum請求軟件包時,同時會先把yum服務器端數據庫記錄文件請求下載到本地,經過校驗信息比對在判斷操作是否可行;yum源數據庫保存在yum客戶端的/var/cache/yum中,每次yum啟動都會通過校驗碼與yum服務器同步更新列表信息。

   (1)yum客戶端服務配置:

      a.首先檢查yum程序包是否安裝,安裝好yum工具才能使用yum工具;

      b.確保rpm程序和rpm的數據庫記錄是完整正常的;yum軟件管理依賴rpm管理工具;

      c.yum服務主配置文件配置選項說明:

      d.yum服務的主配置文件在系統/etc/yum.conf

      

[root@xia7 ~]# vim /etc/yum.conf

[main]                             ###倉庫ID,在系統中必須全局唯一

cachedir=/var/cache/yum/$basearch/$releasever  ###(yum緩存目錄,用來緩存請求的yum服務端數據,包括rpm軟件和yum源數據庫文件)

keepcache=0                          ###安裝完成后是否清空yum緩存,0表示不保留,1表示清空

debuglevel=2                         ###Debug 信息輸出等級,范圍為0-10,缺省為2

logfile=/var/log/yum.log                 ###yum日志文件位置,根據日志查詢過去的操作

exactarch=1             ### 是否安裝跟根系統架構平臺匹配的軟件,1表示只安裝匹配的,0表示兩者不檢查;                   

obsoletes=1             ### 是否允許更新老的RPM包,1表示允許,0表示進制更新老的軟件包

gpgcheck=1              ###安裝時驗檢查包的合法性和完整性,1表示開啟,0表示不檢查

plugins=1               ###是否如允許使用插件,1表示允許使用,0表示禁用插件

installonly_limit=5        ###允許保留多少個內核包

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_repor

t_page.php?category=yum

distroverpkg=centos-release

       

補充選項:

exclude=PACKAGE_NAME   ####屏蔽不想更新的軟件包,可以使用通配符,多個軟件包之間用空格分割

enabled=1          ###是否啟用當前的倉庫配置指向;1表示開啟,0表示禁用;

gpgkey=/file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 ###如果啟用了gpg校驗機制,需要指定校驗的文件位置;

baseurl=http://10.1.0.1/cobbler/ks_mirror/7/###yum倉庫的位置可以指定多個,當無法訪問時才選擇下一個;

cost=         ###開銷,默認是1000,開銷越大,優先使用級越低。

補充說明:baseurl=  有三種提供倉庫資源獲取方式:

       a:http://    #htt服務

       b:ftp://     #ftp服務

       c:file:///   本地yum源倉庫,或者是安裝光盤,注意事先需要掛載光盤;

  

       yum配置文件中的路徑變量意義:

  

       $releasever:當前系統的發行版本的主版本號;

       $arch:平臺

       $basearch:基礎平臺;

       YUM-$YUM9

       d.自定義配置yum配置文件:在/etc/yum.repos.d/YUM-NAMA.repo 注意必須是以“.repo”結尾的文件;

       

[root@xia7 ~]# vim /etc/yum.repos.d/local.repo 

[base]

name=centos 7

baseurl=http://10.1.0.1/cobbler/ks_mirror/7/  ###配置http服務提供的yum源倉庫

gpgcheck=1

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[local]

name=local centos 7

baseurl=file:///media/cdrom   ####配置本地光盤作為yum源倉庫

enabled=1

gpgcheck=0

  (2)yum服務端倉庫創建:

    a:首先檢查createrepo創建yum倉庫程序是否安裝;

    b:創建倉庫目錄,并且放置rpm軟件包在此目錄下;

    c:使用createrepo命令在倉庫目錄中創建倉庫生成yum數據庫目錄repodb

  

  (3)yum命令工具使用:

     語法格式:

       yum [option] [PACKAGE-NAME]…

     常用選項:

        查詢倉庫列表:

            repolist [all|deabled|disable]

        顯示軟件包:

            list [all|glob_expl]

            list [available |installed|updates]

        安裝程序包

            install package1 package2…

        升級程序包

            update package1 package2…

        檢查升級包:

            check-update

        卸載程序包:

            remove package1 package2…

        查詢程序包information

            info […]

        查看指定的某文件是由那個程序所提供;

            provides|whatprovides feature1

        清理本地緩存

            clean package |metadate |all

        構建緩存:

            makecache

        搜索關鍵字名軟件包

            search string1 string2…

        重新安裝程序包

            reinstall package1…

        降級程序包:

            downgrade package

        查看指定包所依賴的capability

            deplist package

        查詢安裝程序事物歷史;

             history info|list |stats 

        撤銷安裝

             history undo

        包組管理:

            grouplist :查詢包組

            groupinstall :安裝包組

            groupupdate  :升級包組

            groupinfo :查詢包組詳細信息

            groupremove :刪除包組

         

        其他選項

            –nogpgcheck :安裝不檢查包的來源性合法性和完整性;

            -y :自動回答交互信息為yes

            -q :靜默模式,不輸出打印信息

            –disablerepo=repoid :禁用指定的倉庫

            –enablerepo=repoid :啟用指定的倉庫

            –noplugins:禁用插件;

特別注意提醒:

    (1)很多對yum工具理解不是很深的初學者認為,有了yum工具,不必再使用學習RPM工具,這里需要特別注意的,首先yum只是RPM的前端管理工具,底層完全依賴RPM的數據庫,不是很清楚,可以多看幾     遍yum工作原理;

    (2)yum軟件管理操作機制對于突發故障解決不是很好,比如說安裝過程中系統宕機,這時根本沒辦法分析破損的依賴關系和從新部署;目前已經有解決工具DNF;在測試系統上使用,成熟后終將替代YUM;

   不過企業版目前還是yum工具;

原創文章,作者:xiashixiang,如若轉載,請注明出處:http://www.www58058.com/40840

(0)
xiashixiangxiashixiang
上一篇 2016-08-29
下一篇 2016-08-29

相關推薦

  • 【招聘需求】高級運維工程師/上海虹口區/待遇20k左右

    上海虹口區/待遇20k左右 有意向者發簡歷至@管家郵箱 郵件名是:[求職]Net-姓名-花名-工作年限 崗位職責:1、降低技術壁壘,建設運維工具、運維平臺,實現運維自動化,包括 運維自動化、配置管理中心等。2、具備前瞻性,帶領運維技術團隊完成業務支撐,負責定位、分析、跟蹤和相協調處理重大事故,使之對業務影響降至最低。3、技術支持、培訓、知識庫建設。4、運維接…

    Linux干貨 2015-03-12
  • PXE自動化安裝系統

    PXE自動化安裝的流程: 開機自檢 > 加載ROM中的bios代碼 > 檢查設備啟動順序,由于PXE自動安裝是基于網卡作引導的,所以,會選擇網卡 > 網卡中會有PXE的模塊,從dhcp服務器獲取ip地址 掩碼 網關 dns 重要的是tftp服務器的地址 從tftp服務器需要獲取的bootloder的文件名的信息 > 從tftp中加載p…

    Linux干貨 2015-08-11
  • Web服務,http協議。

    一·web   1。web是一種網站服務器,C/S架構,比較流行的Apache,Nginx,IIS。客戶能夠去服務器請求資        資源。   2.使用http協議,服務器html或者xml格式文件,客戶瀏覽器訪問資源(url)。   3.過程包括服務器套接字監聽直到和客戶套接字建立…

    Linux干貨 2015-07-04
  • Linux中賬號管理之權限管理(下)

    linux中的賬號管理我們在前面兩張已經介紹了一些用戶和組的相關概念,常用的配置文件,命令的使用?,F在我們來看看賬號管理中最傲嬌的部分就是我們的權限管理。 一、簡單介紹權限的概念 以install.log這個文件為例,查看install.log的元數據,從下圖可以看出,每個文件或者目錄都有它的所屬的主和所屬組,最左邊顯示不僅有它所屬類型,還有它的讀取寫入執行…

    Linux干貨 2016-08-08
  • openssl&openssh

    安全和加密 不加密流量的易受攻擊性       密碼/數據嗅探       數據操作       驗證操作       相當于郵寄明信片 不安全的傳統協議       telnet、FTP、POP3等等;不安全…

    Linux干貨 2016-09-26
  • 基于Redis的開源分布式服務Codis

    Redis在豌豆莢的使用歷程——單實例==》多實例,業務代碼中做sharding==》單個Twemproxy==》多個Twemproxy==》Codis,豌豆莢自己開發的分布式Redis服務。在大規模的Redis使用過程中,他們發現Redis受限于多個方面:單機內存有限、帶寬壓力、單點問題、不能動態擴容以及磁盤損壞時的數據搶救。 Redis通常有3個使用途徑…

    Linux干貨 2015-02-25

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-29 09:42

    文章對yum工具的使用進行了詳細的介紹,通讀整篇文章后能學到很多東西,但文章在邏輯表達的組織上顯得略微混亂,如果能再優化下邏輯規劃會更讓人印象深刻

欧美性久久久久