軟件安裝與管理–rpm、yum

一、rpm包管理器

    1、介紹rpm

       在linux系統中,服務是要通過程序來提供的,通過調用API接口編寫好之后的源碼包文件對于普通用戶來說,安裝起來較為繁瑣。于是人們將源碼在編譯安裝的環境下制作了更加高級的rpm包,它的最大特點是避免了對原軟件包的編譯安裝,以更加簡便的安裝方式提供給用戶??梢允褂胷pm(RedhatPackage Manager)管理器來進行安裝.

       rpm包格式

      wKiom1e4cKvT6CJrAABfNWYck44825.jpg

    2、rpm包管理器

        <1>安裝

           rpm {-i|–install} [install-options] PACKAGE_FILE …

           rpm -i FILE..

             -i:表示安裝        
             -v:輸出詳細過程
             -h:以進度條的方式顯示安裝過程

           常用選項

             --test:測試安裝,不進行實際安裝
             --nodeps:忽略依賴關系安裝
             --replacepkgs:重新安裝
             --force:強制安裝

        <2>升級            

           rpm {-U|–upgrade} [install-options] PACKAGE_FILE …

           rpm {-F|–freshen} [install-options] PACKAGE_FILE …

           rpm -U FILE..

             -U:安裝或者升級
             -F:僅升級
             -v:輸出詳細過程
             -h:以進度條的方式顯示安裝過程

           常用選項

             --oldpackage:降級成舊版本
             --force:強制升級到新版本

        <3>卸載           

           rpm {-e|–erase} [–allmatches] [–nodeps] [–test] PACKAGE_NAME …

                     rpm -e FILE..

                     常用選項

             -allmatches:卸載所有匹配指定程序包名稱的程序包的各版本
             --nodeps:忽略依賴關系卸載程序包
             --test:測試卸載程序包

        <4>查詢

           rpm {-q|–query} [select-options] [query-options] [FILE..]                

              -q file.rpm:查詢指定的rpm包是否安裝

           [select-options]

             -p:查詢未安裝的包的信息
             -a,--all:查詢已安裝的所有程序包
             -f FILE:查詢指定的文件由哪個程序包安裝生成
             --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供
             --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴

           [query-options]

             -c: 查詢程序的配置文件
             -d: 查詢程序的文檔
             -i: 查詢程序的詳細信息
             -l: 查看指定的程序包安裝后生成的所有文件;
             --scripts:程序包自帶的腳本片斷
             -R: 查詢指定的程序包所依賴的CAPABILITY;
             --provides: 列出指定程序包所提供的CAPABILITY;

*這里注釋一下cpio的特殊用法

示例:如果刪除了一個rpm包的程序文件,而又不想重新安裝時還原原有的配置文件,可以選擇只安裝rpm包中的程序文件。

步驟1、查看rpm安裝包的文件列表

[root@centos6 Packages]# rpm2cpio tree-1.5.3-3.el6.x86_64.rpm | cpio -t
./usr/bin/tree
./usr/share/doc/tree-1.5.3
./usr/share/doc/tree-1.5.3/LICENSE
./usr/share/doc/tree-1.5.3/README
./usr/share/man/man1/tree.1.gz
132 blocks

 步驟2、解壓包內文件

[root@centos6 ~]# rpm2cpio tree-1.5.3-3.el6.x86_64.rpm | cpio -id
132 blocks

步驟3、移動程序文件

[root@centos6 ~]# cp usr/bin/tree /usr/bin

        <5>包校驗

           rpm {-V|–verify} [select-options] FILE..

                      注:[select-options]與上不同,不予列出

                      下面介紹倆個常用的檢查機制

           合法性校驗:rpm –import Public key

[root@localhost ~]#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@localhost ~]#rpm -ivh zsh-5.0.2-14.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-14.el7                 ################################# [100%]

                 安裝過程不提示警告

           完整性校驗rpm -K file.rpm

[root@localhost ~]#echo ' ' > zsh-5.0.2-14.el7.x86_64.rpm 
[root@localhost ~]#rpm -K zsh-5.0.2-14.el7.x86_64.rpm 
error: zsh-5.0.2-14.el7.x86_64.rpm: not an rpm package

                 檢查出現錯誤          

        <6>數據庫維護

           系統上的rpm包依靠一個數據庫(var/lib/rpm/)來維護,一旦rpm數據庫刪除,系統上關于包的任何操作都將無法進行,因為程序包的操作都是由數據庫來維護的。

           rpm –initdb: 創建數據庫

           rpm –rebuilddb:創建數據庫索引

[root@localhost /var/lib/rpm]#rm -rf *
[root@localhost /var/lib/rpm]#rpm -q bash
package bash is not installed
[root@localhost /var/lib/rpm]#rpm --initdb
[root@localhost /var/lib/rpm]#ls
Basenames     __db.001  __db.003  Group       Name          Packages     Requirename  Sigmd5
Conflictname  __db.002  Dirnames  Installtid  Obsoletename  Providename  Sha1header   Triggername
[root@localhost /var/lib/rpm]#rpm -q bash
package bash is not installed

 上面例子證明:即使使用rpm –initdb恢復數據庫,也是無濟于事,因為其中并沒有rpm包的數據信息。友情提示:危險操作,切勿模仿 

    3、yum機制及其使用

二、yum包管理器

    1、介紹yum

       前面提到rpm的安裝,但是因為庫調用的原因,各個軟件包之間會存在依賴條件,為了解決這個問題,出現了yum(Yellow dog Updter, Modified),作為rpm的前端程序,可自動處理依賴性關系(即當一個包依賴到另一個包時,自動安裝對應的包)  

    2、yum工作原理          

       yum的工作模式分為倆部分:yum服務器端,client的yum工具。

       yum服務器端存放著全部rpm包,以及特定的數據庫文件來索引rpm包和記錄rpm包之間的依賴關系。

       client端每次調用yum命令的時候,通過解析/etc/yum.repos.d配置文件中的URL找到yum服務器。并且yum會定期去更新yum服務器上的rpm包的元數據和依賴關系信息到本地(/var/cache/yum/),每次使用yum操作rpm包時,根據數據庫里信息確定安裝包的名字,版本號,所需要的依賴包等,然后再去yum服務器實現操作。

       工作原理示例圖

  wKioL1e4fdjjl8ceAAB0D-vqvb8816.jpg

    3、配置yum源

      yum源配置格式      

            [repositoryID]

            name=Some name for this repository

            baseurl=url://path/to/repository/

            enabled={1|0}

            gpgcheck={1|0}

            gpgkey=URL 

       URL書寫格式     

            ftp://

            http://

            file:///           

       <1>本地

         ###新建cdrom目錄
         [root@localhost ~]#mkdir /media/cdrom
         ####掛載光盤文件到目錄下
         [root@localhost ~]#mount /dev/cdrom /media/cdrom/
         mount: /dev/sr0 is write-protected, mounting read-only
         ####包文件就在Packages中,repodata父目錄即為yum源目錄
         [root@localhost ~]#cd /media/cdrom/
         [root@localhost /media/cdrom]#ls
         CentOS_BuildTag  EULA  images   LiveOS   repodata  RPM-GPG-KEY-CentOS-Testing-7
         EFI   GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
         ####新建yum配置文件
         [root@localhost /media/cdrom]#cd /etc/yum.repos.d/
         [root@localhost /etc/yum.repos.d]#ls
         CentOS-Base.repo.bak  CentOS-Debuginfo.repo  CentOS-Media.repo CentOS-Vault.repo
         CentOS-Base.repo  CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
         [root@localhost /etc/yum.repos.d]#vim base.repo  ###注意:要先移除原來的repo文件
         [base]
         name=Local yum repository
         baseurl=file:///media/cdrom
         gpgcheck=1              ####此處如果gpgcheck=0的話,可以不寫gpgkey 
         enabled=1 
         gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

       <2>遠端Server

          如果虛擬機支持聯網的話,可以直接使用網絡上的yum源

         ####直接在/etc/yum.repo下建立配置文件即可
         [root@localhost /etc/yum.repos.d]#vim base2.repo
         ####此處給出示例 
         [base2]
         name=Server yum repository
         baseurl=http://10.1.0.1/cobbler/ks_mirror/7/
         gpgcheck=1
         enabled=1
         gpgkey=http://10.1.0.1/cobbler/ks_mirror/7/RPM-GPG-KEY-CentOS-7

    4、yum命令

      yum [options] [command] [package …]

       <1>顯示倉庫列表

          yum repolist

       <2>顯示程序包

          yum list {available|installed|updates} 

  •    <3>安裝升級

  •       yum install package…

  •       yum apdate package…

  •       yum downgrade package..

  •    <4>查看包的詳細信息

  •       yum info package…

  •    <5>刪除程序包

  •       yum remove package…

  •    <6>構建緩存

  •       yum makecache

  •    <7>清理緩存

  •        yum clean [ metadata | all ]

  •    <8>搜索

  •       yum search Key_word

  •    <9>查看yum事務歷史

  •       yum history

  •       yum history undo # :可以撤銷某個事物歷史的所有安裝包,類同卸載

  •    <10>包組的查看

  •        yum gruplist 

  •    <11>包組的安裝

  •        yum groupinstall group… 

  •    <12>包組的升級

  •        yum groupupdate group..

  •    <13>包組的卸載

  •        yum groupremove group…

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

(1)
mfwingmfwing
上一篇 2016-08-22 09:30
下一篇 2016-08-22 09:30

相關推薦

  • 網絡基礎

    網絡小白一個,針對網絡的基礎知識無從下手,因此本文引用了鳥哥私房菜中的眾多概念性知識,在此謝過,本文主要從OSI七層協議,TCP協議和一些網絡中專業詞匯進行解析,并通過子網掩碼的劃分,網絡接口的配置、路由配置等實例來加深對網絡的理解。 一、OSI七層協議:     OSI七層協議的由來:   由于網絡鏈接過程…

    Linux干貨 2016-09-07
  • N22-第一周練習作業-冥界之王

    1.描述計算機系統的組成及功能硬件組成(輸入設備,輸出設備,存儲器,運算器,控制器) 輸入設備:鼠標,鍵盤,麥克,聲卡(輸入聲音),掃描儀,手寫板等輸出設備:顯示器,聲卡(輸出聲音),音箱,投影儀等存儲器:內存,硬盤,磁帶,CPU內部還可以分1,2,3級緩存運算器:主要完成對二進制數據的定點算術運算(加減乘除)、邏輯運算(與或非異或)以及移位操作。在某些CP…

    Linux干貨 2016-08-15
  • N25 第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 2、編輯/etc/group文件,添加組hadoop。 3、手動編輯/etc/passwd文件新增一行,添加用戶hadoop,其基本組ID為hadoop組的id號;其家目錄為/home/hadoop。 4、復制/etc/sk…

    Linux干貨 2017-01-04
  • 磁盤分區管理與文件系統的創建

    磁盤分區管理與文件系統的創建   不光是linux文件系統,所有的大結構,多數據湊到一塊的時候,單一的管理是沒有能力處理這樣龐大規模的存在的。所謂“君王不下縣”也就是這個道理。要系統的,規范的管理一個國家,存在著省、市這樣的層級結構。linux系統也是這樣,將整個系統劃分為若干個分區,實現不同功能,不同層級的規范管理,這就是創建磁盤分區的意義。既然…

    Linux干貨 2016-09-01
  • 馬哥教育網絡班21期+第2周課程練習

    一、Linux文件管理類命令     1、文件的復制、移動和刪除        A、cp  文件的復制          cp命令的用法:    &n…

    Linux干貨 2016-06-26
  • yum用法第一篇-簡介及常見用法使用總結

    一、簡介     yum( 全稱為:Yellow dog Updater, Modified),是紅帽(RedHat)家族(RedHat、Fedora、CentOS)中的前端shell的軟件包管理器,主要基于對RPM包的管理,能夠根據配置文件(類似于svn資源庫配置文件)從指定的服務器自動下載RPM包進行安裝,其最大的優勢就是可…

    Linux干貨 2015-09-22
欧美性久久久久