linux之程序包管理器(rpm)

linux下的程序包可支持多種工具編寫的,如C、C++、PERL等。

但是這種高級語言編寫出來的代碼是我們人能看懂的,但是計算機是看不懂的,那麼計算機怎麼執行,怎麼了解人要它做什麼呢?

這就需要我們做一些轉換了,把人能讀懂的語言讓機器也能識別,這個過程就是由編譯器完成的,通常是吧代碼語言轉換成二進制語言。

過程:預處理、編譯、彙編、鏈接

一個程序的運行大部分時間是離不開的。

什麼是庫呢?庫也是一種程序,只不過與其他程序不同,庫沒有執行入口,不能獨立運行,只能被其他獨立運行的程序調用的時候才能執行。說白了庫就是爲其他程序服務的。)

庫的分類:開發庫、運行庫

可想而知開發庫是程序猿用的,而用戶只用到了運行庫。

那麼我們來了解一下源代碼吧。

API:一種源代碼,能夠兼容任何環境。(就是說不關你事那種硬件平臺都可以)

ABI:一種源代碼,但與API不同,ABI嚴重依賴於硬件環境。(如果是不同的設備則會出現無法運行的狀況,就好比電腦格式的軟件無法在手機上運行一樣)

所以:如果要移植一款軟件時最好是API。

注:有些程序是不依賴於硬件運行的,依賴於虛擬機運行。(可跨平臺運行)



那麼接下來說說程序包的組成格式都用哪些吧!

程序包組成格式:

              二進制程序:存放位置(/bin、/sbin、/uer/bin、/uer/local/bin、/uer/local/sbin)

              庫文件(開發庫、運行庫):存放位置(/lib64我們以64位系統爲例、/uer/lib64、/uer/local/lib64)

              配置文件:存放位置(/etc、/uer/local/APP/etc或conf)

              幫助文件:存放位置(/uer/share/man、/uer/local/share/man、/uer/local/APP/man)




切入正題,程序包管理器主要分爲:數據庫和程序組成清單文件

數據庫:程序名及版本、依賴關係

程序組成清單:文件清單、裝卸載時運行的腳本



程序包管理器的功能:將編譯好的程序打包成一個文件或有限的幾個文件,可用於實現安裝、卸載、升級、查詢、校驗、數據庫管理等功能。

值得注意的是,程序間的依賴關係繁雜,由衆多單一的小程序組合完成複雜任務。(和庫的調用有關,程序運行時需要調用庫,有些程序則需要調用其他程序的庫,所以就形成了依賴關係)




【如何使用RPM包】

 RPM包命名格式:名稱-版本號-relase號.平臺.rpm(relase:源代碼包製作成rpm的修訂號)

                  版本號包括主版本號、次版本號、修訂號


【獲取rpm的途徑】

1、發行商的光盤或站點服務器

2、鏡像:http://mirrors.163.com

         http://mirrors.sohu.com

3、項目官網:源代碼、rpm包

4、第三方機構或個人製作並公佈的rpm包

   http://rpmfind.net

   http://rpm.pbone.net


【rpm包的合法性驗證】

包製作者製作完成之後會附加數字簽名於包上;包的製作者使用單向加密提取原始數據的特徵碼,而後                                           使用自己的私鑰加密這段特性碼,附加原始數據後面。

驗正過程:

         前提:必須有可靠機制獲取到包製作者的公鑰;

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

       2、使用與製作者同樣的意向加密算法提取原始數據的特徵碼,並與解密出來的特徵作                   比對,相同,則意味着完整性沒問題;


【如何安裝rpm包】

命令語法格式:rpm  選項  文件包路徑

             其中的選項有:-i  安裝

                           -v  顯示詳細過程

                           -h  使用#號顯示安裝進度

                           ivh組合  安裝並顯示詳細過程和進度

                           --tost  測試(不真正安裝,僅是測試是否能夠安裝)

                           --nodeps  安裝時忽略依賴關係

例如我們安裝一下gcc:

wKioL1PU-TbCvwYZAAAk3ylgNCU686.jpg


【如何卸載程序包】

語法使用格式:rpm  選項  包名(這裏的選項爲-e。意爲卸載)

例如,我們卸載剛纔安裝的gcc

wKioL1PU-c2DmHVFAAA0naVSwIE886.jpg


注:如果包的配置文件被修改過,卸載時包的配置文件將被重命名並保存)


卸載時如果被其他包所依賴:1、將依賴於此包的所有包一併卸載

                          2、忽略依賴關係  後加--nodeps

【如何升級程序包】

命令適用語法:rpm  選項  包路徑

              升級或安裝使用的選項爲:-Uvh

              單純升級使用的選項爲:-Fvh

注:升級或版本衝突,使用--force選項強制升級

注:不應該對內核進行升級,內核只能安裝。linux系統允許多內核並存。


【rpm包的查詢操作】

 1、查詢某包是否安裝:rpm -q 包名

如:查詢gcc包是否安裝

wKioL1PU_NzQUONwAABLaQLJ1-g556.jpg


2、查詢所有已安裝的包:rpm -qa

如:

wKiom1PU_B2z10sXAAFGJVN9MWI453.jpg


3、查詢已安裝包的描述信息:rpm -qi 包名

如:查詢groff包的描述信息

wKioL1PU_dSDrohLAAG3J0h1cfY327.jpg


4、查詢已安裝包的生成文件:rpm -ql 包名

如:查詢groff的生成文件

wKioL1PU_kChLEUOAADfFGSKlJI481.jpg


查詢安裝生成的配置文件:rpm -qc 包名

查詢安裝生成的幫助文件:rpm -qd 包名

查詢安裝的相關腳本:rpm -q --scripts 包名

5、查詢某文件是有那個包安裝生成的:rpm -qf 文件名

6、查詢尚未安裝的包:rpm 選項  -p 路徑包文件

                 選項有 -qpi描述信息

                        -qpl生成文件

                        -qpc生成配置文件

                        -qpd生成幫助文件

                        -qpf文件路徑


【程序包校驗】

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

rpm -V 包名



【顯示共享庫依賴關係】

使用語法:ldd 命令文件路徑

如:查看ls命令的依賴關係

wKioL1PVAJ3Sc5-XAAHNRgxXK1Y988.jpg


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

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

導入:

rpm --import 文件路徑

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

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


【檢查包】

手動檢查:

rpm -K 包文件路徑

rpm --checksig 包文件路徑

不檢查包完整性:

       rpm -K --nodigest

不檢查來源合法性:

       rpm -K --nosignature


【數據庫重建】

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

重建:

     rpm --initdb  初始化

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

     rpm --rebuilddb  重建

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章