RPM及YUM工具介紹及使用(上)

  • 寫在前面

  1. 常見的計算機硬件平臺大致可以為分:x86、x86_64、amd64、ppc、arm、aarch64。軟件平臺,在Linux界則是指不同的Linux發行版。

  2. Linux系統中的軟件(非源碼)由于都是在不同的硬件+軟件平臺開發編譯完成之后發布的,因此同一個軟件會區分硬件和軟件環境而有不同的軟件包。在安裝軟件時應該選擇與自己的硬件和軟件平臺一致的軟件包進行安裝。通常在軟件包的名稱中即可見到所針對的硬件、軟件平臺的描述。如openssh-6.6.1p1-22.el7.x86_64,則是針對x86_64位硬件下的rhel系的軟件包。

  3. Linux系統中的軟件,很多軟件彼此之間有依賴關系,其實Windows下的軟件也是如此,因此在安裝某軟件時,被它所依賴的軟件需要先行安裝,在卸載時也需要同樣小心軟件間的依賴關系,避免盲目卸載而對其它軟件造成損壞。

  4. Linux系統中的軟件安裝及管理方式在不同的Linux發行版中的方式是不一樣的。目前比較主流的方式按照發行版的不同可以分為兩類:

  • dpkg
    這種方式主要適用于Debian系的Linux發行版使用,包括B2D和Ubuntu都使用這種方式。dpkg這種方式所使用的操作指令為dpkg。

  • rpm
    這種方式是由著名的Linux發行廠商Red Hat開發出來的,后來被很多Linux發行版所采用,如Fedora,CentOS,SuSE等。rpm這種方式所使用的操作指令為rpm

    這兩種方式的共同點就是,其所使用的軟件包是已經經過編譯的了,不需要我們手動在去進行編譯操作。

  • 軟件間的依賴關系
    在這些已經編譯好的軟件包中包含了記錄依賴關系等信息。當我們在Linux系統中安裝這些軟件包時,RPM程序會根據這一信息去查找系統中是否已安裝相應軟件,如果發現依賴軟件沒有安裝,安裝會失敗,也可以使用特定安裝選項--nodeps忽略依賴關系,然后將軟件包安裝上去,但非常不建議這么使用,除非明確知道所忽略的內容,對軟件的使用毫無影響。
    上文提到了RPM包會查找系統已安裝了哪些RPM包的軟件,這一查找過程依賴于RPM數據庫,在CentOS系統中這一數據庫位于/var/lib/rpm目錄中,它非常重要,記錄了系統上所有通過rpm方式安裝的軟件包信息。在對系統已安裝的rpm軟件進行安裝、升級、查詢、卸載操作時都依賴于這個數據庫。
    大致總結一下,使用rpm包安裝軟件,需要注意以下兩點:

    • 安裝軟件包的環境需要與該軟件包編譯時的環境一致。

    • 需要解決好軟件包的依賴關系。

  • SRPM包與RPM包

    • RPM包是指已經針對特定硬件和軟件平臺進行了編譯的包,可以拿到與之匹配的環境中直接進行安裝。其文件名一般形如:openssh-6.6.1p1-22.el7.x86_64。

    • SRPM包實際提供的是軟件源碼,包含configure和makefile,但它也同時包含了RPM軟件包所能夠提供的,如依賴關系說明以及所有RPM包能夠提供的信息。要通過這種包來安軟件,首先需要利用rpm工具進行按需編譯成最終的RPM包以后,然后使用RPM工具將軟件安裝到系統中。其文件名一般形如:openssh-6.4p1-8.el7.src.rpm,名稱中有src字樣。

RPM工具的使用

再嘮叨一次RPM工具的作用:可以用來對rpm軟件包進行安裝、升級、卸載、查詢和檢驗,以及RPM數據庫的維護。以下逐個講解其常用的用法。

  1. 安裝
    指令:rpm {-i|--install} [install-options] PACKAGE_FILE ...
    指令選項含義說明:
    -i或者--install 表示安裝后面跟的rpm軟件包,但如果只使用-i選項無法看到安裝的過程及安裝進程,要顯示安裝過程及進度將-v-h選項一起使用。
    install-options常用的有:
    --test 測試這一rpm包是否可以被安裝到系統中,而不會執行真正的安裝操作。
    --replacepkgs 對已經安裝過的軟件進行重新安裝,修改過的配置文件不會被覆蓋。
    --nosignature 在安裝過程中不進行包簽名信息和來源合法性驗證。
    --nodigest 在安裝過程中不檢查包的完整性。
    示例:
    rpm -ivh openssh-server-6.6.1p1-22.el7.x86_64
    不常用的install-options選項:
    --justdb 由于RPM數據庫產生錯誤或者損壞而查詢不到已安裝的RPM軟件包信息時,可以使用這一選項來更新其在RPM數據庫中的信息。
    --prefix 后面跟上某一路徑,可以將這一RPM軟件包安裝到這個路徑中。
    --nodeps 忽略軟件包之間的依賴關系。
    --force 強制安裝,它會忽略依賴關系,以及文件的沖突情況。
    PACKAGE_FILE 指的是RPM軟件包的完整名稱及URL,軟件包即在當前目錄時直接使用RPM包名稱即可??梢酝瑫r指定多個RPM包,即同時安裝這些RPM包。

  2. 升級
    指令:rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...或者
    rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
    指令選項含義說明:
    -U 當系統中沒有老版本時會安裝后面的RPM包,有則進行升級。
    -F 只有系統中有老版本時才會執行安裝操作。
    --force 強制升級,不常用。
    --oldpackages 進行降級操作。
    注意:

    • 不要對Linux內核進行升級操作,Linux支持多內核共存,直接安裝新版的內核即可。

    • 如果某軟件包安裝以后其配置文件被修改過,升級時新版本的軟件包不會覆蓋原配置文件,會將新的配置文件以FILENAME.rpmnew的方式提供。

  3. 卸載
    指令:rpm {-e|--erase} [--allmatches] [--nodeps] [--test] PACKAGE_NAME ...
    指令選項含義說明:
    -e 表示卸載后面所跟的RPM包名,而非RPM包文件名,。
    --allmatches 表示卸載所有匹配指定名稱軟件的所有版本。
    --nodeps 表示不卸載與此軟件有依賴關系的軟件。
    --test 表示模擬一次卸載的過程而不真正執行卸載操作。
    卸載操作需要注意,對于存在依賴關系的軟件進行卸載時,要從上往下卸載,不要直接將被依賴的軟件包先卸載。

  4. 查詢
    指令:rpm {-q|--query} [select-options] [query-options]
    指令選項含義說明:
    -q 單獨使用表示查詢后面所跟軟件包是否安裝,常結合select-options或query-options一起使用。
    常用的select-options:
    -a 查詢系統中所有已安裝的RPM軟件包名稱。
    -f 查詢后面所跟的文件是由哪個軟件安裝后產生。
    -p 對沒有安裝到系統中的RPM軟件包內的信息進行查詢。
    --whatprovides CAPABILITY 查詢指定的CAPABILITY是由哪個程序提供。
    --whatrequires CAPABILTY 查詢指定的CAPABILTY被哪個包所依賴。
    常用的query-options:
    --changelog 查詢所指定的RPM包中所包含的chagelog文件的內容。
    -c 列出所指定的RPM包提供的配置文件。
    -d 列出所指定的RPM包提供的man手冊及share文檔。
    -i 列出所指定的RPM包的詳細說明信息:版本,支持的架構,開發商、發布時間,安裝時間和說明等。
    -l 列出所指定的RPM包安裝后生成的所有文件和目錄。
    --provides 列出指定的RPM包所能夠提供的CAPABILTY,安裝或者沒有安裝都可。
    -R 列出指定RPM包的依賴關系。
    --scripts 查詢指定的程序包自帶腳本的內容。

  5. 校驗
    指令:rpm {-V|--verify} [select-options] [verify-options]
    常用選項及含義:
    -V 后面跟上軟件名稱,如果該軟件所包含的文件被更改過,才會被列出來。
    -Va 列出系統上所有可能被更改過的軟件相關文件。
    -Vp 后面跟RPM包的名稱,查詢這個包中可能被更改過的文件 。
    -Vf 查詢某軟件相關文件是否被更改過。
    對于驗證軟件包的來源合法性,需要借助數字簽名實現。使用rpm-import指令在系統中導入RPM包制作者的公鑰,然后可以使用rpm -k PACKAGE_FILE進行驗證,或者在安裝時rpm工具默認會自動進行驗證。

  6. RPM數據庫重建
    指令:rpm {--initdb|--rebuilddb}
    當RPM數據庫出現損壞時,可以使用--rebuilddb選項將數據庫重建;如果這個數據庫不存在,可以使用--initdb 重新創建一個數據庫。

注意:

RPM包文件名

  • 當包文件位于當前執行指令的目錄時,直接使用包名,如rpm -ivh a2ps-4.14-23.el7.i686.rpm

  • 當包文件位于其它路徑,然后跟上包文件名,如rpm -ivh /media/cdrom/Packages/a2ps-4.14-23.el7.i686.rpm。

  • 當包文件 位于網絡位置時,可以寫:rpm -ivh http://web.site.name/path/a2ps-4.14-23.el7.i686.rpm

RPM工具小結

  • 優點

    • 一般不用手動人工編譯,安裝難度低于源碼安裝方式。

    • 安裝之前會進行相關屬性,如硬盤容量、系統版本等檢查,避免軟件被錯誤安裝。

    • 采用RPM數據庫記錄系統所有已安裝軟件的信息,方便軟件包的管理。

  • 不足

    • 不能夠自動解決軟件包之間的依賴關系,對于依賴關系復雜的軟件,其安裝過程還是較繁瑣。

    為了解決這一不足,yum工具誕生了,yum工具的介紹及使用見下篇。

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

(0)
N24_lantianN24_lantian
上一篇 2016-12-26
下一篇 2016-12-26

相關推薦

  • 0809vim編輯器作業

    1、如何設置tab縮進為4個字符? :set tabstop=4 首先在命令擴展模式下列出所以set設置的相關選項set all  找到一個跟tab相關的選項,上網查了下意思,tabstop表示的意思就是制表為,他的默認值設置的為8,我們目的是4,那么在命令擴展模式下設置:set tabstop=4就OK了 2、復制/etc/rc.d/init.d…

    Linux干貨 2016-08-09
  • 第四周學習總結

    寫在最前 忙碌的一周又過去了,通過日夜兼程的追趕,也算基本上趕上了大部隊的步伐。本周將繼續對上一周的內容進行回顧加深,以達到對用戶更加熟悉的管理,并講講三劍客中的老三。 知識詳解 上一周我們說到了用戶的管理,其中有像useradd、usermod、groupadd、passwd和userdel等非常重要的命令,每個用戶都有自己特定的角色,在系統上完成不同的功…

    2017-12-24
  • sudo——讓普通用戶更靈活

    sudo命令 1、sudo能夠授權指定用戶在指定主機上運行某些命令。如果未授權用戶嘗試使用sudo ,會提示聯系管理員 2、sudo可以提供日志,記錄每個用戶使用sudo 操作 3、sudo為系統管理員提供配置文件,允許系統管理員集中地管理用戶的使用權限和使用的主機 4、sudo 使用時間戳文件來完成類似“檢票”的 系統,默認存活期為5 分鐘的 “入場券” …

    Linux干貨 2016-09-25
  • 日志管理

    rsyslogd的相關介紹,journalctl的相關介紹和日志的轉儲

    2018-02-05
  • centos7從最小化安裝到圖形界面

    man /etc/inittab
    systemctl get-default
    sytemctl set-default graphical.target|multi-user.target
    yum install $a -y

    2017-12-09
  • 第二周作業

    Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關實例演示 理論上,linux一切皆文件,對于linux的管理命令均算是文件管理命令。 Linux文件類型常見的有:常規文件、目錄文件、塊設備文件、字符設備文件、符號鏈接文件、命名管道、套接字文件等。 -:常規文件 [root@iZ25c28fe7fZ ~]# ls -lh checkmount.s…

    Linux干貨 2017-09-25
欧美性久久久久