一點點RPM

1、軟件管理器簡介

         隨著Linux的不斷發展及越來越多的人投入到Linux大家庭中,軟件管理器的作用對于還無法熟練掌握源碼編譯安裝的人們還是顯得尤為重要,同時,由Linux開發商在為其編譯完成的軟件包在某種程度上要比在網絡上流傳的軟件包要安全的多;所以,掌握Linux常用的軟件管理器還是非常重要的;

         目前常見的軟件包管理器包括:RPMDPKG,簡單介紹如下(見鳥哥):

代表廠商

軟件管理機制

管理命令

在線升級

Red Hat/Suse

RPM

rpm

YUM(yum)

Debian/Ubuntu

DPKG

dpkg

APT(apt-get)

2、RPM簡介

    RPM(Redhat Package Manager)是由Red Hat公司所發展出來一種軟件包管理機制,在之前,由于軟件安裝需要依賴其他屬性的緣故,安裝的過程將會非常復雜而RPM則會大大簡化這一過程;

RPM會將軟件提前編譯并打包成RPM包的格式,同時通過打包好的軟件里的默認數據庫記錄下此軟件在安裝過程中所要求的依賴關系,在執行軟件安裝時,會先依照軟所記錄的數據查詢當前系統的環境是否滿足,如滿足,則執行安裝;如不滿足則不予以安裝;

但是,RPM包的缺點也是很多的:

1、軟件包的安裝環境已經在制作時提前決定好了,所以不同的廠商發布的RPM文件通常不會通用;

2、廠商提供的RPM包安裝時方便,安全性高,但通常版本較低,如果要體驗新特性,新版本,一般這種RPM包是不會滿足我們的需求的;

3、由于依賴關系的存在,RPM包的卸載升級也需要格外謹慎;最好是只卸載升級與其他軟件依賴關系不大的軟件包;

 

3、從程序組成說起

   軟件在編譯前,是一段源代碼,而在編譯后,會分割成一段段我們能夠更好理解的文件,基本如下:

二進制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/sbin, /usr/local/sbin,

庫文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64

配置文件:/etc, /etc/DIR, /usr/local/{etc,conf}

幫助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

    更簡單的說,我覺得rpm就是將這些文件按照自己需要打包在一起成為一個軟件包,而由于主觀需要或其他元素,內容并不會往往是我們所需求的;

4、看看格式

         centos 6.6的自帶的mysql為例:

1.png

       要補充的是,Linux當中,很多源碼包會因為功能被拆分為如下的多個包,仍然以httpd為例:

2.png

5、看看rpm包來源

   a.系統的發行光盤鏡像或官方站點(或站點鏡像服務器);

    掛載光盤:mount -r /dev/cdrom /media/cdrom

    官方站點,鏡像:

        mirrors.sohu.com

        mirrors.163.com

        mirrors.aliyun.com

    b.程序包的官方站點

    c.第三方組織:epel

    d.搜索引擎

        http://rpmfind.net

        http://rpm.pbone.net

        http://pkgs.org

建議:安裝之前要驗證其的來源合法性和包的完整性;

6、RPM管理命令

         歸根結底,在我們正確獲得所要的RPM包后,RPM包的管理使用就成為重中之重了,而RPM包管理通過rpm這個命令來完成,總結下常用選項如下:

a. 安裝篇:

rpm

Usagerpm {-i|–install} [install-options] Package_file…

安裝:

常用組合:

-ivh

-i, –install

安裝

-h

hash,#來表示安裝進度,一個#相當于2%

-v, -vv, -vvv

顯示安裝過程中的詳細信息;-vv,-vvv顯示更多信息;

–test

測試安裝,而僅報告依賴關系及沖突信息等;

–nodeps

忽略依賴關系

–replacepkgs

覆蓋安裝:重新安裝并覆蓋原有的文件,

–force

強制安裝

注意事項

程序包之間存在依賴關系,選用-nodeps時,安裝可能會成功,但未必能夠成功執行;選用-replacepkgs時,要注意配置文件;

b、升級篇

rpm

rpm   {-U|–upgrade} [install-options] PACKAGE_FILE… 升級或安裝

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

升級選項:

常用組合:

-Uvh

-Fvh

-U

升級或安裝

-F

升級

–oldpackage

降級到舊版本

同樣支持-h, -v ,-vv,-vvv,-force選項

注意事項

1. 一定不要對內核執行升級;Linux允許多內核共存,所以,可以直接安裝多個不同版本的內核

2.如果程序包的配置文件安裝后曾經被修改,升級時,新版本的配置文件不會覆蓋老版本的配置文件,而是把新版本的配置文件重命名(加后綴.rpmnew)后保存;

c、卸載篇

rpm

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

卸載選項:

-e

卸載

–allmatches

如果一個程序包同時安裝多個版本,則卸載所有  

–test

測試寫在:dry-run模式

同樣支持-h, -v ,-vv,-vvv,-force,-nodeps選項

注意事項

如果程序包的配置文件安裝后曾被修改,卸載時,此文件通常不會被刪除,而是被重命令(加后綴.rpmsave)后留存;

d、查詢篇

rpm

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

常用選項:

yeah,所有的一切都以加上q為前提;

-q

查詢某包或某些包是否安裝

-qa

查詢已安裝的所有包

-qf

查詢某文件是有哪個安裝包安裝生成

-qi

查詢某包的簡要說明信息

-qip

查詢某未安裝的包文件的相關信息

-ql

查詢某包安裝生成的文件列表

-qc

查詢某包安裝完成后生成的所有配置文件

-qd

查詢某包安裝完成后的所有幫助文件

-q –changelog

查詢某包制作時隨版本變化的changelog信息

-q –provides

查詢某包提供的capabilities

-q –requires

查詢某包依賴的capabilities

-q –scripts

查詢某包安裝或卸載時的執行腳本

注意事項

腳本有四類:

preinstall:安裝過程開始前執行的腳本;postinstall:安裝過程完成后執行的腳本;preuninstall:卸載開始前執行的腳本;postuninstall:卸載過程完成后執行的腳本

e、校驗篇查詢包安裝之后生成的文件是否發生了改變

         查詢方式:

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

         常見用法:

                   rpm -V PACKAGE_NAMES

S file Size differs       文件大小

M Mode differs (includes permissions and file type)  權限

5 digest (formerly MD5 sum) differs        md5校驗和

D Device major/minor number mismatch  主從設備號

L readLink(2) path mismatch  符號鏈接

U User ownership differs  屬主

G Group ownership differs  屬組

T mTime differs  最后修改時間

P caPabilities differ

注:

    1、文件屬性正常,則會顯示點’.’,否則會顯示其代表字符,如:

    修改了httpd配置文件后:

    [root@AZtest ~]# rpm -V httpd

    S.5….T.  c /etc/httpd/conf/httpd.conf

    2RPM校驗也會用到-a(所有已安裝包)-f(指定文件),-p(指定RPM),–noscripts–nodeps等選項;

                  

f、程序包的合法性驗證:

   來源合法:由信任的制作者提供

       依賴于:制作者的數字簽名,簽名是作者使用自己的私鑰加密程序包特征碼進行的;

   內容合法:包未被2次修改,完整性校驗成功;

       依賴于:制作者提供的程序包特征碼:

   驗證方式:安裝者用同樣的特征碼提取算法提取程序包的特征碼,并與原作者提供的相比較;

   驗證其光盤中程序包的來源及完整性:

       rpm –import /path/to/RPM-GPG-KEY-FILE

驗正:rpm {-K|–checksig} PACKAGE_FILE

             –nosignature:不檢查來源合法性

             –nodigest:不檢查完整性

f、重建數據庫篇

         rpm管理器數據庫:/var/lib/rpm,如果某些操作導致RPM數據庫/var/lib/rpm內的文件損壞,可使用如下命令

rpm

rpm   {–initdb|–rebuilddb} [-v] [–dbpath DIRECTORY] [–root DIRECTORY]

重建數據庫:

–initab

初始化數據庫,即數據庫完全不存時,可新建之

–rebuilddb

無論當前數據存在與否,都會直接重建此庫

注意事項

     最后說一句,為了強迫自己記憶和手敲,不記錄例子了。。。

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

(0)
AZAZ
上一篇 2015-12-06
下一篇 2015-12-06

相關推薦

  • 從“黑掉Github”學Web安全開發

    Egor Homakov(Twitter: @homakov 個人網站: EgorHomakov.com)是一個Web安全的布道士,他這兩天把github給黑了,并給github報了5個安全方面的bug,他在他的這篇blog——《How I hacked Github again》(墻)說明了這5個安全bug以及他把github…

    Linux干貨 2016-08-15
  • shell編程、查找命令、壓縮文件工具

    shell編程、查找命令、壓縮文件工具  shell編程 一、條件測試  1、判斷某需求是否滿足,需要由測試機制來實現。    測試命令:  ·test Expression  ·[ EXPRESSION ]  ·[[ EXPRESSION ]]   &nbs…

    Linux干貨 2016-08-15
  • SDCC 2017互聯網運維開發實戰峰會上海站

    3月17日-19日,由CSDN重磅打造的互聯網運維開發實戰峰會、數據庫核心技術與應用實戰峰會和互聯網應用 架構實戰峰會將在上海舉行。 作為SDCC 2017(中國軟件開發者大會)系列技術峰會的一部分,秉承干貨實料(案例)的內容原則。 這三場峰會將邀請業內頂尖的架構師和技術專家,共同探討運維工具研發與實踐、運維自動化系統的構建、大數據與運維…

    Linux干貨 2017-02-11
  • vim編輯器基本應用

    vi:Visual  Tnterface文本編輯器 vim:vi Improved vi的加強版 文本編輯種類:   行編輯器:sed   全屏編輯器:nano,vi,vim 其他編輯器::   gedit:一個簡單的圖形編輯器   gvim:一個vim編輯器的圖形版本 vim使用格式 +# :打開文件后,直…

    Linux干貨 2016-08-11
  • N22-第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。     首先用who命令查看所有已登錄用戶信息,然后用cut命令取出用戶名,再用sort -u對用戶名排序并刪除重復的用戶名      2、取出最后登錄到當前系統的用戶的相關信息。  &n…

    Linux干貨 2016-09-05
  • 計算機及Linux系統基礎簡介

    一、計算機的組成及其功能 計算機由運算器,控制器,存儲器,輸入裝置和輸出裝置五大部件組成計算機,每一部件分別按要求執行特定的基本功能。 運算器或稱算術邏輯單元(Arithmetical and Logical Unit) 運算器的主要功能是對數據進行各種運算。這些運算除了常規的加、減、乘、除等基本的算術運算之外,還包括能進行“邏輯判斷”的邏輯處理能力,即“與…

    Linux干貨 2017-07-02

評論列表(1條)

  • stanley
    stanley 2015-12-06 20:27

    總結的很不錯,獻有人總結的如此詳細,已置頂

欧美性久久久久