軟件包管理(rpm)

1响疚、軟件包基礎:
2敲茄、rpm包管理:
3盔夜、移動lib64庫文件修復過程:
4、卸載內核修復過程

1拾徙、軟件包基礎

軟件運行與編譯:
ABI:應用程序二進制接口
API:應用程序編程接口
靜態(tài)迅诬、動態(tài)鏈接

二進制應用程序的組成部分:

二進制文件因惭、庫文件蒿褂、配置文件、幫助文件

二進制文件


ls二進制文件蒋畜,依賴于庫文件声畏,查看ls二進制文件which ls--,file /bin/ls

庫文件


lib64庫文件

配置文件
有些服務、軟件較大姻成,復雜的程序需要通過配置文件來執(zhí)行實現(xiàn)特性插龄、通過修改配置文件修改來影響程序的運行。(/etc/...)

幫助文件
……

包命名;

源代碼:name-VERSION.tar.gz|bz2|xz
VERSION版本:major科展、minor均牢、release發(fā)行
rmp包命名方式:

包名稱、版本號才睹、編譯者后加注徘跪、cpu架構

包分類和拆包
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包管理器前端管理工具

rpm.安裝包依賴性琅攘。

查看二進制程序所依賴的庫文件
ldd /path/to/binar_FILE

查看ls所依賴的庫文件ldd命令

管理及查看本機裝載的庫文件
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

數(shù)據(jù)庫--安裝包的信息。不能隨意刪除筒溃,刪除將不能管理包马篮。
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怜奖、項目官方站點

官方站點
浑测?
md5 效驗

md5 效驗,輸入命令歪玲。

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:查看指定的文件有那個程序包安生成并齐,來自哪個安裝包漏麦。
用rm刪除后可以用rpm -pf查詢到文件生成的安裝包
磁盤上是否每一個文件都來自安裝包

不是每一個文件都來自安裝包。

-p rpmfile况褪;針對尚未安裝的程序包文件做查詢操作

有那個包所提供
--whatprovides CAPABILITY;查詢指定的CAPABILITY背那個包所依賴
--provides:列出指定的程序包所提供的CAPABILITY[性能撕贞、能力]
-R:查看指定的程序包所依賴的CAPABILITY

指定的能力所依賴的包、包具有的能力测垛、指定的包所依賴的能力
bash所依賴的庫

rmp2cpio(rpm to cpio) 包文件|cpio -itv 預覽包內文件
rpm2cpio (rpm to cpio) 包文件|cpio -id "*.conf" 釋放包內文件

rpm2copi命令預覽捏膨、解包、解壓縮進行安裝食侮、需注意文件元數(shù)據(jù)(權限之類)

【query-options】
--changelog:查尋rpm包的changelog[變更日志号涯,版本歷史]

bash包更新歷史查詢

沒有安裝tree包,但可以查詢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

缺少檢查工具,md5 not ok
導入密鑰巫延,檢測,md5 ok

卸載蜜鑰效五,查詢裝好的蜜鑰

查詢蜜鑰、卸載
光盤與磁盤的蜜鑰位置
消除報警炉峰,導入蜜鑰
rpm數(shù)據(jù)庫

數(shù)據(jù)庫重建:
/var/lib/rpm
rpm{--initdb|--rebuilddb}
initdb:初始化
如果事先不存在數(shù)據(jù)庫畏妖,新建之
否則,不執(zhí)行任何操作
rebuilddb疼阔;重建已安裝的包頭的數(shù)據(jù)庫索引目錄
戒劫!數(shù)據(jù)庫初始化及重建數(shù)據(jù)都為空半夷,沒有意義。

3迅细、庫文件移動后的修復過程

lib64巫橄,如ls、cat茵典、bc湘换、cp……通用lib64庫,節(jié)約空間统阿。不能隨意移動庫文件否則將無法運用外部命令
用mv命令移動庫文件后彩倚,無法重新啟動系統(tǒng)。centos6無法運用圖形界面

不使用快照的情況下扶平,修復移除lib64庫文件導致系統(tǒng)無法啟動故障帆离,在VMware下的修復方法。

重新啟動客戶機结澄,用光盤進救援模式

客戶機重新啟動后哥谷,運行光盤,當進度條走動的瞬間按一次Esc鍵概而,進入選項界面呼巷。(只能按一次,不能重復)

選擇第三項
選擇第三項赎瑰,救援模式
選擇語言王悍,默認即可
不需要配置網絡,選擇NO
繼續(xù) 只讀 忽略 高級
初始安裝系統(tǒng)時掛載點為根餐曼、救援模式時掛載點為/mnt/sysimares.
進行下一步压储,回車得到一個shell,打開字符界面源譬,更改根的位置集惋。當前根位置為/mnt/sysimages,將其改為/,需在字符界面下執(zhí)行命令 #chroot /mnt/sysmages.
您的系統(tǒng)安裝在/mn/sysimage目錄下
開shell,進入字符界面
輸入#pwd命令顯示當前為“/”踩娘,“/”為偽根刮刑、真正的根為/mnt/sysimage/。將lib64庫文件移動還原养渴,執(zhí)行命令#chroot /mnt/sysimages可以切根“/”雷绢。
將庫文件還原到lib64下,輸入exit 退出
重啟理卑,復原翘紊。
centos7移動lib64庫文件,并進行修復藐唠。(類似centos6操作)

1帆疟、重新啟動客戶機
2鹉究、光盤引導進入
3、按ESC鍵進入
4踪宠、選擇第三項自赔,檢測排錯
5、選擇第二項殴蓬,進入救援模式
6匿级、選擇1回車
7、c繼續(xù)
8染厅、回車開啟shell
9痘绎、不能切根,移動回復lib64庫文件

4肖粮、卸載內核后孤页,Linux沒有啟動菜單項,系統(tǒng)無法啟動涩馆。修復過程行施;

沒有Linux啟動項

進入救援模式

掛在光盤
安裝內核
切換到根
強行安裝內核
xx
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市魂那,隨后出現(xiàn)的幾起案子蛾号,更是在濱河造成了極大的恐慌,老刑警劉巖涯雅,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鲜结,死亡現(xiàn)場離奇詭異,居然都是意外死亡活逆,警方通過查閱死者的電腦和手機精刷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔗候,“玉大人怒允,你說我怎么就攤上這事⌒庖#” “怎么了纫事?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長所灸。 經常有香客問我儿礼,道長,這世上最難降的妖魔是什么庆寺? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮诉字,結果婚禮上懦尝,老公的妹妹穿的比我還像新娘知纷。我一直安慰自己,他們只是感情好陵霉,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布琅轧。 她就那樣靜靜地躺著,像睡著了一般踊挠。 火紅的嫁衣襯著肌膚如雪乍桂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天效床,我揣著相機與錄音睹酌,去河邊找鬼。 笑死剩檀,一個胖子當著我的面吹牛憋沿,可吹牛的內容都是我干的。 我是一名探鬼主播沪猴,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辐啄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了运嗜?” 一聲冷哼從身側響起壶辜,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎担租,沒想到半個月后砸民,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡翩活,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年阱洪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菠镇。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡冗荸,死狀恐怖,靈堂內的尸體忽然破棺而出利耍,到底是詐尸還是另有隱情蚌本,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布隘梨,位于F島的核電站程癌,受9級特大地震影響,放射性物質發(fā)生泄漏轴猎。R本人自食惡果不足惜嵌莉,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捻脖。 院中可真熱鬧锐峭,春花似錦中鼠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至椎扬,卻和暖如春惫搏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蚕涤。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工筐赔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钻趋。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓川陆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蛮位。 傳聞我的和親對象是個殘疾皇子较沪,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容