1响疚、軟件包基礎:
2敲茄、rpm包管理:
3盔夜、移動lib64庫文件修復過程:
4、卸載內核修復過程
1拾徙、軟件包基礎
軟件運行與編譯:
ABI:應用程序二進制接口
API:應用程序編程接口
靜態(tài)迅诬、動態(tài)鏈接
二進制應用程序的組成部分:
二進制文件因惭、庫文件蒿褂、配置文件、幫助文件
二進制文件
庫文件
配置文件
有些服務、軟件較大姻成,復雜的程序需要通過配置文件來執(zhí)行實現(xiàn)特性插龄、通過修改配置文件修改來影響程序的運行。(/etc/...)
幫助文件
……
包命名;
源代碼:name-VERSION.tar.gz|bz2|xz
VERSION版本:major科展、minor均牢、release發(fā)行
rmp包命名方式:
包分類和拆包
Application-VERSION-ARCH.rpm: 主包
Application-devel-VERSION-ARCH.rpm 開發(fā)子包(開發(fā)類放置devel)
Application-utils-VERSION-ARHC.rpm 其它子包(應用相關放置utils)
Application-libs-VERSION-ARHC.rpm 其它(與庫相關放置libs)
包之間:可存在依賴關系,甚至循環(huán)關系
解決依賴包管理工具:
yum: rpm包管理器的前段工具
apt-get:deb包管理器前端工具
zypper:suse上的rpm前端管理工具
dnf:Fedora 18+ rmp包管理器前端管理工具
查看二進制程序所依賴的庫文件
ldd /path/to/binar_FILE
管理及查看本機裝載的庫文件
ldconfing
/sbin/ldconfig -p:顯示本機已緩存的所有可用庫文件名及文件路徑映射關系
配置路徑:/etc/ld.so.conf,/etc/ld.so.conf.d/.conf
緩存文件:/etc/ld.so.cache
/etc/ld.so.conf.d/.conf---配置文件垮庐,當使用第三方軟件,庫文件加載坞琴,指定方在一個目錄里突硝,需要單獨編一個配置文件、將路徑編寫到配置文件置济。
保存后需執(zhí)行#ldconfig ,讀取內容后生效锋八。
ldconfig -p 可以查看已經加載到內存的庫文件路徑浙于,庫文件信息。
包管理器
debian挟纱;deb文件羞酗,dpkg包管理器
redhat;rpm文件紊服,rpm包管理器
redhat Package Manager(rpm)
內核版本一般用偶數(shù)版本檀轨,奇數(shù)版本不穩(wěn)定測試開發(fā)階段。
1欺嗤、包文件的組成
文件內容(文件列表参萄、路徑,元數(shù)據(jù)煎饼,一些腳本)
RPM包內的文件
RPM的元數(shù)據(jù)讹挎,
安裝或卸載時運行的腳本
2、數(shù)據(jù)庫(公共):/var/lib/rpm(安裝好的包的信息)
程序包名稱及版本
依賴關系
功能說明
包安裝后生成的文件路徑及效驗碼信息
程序包的來源
管理程序包的方式
使用包管理器:rpm
使用前端工具:yum,dnf
獲取程序包的途徑:
1、系統(tǒng)發(fā)行版的光盤或官方的服務器:
Centos鏡像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
2怜奖、項目官方站點
3迁央、第三方組織(軟件)
光盤里不帶的軟件放到epel源里(官網),企業(yè)版額外的包读慎。
搜索引擎 :專門搜索安裝包漱贱;
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
4、自己制作
rpmbuild夭委、FPM工具自作安裝包幅狮。
2、rpm包管理
Centos系統(tǒng)上使用rpm命令管理程序包:
rpm [option..] file
-i --install --- 安裝
-v或vv(更詳細)--- 顯示過程
-h--------------- 進度
-e--------------- 卸載
[install-options]
--test:測試安裝株灸,但不真正執(zhí)行安裝崇摄,即dry run模式、模擬安裝
--nodeps:忽落依賴關系(安裝時慌烧,后續(xù)依賴的包安裝逐抑、否則無法運行)A依賴于B 安裝順序,先安裝B后安裝A屹蚊。卸載時厕氨,先卸載A,后卸載B汹粤。
--replacepkgs | replacefiles 替換命斧、覆蓋安裝
--oldpackage :降級
cat /boot/grup/grup.conf 執(zhí)行命令嘱兼,可以查看當前Linux運行那個內核国葬;
刪除以后查看當前運行內核是還是還是刪除的在運行,內和放在內存和磁盤兩個地方芹壕,刪除的是磁盤里的汇四。內核還在內存中,才重啟后才會消失踢涌。(uname -r)
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
安裝有舊版程序包通孽,則“升級”
如果不存在舊版程序包,則“安裝”
升級會覆蓋舊內核斯嚎,生產中最好不使用升級利虫,使用i安裝挨厚。
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
安裝有舊版程序包,則“升級”
如果不存在舊版程序包糠惫,則不執(zhí)行升級操作
--force-----強制安裝疫剃,只能在安裝升級時候用,卸載時不能使用硼讽。
rpm -e kernel --nodeps(不檢查相關性 忽略依賴關系 不檢查依賴性關系)----卸載內核
--nosignature:不檢查來源合法性
--nodigest:不檢查包完整性
-noscriptts:不執(zhí)行程序腳本
%pre:安裝前腳本-----nopre
%post:安裝后腳本----nopst
%preun:卸載前腳本---nopreun
%postun: 卸載猴腳本---nopostun
(1)不要對內核做升級操作:Linux支持多內核版本并存巢价,因此,可以對其直接安裝新版本內核固阁。
(2)如果源程序包的配置文件安裝后增被修改壤躲,升級時,新版本的提供的同一個配置文件并不會直接覆蓋老版本的配置文件备燃,而把新版本的文件重命名(FILENAME.RPMNEW)后保留碉克。
包查詢
rpm{-p| --query}[select-options][query-option]
rpm { - p |——查詢}[選項][查詢選項]
rpm -p 【包名】
[select-options]
-a;所有包 ----加上管道grep可以模糊搜索
-f:查看指定的文件有那個程序包安生成并齐,來自哪個安裝包漏麦。
不是每一個文件都來自安裝包。
-p rpmfile况褪;針對尚未安裝的程序包文件做查詢操作
有那個包所提供
--whatprovides CAPABILITY;查詢指定的CAPABILITY背那個包所依賴
--provides:列出指定的程序包所提供的CAPABILITY[性能撕贞、能力]
-R:查看指定的程序包所依賴的CAPABILITY
rmp2cpio(rpm to cpio) 包文件|cpio -itv 預覽包內文件
rpm2cpio (rpm to cpio) 包文件|cpio -id "*.conf" 釋放包內文件
【query-options】
--changelog:查尋rpm包的changelog[變更日志号涯,版本歷史]
沒有安裝tree包,但可以查詢tree安裝列表,
-c:查詢程序的配置文件
-d:查詢程序的文檔
-i:information
-l:查詢指定的程序安裝后生成的所有文件
--scripts:程序包自帶的腳本
-qi packege, -qf file, -qc package, -ql package , -qd package
-qpi package_file , -qpl package_file
-qa
包卸載:
rpm {-e| --erase}[--allmatches][--nodeps][--noscripts][--notriggers][--test]package_name..
rpm { - e |——消除}[——allmatches][——nodeps][——noscript][——被重置為notrigger][——測試]package_name . .
包效驗(查看屬性變化)
rpm {-V|--verify} [select-options] [verify-options]
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
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
rpm { - v |——驗證}[選項][verify-options]
年代文件大小不同
M模式不同(包括權限和文件類型)
5摘要(前MD5和)不同
D設備/小數(shù)字不匹配
L指向(2)路徑不匹配
U用戶擁有不同
G組所有權不同
T mTime不同
P能力不同
也可以查看所有文件屬性變化锯七,(-va)命令
安裝軟件包效驗
包來源合法性驗證及完整性驗證
完整性驗證:SHA256
來暈啊合法性驗證:RSA
公鑰加密
對稱加密:加密,解密使用同一個秘鑰
非對稱加密:密鑰是成對兒的
pablic key:公鑰诚隙,公開所有人
secret key:私鑰,不能公開
導入所需要公鑰
rpm -k|checksig rpmfile 檢查包的完整性和簽名
rpm--import /etc/pki/rpm-gpg/rpm-gpg-key-Centos-7
Centos7發(fā)行版光盤提供:RPM-GPG-KEY-Centos7
rpm -qa "gpg -pubkey*"
查看是否是廠家出廠原安裝包起胰,-K
卸載蜜鑰效五,查詢裝好的蜜鑰
rpm數(shù)據(jù)庫
數(shù)據(jù)庫重建:
/var/lib/rpm
rpm{--initdb|--rebuilddb}
initdb:初始化
如果事先不存在數(shù)據(jù)庫畏妖,新建之
否則,不執(zhí)行任何操作
rebuilddb疼阔;重建已安裝的包頭的數(shù)據(jù)庫索引目錄
戒劫!數(shù)據(jù)庫初始化及重建數(shù)據(jù)都為空半夷,沒有意義。
3迅细、庫文件移動后的修復過程
不使用快照的情況下扶平,修復移除lib64庫文件導致系統(tǒng)無法啟動故障帆离,在VMware下的修復方法。
客戶機重新啟動后哥谷,運行光盤,當進度條走動的瞬間按一次Esc鍵概而,進入選項界面呼巷。(只能按一次,不能重復)
centos7移動lib64庫文件,并進行修復藐唠。(類似centos6操作)
1帆疟、重新啟動客戶機
2鹉究、光盤引導進入
3、按ESC鍵進入
4踪宠、選擇第三項自赔,檢測排錯
5、選擇第二項殴蓬,進入救援模式
6匿级、選擇1回車
7、c繼續(xù)
8染厅、回車開啟shell
9痘绎、不能切根,移動回復lib64庫文件
4肖粮、卸載內核后孤页,Linux沒有啟動菜單項,系統(tǒng)無法啟動涩馆。修復過程行施;
進入救援模式