軟件包管理
軟件運行環境
API 應用程序開發接口
ABI 二進制接口
Rpm包命名方式
Name-version-release-arch-rpm
例如
zziplib-devel-0.13.162-5.el7.i686.rpm
zziplib :主包名
dewel:次包名
0.13.162: 主版本號 次版本號 最小版本號
5:rpm包編譯完后的版本
el7:系統版本號,代表centos7
i686:硬件架構
有的軟件包硬件架構位置會有noarch的字樣,表示與硬件架構無關,可以運行在任何架構的機器上。
常見的arch有:x86 i386 i486 i586 i686 x64—64 x64
互聯網上的很多軟件的發布,不一定是rpm的方式,都是以源代碼的方式發布,源代碼的方式發布會有各種后綴,但是一般都要tar打包,在打包的基礎上壓縮。
包的分類和拆包
Application-VERITION-ARCH.rpm 主包
Application-devel-VERITION-ARCH.rpm 開發子包
Application-tuils-VERITION-ARCH.rpm 工具子包
Application-libs-VERITION-ARCH.rpm 庫包
庫文件
查看二進制文件所依賴的庫文件
Ldd /PATH/TO/BINARY_FILE
例如:ldd /bin/ls ldd /bin/bash
管理及查看本機裝載的庫文件:
Ldconfig
/sbin/ldconfig -p:顯示本機已經緩存的所有可用庫文件名及文件路徑的映射關系。
配置文件:/etc/ld.so.conf /etc/ld.so.conf.d/*.conf
緩存文件:/etc/ld.so.cache
RPM包管理
Centos系統上使用rpm命令管理程序包
作用:
安裝 卸載 升級 查詢 校驗 數據庫維護
rpm包的安裝
rpm -i /path/rpm 安裝(要寫具體路徑)
-v或-vv 詳細顯示安裝過程
-h 以#顯示安裝進度
-q 查詢rpm包是否安裝
-ql 查詢rpm包的安裝位置
一般rpm -ivh 一起使用
rpm -ivh – -test 測試安裝,但不真正執行安裝
– -nodeps 忽略依賴關系
– -repleasepkgs 覆蓋安裝rpm包
– -repleasefiles 覆蓋安裝rpm包中的單個文件。比如有兩個包,其中個
別文件是一樣的,就可以用此命令,只覆蓋個別文件,而
不是整個rpm包。
– -nodigest 不檢查包的完整性
– -nosignature 不檢查包的合法來源
– -noscipts 不執行程序包腳本片段
%per 先運行腳本再安裝rpm程序包 –nopre
%post 先安裝rpm包再運行腳本 –nopost
%preun 先運行腳本后卸載rpm包 –nopreun
%postun 先卸載rpm包,再運行腳本 –nopostun
rpm包升級
rpm -U [install -option]
如果安裝有舊版本,則升級,沒有安裝舊版本則安裝。
注意:上圖對于tree的安裝,是在當前路徑下安裝的,所以沒有寫路徑,如果不
在當前路徑下,要寫rpm包的完整路徑。
Rpm -F [install-option]
如果安裝有舊版本,則升級,沒有安裝舊版本則不執行任何操作。
– -oldpackage 降級
– -force 強行升級
包查詢
rpm -e 卸載
-a 所有包
若包名記得不全,則可以rpm -qa | grep “”模糊搜索
-f 查看指定的文件由哪個安裝包生成。
-p rpmfile(完整路徑) 針對尚未安裝的程序波文件做查詢操作。
– -changelog 查詢rpm的更改日志
Rpm -q [option] 配合q使用
– -changelog 查詢rpm包的更改日志
-c 查詢程序的配置文件
-d 查詢程序的文檔
– i rpm包的信息
-l 查看指定程序包安裝后生成的所有文檔
– -scripts 查看程序包自帶的程序片段
-R 查看程序包的依賴關系
– -provides 列出指定程序包所指定的程序和功能
導入所需的公鑰
Rpm -K rpmfile 檢查包的完整性
例如
運行后有報錯信息,這不是因為該包不完整,是因為系統現在沒有檢測能力。需要
導入公鑰文件才能用。
導入 – -import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
再次執行-K命令就不會報錯了。
rpm -qa gpg-pubkey* 下圖顯示的結果就是導入的密鑰文件
RPM數據庫
數據庫重建
/var/lib/rpm
安裝或卸載一個包,該數據庫都會更新,該文件被破壞后,會造成rpm無法查詢
Rpm包的信息。
Rpm – -initdb 初始化
如果事先不存在數據庫,則新建,否則不執行任何操作,
Rpm – -rebuilddb 重建
無論當前存在與否,直接重新創建數據庫。
原創文章,作者:zzd,如若轉載,請注明出處:http://www.www58058.com/39357