軟件安裝與管理–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
下一篇 2016-08-22

相關推薦

  • Linux發展史

    一、從 Unix 到 Linux 這一段歷史         早在 Linux 出現之前的二十年 ( 大約在 1970 年代 , 就有一個相當穩定而成熟的操作系統存在了!那就是 Linux 的老大哥『 Unix 』是也!怎么這么說呢?!他們這兩個家伙有什么關系呀?這里就給他說一說啰!眾所皆知的,Linux 的核心是由 …

    Linux干貨 2016-10-14
  • 優云運維安全專家實踐:使用802.1X+FreeRadius+LDAP實現網絡準入方案

    本文,將為大家分享運維前沿在網絡準入管理方面的實踐經驗。 網絡準入業界常用方案 為了保證網絡資源的安全,拒絕非法入侵,現代IT網絡總需要一定的網絡準入方案,而目前業界常用的網絡準入方案有: 而今天給大家介紹的802.1X+FreeRadius+LDAP網絡準入方案,則避免了上述方案中的缺點,是一套低成本,控制能力強,符合行業標準的一套網絡準入認證體系。 什么…

    安全運維 2016-07-10
  • 0811:腳本練習

    系統信息獲取腳本 1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 [root@centos7 scripts]#cat systeminfo.sh  #!/usr/bin/bash  server_ip…

    Linux干貨 2016-08-22
  • 學習宣言

    好好學習,天天向上。

    Linux干貨 2016-10-24
  • Linux系統操作入門(命令格式|命令幫助|基礎命令)

    4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述。
    5、如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的。
    6、請羅列Linux發行版的基礎目錄名稱命名法則及功用規定

    2018-03-06
  • 配置基于mysql的虛擬用戶認證vsftp服務器

    1.安裝vsftp、mysql、epel_release(epel源,后面要安裝的pam_mysql認證模塊需要這個源)、pam_mysql 2.剛裝的mysql運行一下/usr/bin/mysql_secure_installation 3.建立數據庫vsftpd,建表user,     create database vsftpd; …

    Linux干貨 2016-06-22
欧美性久久久久