rpm包管理

一、什么是RPM

    RPM全稱為“RedHat Package Manager”,看名字就知道這是RedHat公司搞出來的,后來因為RPM發展的很好,逐漸成為了一種通用的標準,就更名為“RPM is Package Manager"。

    RPM最大的特點就是將軟件先編譯,并打包成為RPM機制的安裝包,包中包含了該軟件安裝時所必須依賴屬性軟件信息,如果這些被依賴的軟件已經安裝,則安裝包可順利安裝完成,否則軟件將會安裝失敗。

    RPM安裝時會將該軟件的信息寫入到RPM數據庫中,那么軟件的查詢、驗證、升級、卸載等操作都可以從數據中直接調用執行。

二、認識RPM包

    1、RPM包的命名格式

        name-version-release.OS.arch.rpm

        解釋:

            name:軟件名稱。

            version:major.minor

                major:主版本號;

                minor:次版本號;

            release:rpm自身的發行號,與程序源碼的發行號無關,僅用于標識對rpm包不同制作的修訂;同時,release還包含此包適用的OS。

            arch:適用于的硬件平臺;

                x86:i386,i486,i586,i686等;

                x86_64:支持64位CPU;

                noarch:依賴于虛擬機。

            例如:bash-4.2.3-3.centos5.x86_64.rpm

    2、分包機制

        對于一個功能比較多的軟件來說,而用戶可能并不會用戶其所有的功能,那么OS Vendor(系統發行商)在制作RPM包時只會用將他們認為用戶會經常用到的功能打包成為與源程序名一致的核心包,而將其它的功能再次的打包成為子包;比如:bash程序有20個功能,常用功能有8個,特殊功能A:3個,特殊功B:6個,二次開發相關功能:3個,那么其RPM的形式有可能是這樣的:

        核心包:

            bash-4.2.3-3.centos7.x86_64.rpm

        子包:

            bash-a-4.2.3-3.centos7.x86_64.rpm

            bash-b-4.2.3-3.centos7.x86_64.rpm

            bash-devel-4.2.3-3.centos7.x86_64.rpm

        如果需要用到子包中的功能的話,就需要把對應的子包進行安裝。

    3、獲取rpm包的途徑

1)發行的光盤式站點服務器

    鏡像:

        http://mirrors.163.com

        http://mirrors.sohu.com

2)項目的官網

    源代碼

    RPM包

3)很多第三方機構或個人制作并公開發布許多rpm包

http://rpmfind.net

http://rpm.phone.net

          可靠的途徑:EPEL

              Fedora-EPEL

    4、RPM包的合法性驗證

        RPM包的制作者使用單向加密提取原始數據的特征碼,而后使用自己的私鑰加密這段特征碼,附加在原始數據后面,如果想要正確的安裝RPM包必須使用可靠機制獲取到包制作者的公鑰;其公鑰的作用:

        1、使用制作者的公鑰解密加密的特征碼,能解密則意味著來源合法;

        2、使用與制作者同樣的意向加密算法提取原始數據的特征碼,并與解密出來的特征作比對,相同,由意味著完整性沒問題;

三、RPM包管理器的使用

    1、安裝程序包

        命令格式:rpm [option] package_name

            option:        

                -i:安裝;

                -v:顯示信息;

                -h:顯示進度;

                -vv:顯示詳細信息;

                -vvv:顯示更加詳細信息;

                組合選項:-ivh;

                –test:僅作測試,不真正執行安裝;

                     rpm -ivh –test 程序包

                –nodeps:忽略依賴關系;

                    忽略依賴關系可以將軟件安裝上,但可能無法運行;

                –replacepkgs:重新安裝;

                    如果原有配置文件作了修改,很有可能不執行替換,而是將應該由安裝生成的配置文件重命名為.rpmnew;

13.png

    2、卸載程序包

        命令格式:rpm [option] package_name

            option:

                -e:卸載;

                –nodeps:忽略依賴關系;

                    軟件能卸載,但依賴于此包的程序可能運行不正常;

            注意:如果包的配置文件發生改變,安裝后曾被改動過,卸載時,此文件不會卸載,而是被重命名并保留。

1.1.png

    3、升級程序包

        命令格式:rpm [option] package_file

            option:

                -Uvh:升級或安裝;

                -Fvh:純升級;

                     必須存在老版本,否則不安裝;

                –force:強制升級;

        注意:不應該對內核執行升級操作;而要安裝。系統允許多內核并存。

    4、查詢操作

        1)查詢某包是否已安裝

            rpm -q package_name

1.1.png

        2)查詢所有已經安裝的包

            rpm -qa

1.png        3)查詢包的描述信息

            rpm -qi package_name

3.png

        4)查詢某包安裝生成了哪些文件

            rpm -ql package_name

4.png

        5)查詢某包安裝生成了哪些配置文件

            rpm -qc package_name

5.png

        6)查詢某包安裝生成了哪些文檔(幫助文件)

            rpm -qd package_name

6.png        7)查詢程序包的相關腳本

            rpm -q –scripts package_name

            腳本有四類:

                preinstall:安裝前腳本

                postinstall:安裝后腳本

                preuninstall:卸載前腳本

                postuninstall:卸載后腳本

7.png

        8)查詢某文件是由哪個包安裝生成的

            rpm -qf /path/to/some_file

8.png

        9)對尚未安裝的包執行查詢

            rpm [option] /path/to/package_file

                option:

                    -qpi:包描述信息;

                    -qpl:包會生成哪些文件;

                    -qpc:包會生成哪些配置文件;

                    -qpd:包會生成哪些幫助文件;

1.1.png1.png

    5、RPM包的校驗

        校驗:檢查包安裝生成的文件屬性是否發生變化

            rpm -V package_name

1.png        httpd的內容沒有被修改的情況下rpm -V httpd命令不會有任何輸出結果,但上例中出現了一行奇怪的符號,說明httpd的屬性已經發生了變化,下面來我看一下前面的文字所代表的含義:

            S:文件的容量大小是否被改變;

            M:文件的類型或文件的屬性是否被改變;

            5:MD5指紋的內容已發生了變化;

            D:設備的主/次代碼已經改變;

            L:Link路徑已被改變;

            U:文件的所有者已被改變;

            G:文件的屬組已被改變;

            T:文件的創建時間被改變。

        文件名前還有個c,這一位代表不同的文件類型:

            c:配置文件;

            d:文檔;

            g:鬼文件;

            l:授權文件;

            r:自述文件。

        rpm包來源合法性及完整性檢驗:

            前提:在當前系統上導入包的制作者的公鑰

                rpm –import /path/to/key-file

                rpm -qa gpg-pubkey*     顯示所有已經導入的gpg格式的公鑰

                rpm -qi gpg-pubkey-NAME  顯示密鑰的詳細信息

            CentOS系統安裝好后,會將原廠的gpg公鑰存放在以下目錄中:

1.png

            導入這個公鑰:

2.png            查看已經導入的公鑰:3.png

            顯示公鑰的詳細信息:

4.png          檢查包

                手動檢查:

                    rpm -K /path/to/package_file

                    rpm –checksig /path/to/pachage_file             

                不檢查包完整性:

                     rpm -K –nodigest

                不檢查來源合法性:

                     rpm -K –nosignature

1.1.png

    6、RPM數據庫重建

            數據庫目錄:/var/lib/rpm

            數據庫重建:

                rpm –initdb 

                   初始化:如果事先沒有庫會新建一個;如果有,則不新建;

                rpm –rebuilddb 

                    重建:直接重建,覆蓋原有的數據庫。

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

(0)
petmasterpetmaster
上一篇 2015-05-11
下一篇 2015-05-11

相關推薦

  • MairaDB之基于openssl的主從復制

    一、配置openssl   1、   在master server(node0)上根CA的搭建(及生成自簽名證書) [root@node0 ~]# cd /etc/pki/CA/ [root@node0 CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048) Gen…

    2014-10-03
  • linux文件權限詳解

    基本命令 1.cut :?cat /etc/passwd | cut -d’:’ -f7| uniq -c| sort -nr 2.authconfig 修改加密方式 –passalgo=sha256 — update 3.scp 上傳文件 -r dir ip:path 傳目錄 file ip:path傳文件 …

    Linux干貨 2017-04-03
  • 第三周作業

    1、列出1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。[root@localhost ~]# who | cut -d ‘ ‘ -f1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。[root@localhost ~]# who | tail -1 | export &am…

    Linux干貨 2017-12-16
  • Linux 根文件系統層級結構

    一、Linux根文件系統層級結構圖 二、Linux根文件系統目錄說明

    Linux干貨 2016-09-26
  • N25-第三周作業

      alias NAME='COMMAND'           定義命令的別名—對當前用戶有效  un為解除別名 Which   查看命令別名 Whereis    查看程序的文檔和源碼路徑(-b &nbs…

    Linux干貨 2016-12-18
  • N25第二周作業

    1、Linux上的文件管理類命令都有哪些其常用的使用方法及其相關示例演示。 cp(copy) 復制,mv(move)移動或者更名,mkdir(創建目錄,-p可以同時創建父目錄),rm(刪除目錄,-r 可以遞歸操作,rmdir(刪除空目錄)刪除文件或者目錄,建議建立一個臨時回收站,否則誤刪或者短時間內還需要的文件),touch,file,stat, …

    Linux干貨 2016-12-25
欧美性久久久久