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、發行商的光盤或站點服務器
3、項目官網:源代碼、rpm包
4、第三方機構或個人製作並公佈的rpm包
【rpm包的合法性驗證】
包製作者製作完成之後會附加數字簽名於包上;包的製作者使用單向加密提取原始數據的特徵碼,而後 使用自己的私鑰加密這段特性碼,附加原始數據後面。
驗正過程:
前提:必須有可靠機制獲取到包製作者的公鑰;
1、使用製作者的公鑰解密加密的特徵碼,能解密則意味着來源合法;
2、使用與製作者同樣的意向加密算法提取原始數據的特徵碼,並與解密出來的特徵作 比對,相同,則意味着完整性沒問題;
【如何安裝rpm包】
命令語法格式:rpm 選項 文件包路徑
其中的選項有:-i 安裝
-v 顯示詳細過程
-h 使用#號顯示安裝進度
ivh組合 安裝並顯示詳細過程和進度
--tost 測試(不真正安裝,僅是測試是否能夠安裝)
--nodeps 安裝時忽略依賴關係
例如我們安裝一下gcc:
【如何卸載程序包】
語法使用格式:rpm 選項 包名(這裏的選項爲-e。意爲卸載)
例如,我們卸載剛纔安裝的gcc
注:如果包的配置文件被修改過,卸載時包的配置文件將被重命名並保存)
卸載時如果被其他包所依賴:1、將依賴於此包的所有包一併卸載
2、忽略依賴關係 後加--nodeps
【如何升級程序包】
命令適用語法:rpm 選項 包路徑
升級或安裝使用的選項爲:-Uvh
單純升級使用的選項爲:-Fvh
注:升級或版本衝突,使用--force選項強制升級
注:不應該對內核進行升級,內核只能安裝。linux系統允許多內核並存。
【rpm包的查詢操作】
1、查詢某包是否安裝:rpm -q 包名
如:查詢gcc包是否安裝
2、查詢所有已安裝的包:rpm -qa
如:
3、查詢已安裝包的描述信息:rpm -qi 包名
如:查詢groff包的描述信息
4、查詢已安裝包的生成文件:rpm -ql 包名
如:查詢groff的生成文件
查詢安裝生成的配置文件:rpm -qc 包名
查詢安裝生成的幫助文件:rpm -qd 包名
查詢安裝的相關腳本:rpm -q --scripts 包名
5、查詢某文件是有那個包安裝生成的:rpm -qf 文件名
6、查詢尚未安裝的包:rpm 選項 -p 路徑包文件
選項有 -qpi描述信息
-qpl生成文件
-qpc生成配置文件
-qpd生成幫助文件
-qpf文件路徑
【程序包校驗】
檢查包安裝後生成的文件屬性是否發生變化
rpm -V 包名
【顯示共享庫依賴關係】
使用語法:ldd 命令文件路徑
如:查看ls命令的依賴關係
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 重建
直接重建,覆蓋原有的數據庫