我們知道在操作系統上使用的程序都是有程序員通過開發工具得來的,程序員直接編寫的純文本的文件,我們稱之為源代碼,由于計算機識別的是二進制程序,因此在完成源代碼編寫之后,就必須要經過編譯,使之成為操作系統可以“看得懂”的二進制程序,這里的編譯是通過編譯器來進行的操作,編譯器的功能就是將源代碼程序“轉換”為二進制程序,然后再通過一定的安裝步驟將其安裝到操作系統上來,進而被系統及用戶來使用。
程序源代碼–> 預處理–> 編譯 –> 匯編 –> 鏈接
編譯包括:靜態編譯:以.a為后綴的文件 (復制一份出來打包到本地)
動態編譯:以.so為后綴的文件(無需復制打包,直接調用庫文件,可多個調用一個)
這里講一下如果不小心刪除了庫文件,如何挽救:
例如,不小心刪除了/lib64/libc.so.6
CentOS6中:
1、進入光盤救援模式
在進度條沒讀完的時候按ESC ,然后如圖
強調一下,不用選擇網絡調試
2、之后全部選擇ok即可,進入shell,注意此時我們處在光盤的根下,使用chroot /mnt/sysimage 可切換到系統根下
3、將光盤中libc.so.6文件復制到系統/etc/lib64/目錄下,即可恢復
4、重啟系統
在CentOS7中,救援模式的進入基本和6相同,相對簡便一些;進入救援模式后操作與6相同。
7中進入救援模式
包的安裝有:rpm 、yum 、編譯安裝;我先來講一下CentOS中RPM包的管理。
安裝:
rpm {-i | –install} [install-options] PACKAGE_FILE…
-h : hash ,以#來表示安裝的進度;
-v : –verbose : 顯示安裝過程中的詳細信息;(-vv ; -vvv 更加詳細)
–test : 不執行真正的安裝過程,僅僅報告依賴關系以及沖突信息等;
–nodeps : 忽略依賴關系,但是存在副作用-能安裝成功,但是不一定能運行成功;
–replacepkgs : 覆蓋安裝――重新安裝并覆蓋原有的文件;
–force : 強制安裝
安裝時經常使用的組合是:-ivh , -ivvh
rpm安裝的過程中會經常遇見,包的依賴性問題,使安裝變得繁瑣。
升級:
rpm {-U | –upgrade} [install-ortions] PACKAGE_FILE… 升級或安裝
rpm {-F | –freshen} [install-ortions] PACKAGE_FILE… 升級
在這里要注意:
1、一定不要對內核進行升級,在linux中允許多內核存在,可以直接安裝多個不同版本的內核;
2、如果程序包的配置文件安裝后曾被修改,升級時,新版本的文件不會覆蓋老版本的配置文件,而是把新版本的配置文件重命名(加后綴.rpmnew)后保存。
卸載:
rpm {-e | –erase} [options] PACKAGE_FILE…
–nodeps : 忽略依賴關系,直接卸載
–test : 測試卸載,dry-run模式
–allmatches : 如果一個程序包同時安裝多個版本,則此選項一次全部卸載
注意:如果配置文件安裝后被修改,卸載時,此配置文件不會被刪除,而是重命名(加后綴.rpmsave)后保存。
查詢:
查詢某安裝包是否已經安裝,以及檢查安裝的所有包,還可以查看某包的詳細信息。
rpm –q PACKAGE_NAME… : 查詢某包是否已經安裝
rpm –qa PACKAGE_NAME… :查詢已經安裝的包
rpm –qi PACKAGE_NAME… :查詢包的information
rpm –qpi PACKAGE_NAME… :查詢尚未安裝的某包的文件的相關信息
rpm –qf /PATH/TO/SOMFILE : 查看某文件是有哪個包提供的
rpm –ql PACKAGE_NAME… :查詢包安裝生成的文件列表
rpm –qc PACKAGE_NAME… :查詢包安裝完成后生成的所有配置文件
rpm –qd PACKAGE_NAME… :查看包安裝完成后生成的所有幫助文件
rpm –q –changelog PACKAGE_NAME… :查看某包制作時隨版本變化的信息
rpm –q –provides PACKAGE_NAME… :查看包提供capabilities
rpm –q –requires PACKAGE_NAME… :查看某包所依賴的capabilities
rpm –q –scripts PACKAGE_NAME… :查看某包安裝或卸載時執行的腳本
校驗:
查詢包安裝后生成文件是否發生了變化
rpm –V PACKAGE_NAME… 當沒有結果輸出時表示軟件包完整,當有如下的相應結果輸出則發生了改變:
S :(file Size differs) 文件的大小改變
M :(Mode differs) 文件的類型或屬性(rwx)改變
5 :(MD5 sum differs) MD5 這一哈希值發生改變
D :(Device major/minor number mis-match) 裝置的主次代碼改變
L :Link路徑發生改變
U :文件的屬主改變
G :文件的屬組改變
T :文件的mtime時間改變
P :capabilities改變
關于合法性,我們要驗證其光盤中程序包的來源及完整性:
先導入合法的密鑰文件:rpm –import /path/to/RPM-GPG-KEY-FILE (一般在/etc/pki/rpg-gpg/目錄下)
驗證:rpm {K | –checksig} PACKAGE_FILE
–nosignature :不檢查來源合法性
–nodigest : 不檢查完整性
rpm數據庫:(/var/lib/rpm)
數據庫重建:
rpm {–initdb | –rebuilddb}
initdb : 初始化,如果事先不存在數據庫,則新建;否則,不執行任何操作
rebuilddb : 重建已安裝的包頭的數據庫索引目錄
原創文章,作者:Immortals、zcy,如若轉載,請注明出處:http://www.www58058.com/73960
文章對rpm包進行了詳細的介紹,內容很的很精細,排版也很好,可以把博客數量再往上增加一下了。