軟件包管理
軟件包運行環境:
API:Application Programming Interface 使用標準:POSIX: 源代碼運行步驟:預處理(如處理注釋)—>編譯成匯編代碼—>鏈接其他庫文件 ABI:application binary interpace file命令可以查看ABI接口類型 file 文件名 Linux與windows的ABI接口不同 Linux運行windows二進制文件:安裝wine windos運行Linux二進制文件:Cywin
包管理器:
功能:將編譯好的應用程序的組成文件打包一個或幾個程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗等管理操作 二進制文件組成部分 二進制文件、庫文件、配置文件、幫助文檔 程序包管理: debian:deb文件,dpkg包管理器 redhat:rpm文件,rpm包管理器 rpm:rpm Package Manager 1、包文件組成 (每個包獨有) RPM包內的文件 RPM的元數據,如名稱,版本,依賴性,描述等 安裝或卸載時運行的腳本2、數據庫(公共) 程序包名稱及版本 依賴關系 功能說明 包安裝后生成的各文件路徑及校驗碼信息
rpm包命名方式
舉例:gd-devel-2.0.35-11.el6.x86_64.rpm
gd是這個包的主包名,devel是這個包的分包名,2.0.35是表示版本信息,2為主版本號,0表示次版本號,35為源碼包的發行號也叫修訂號,
11.el6中的11是rpm的發行號,el6表示RHEL6,x86_64是表示適合的平臺。
常見的arch:
x86: i386, i486, i586, i686 ,x86_64: x64, x86_64, amd64,powerpc: ppc
跟平臺無關: noarch
包分類
主包 :application-version-ARCH.rpm
開發包:application-devel…
工具包:application-utils…
包之間的關系:可能存在依賴甚至循環依賴
解決依賴包管理工具:
yum: rpm包管理器的前端工具
apt- get: deb包管理器前端工具
zypper: suse上的rpm前端管理工具
dnf: Fedora 18+ rpm包管理器前端管理工具
包安裝路徑:rpm包在安裝時自動根據FHS將文件安裝在指定目錄下無需手動干預
編譯安裝:編譯安裝可以手動更改安裝路徑
程序包來源:
(1) 系統發版的光盤或官方的服務器;
CentOS鏡像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
(2) 項目官方站點
第三方組織:
Fedora- EPEL:Extra Packages for Enterprise Linux
Rpmforge:RHEL推薦,包很全
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
(4) 自己制作
注意:檢查其合法性: 來源合法性,程序包的完整性
庫文件
什么是庫文件:一種可執行代碼的二進制+形式,可以被操作系統載入內存執行。庫文件是別人寫好的、成熟的可復用的代碼,應用程序運行時直接加載調用即可。 庫文件分類 靜態庫 .a結尾 編譯時直接加載 動態庫 .so結尾 在應用程序運行時加載 查看二進制文件依賴的所有庫文件:ldd 二進制文件 管理及查看本機裝載的庫文件: ldconfig /sbin/ldconfig - p: 顯示本機已經緩存的所有可用庫文件名及文件路徑映射關系 配置文件: /etc/ld.so.conf, /etc/ld.so.conf.d/*. conf 緩存文件: /etc/ld.so.cach
rpm包管理
CentOS系統上使用 rpm命令管理程序包:
安裝
rpm -i|–install 包文件
-v:顯示安裝詳細信息
-vv:顯示更詳細的安裝信息
-h:以#號顯示安裝進度
–test:測試安裝但不是真的安裝
–nodeps:忽略安裝依賴關系
–replacepkgs:覆蓋安裝,所有和軟件相關的包都重新安裝
–replacefiles:覆蓋文件,比如軟件A和軟件B需要相同的文件的時候,軟件A安裝了,再安裝軟件B可能出現出現文件已存在
–nosignature:不檢查包的完整性
卸載
升級 install -U(update) 包名:如果有老版本就升級,如果沒有老版本則安裝 install -F (freshen) 包名:如果有老版本就升級,如果沒有老版本則不執行升級操作 --oldpackage:降級,當前系統中已經安裝的軟件的版本大于要安裝的軟件版本時,會不能安裝,需要添加此選項 --force:強制升級,比如出現文件沖突等可使用者選項 內核升級: 注意: (1) 不要對內核做升級操作; Linux支持多內核版本并存,因此,對直接安裝新版本內核 (rpm -ivh 新內核文件安裝包) (2) 如果原程序包的配置文件安裝后曾被修改,升級時,新版本 的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而 把新版本的文件重命名 (FILENAME.rpmnew)后保留
查詢
rpm -q[其他選項] 其他選項: -a:查詢所有的安裝 |rpm -qa -f:查詢文件由哪個程序包安裝生成 - p rpmfile:針對尚未安裝的程序包文件做查詢操作; -- whatprovides CAPABILITY:查詢指定的功能由哪個包所提供 --whatrequires capability :查詢指定的功能被哪個包依賴 --changelog :查尋已經安裝的包的更改日志 :rpm -q --changelog vsftpd -c :查詢已安裝包的配置文件 rpm -q -c vsftpd -d :查詢程序的文檔 -i :查詢安裝信息 - l: 查看指定的程序包安裝后生成的所有文件 -- scripts:程序包自帶的腳本片斷 - R: 查詢指定的程序包所依賴的功能 --provides :程序包所提供的功能
卸載:
rpm -e 包名
校驗:
定義:校驗已經安裝包的文件是否發生改變,不發生改變時無顯示結果 rpm -V 包名 不同改變顯示不同的結果 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
包校驗:
包來源合法性驗正及完整性驗正: 完整性驗正: SHA256 來源合法性驗正: RSA 公鑰加密: 對稱加密:加密、解密使用同一密鑰; 非對稱加密:密鑰是成對兒的 public key: 公鑰,公開所有人 secret key: 私鑰, 不能公開 默認情況下操作系統無對包進行檢測的能力,需要導入所需要公鑰: rpm - K|--checksig rpmfile 檢查包的完整性和簽名 rpm -- import /etc/pki/rpm- gpg/RPM- GPG- KEY- CentOS- 7 CentOS 7發行版光盤提供: RPM- GPG- KEY- CentOS- 7 卸載導入的公鑰 rpm -qa gpg- pubkey* rpm -e gpg-pubkey-f4a80eb5-53a7ff4b
數據庫維護
存放包安裝信息數據庫文件
/var/lib/rpm
rpm {– initdb| — rebuilddb}
initdb: 初始化
如果事先不存在數據庫,則新建之
否則,不執行任何操作
rebuilddb:重建
無論當前存在與否,直接重新創建數據庫
原創文章,作者:wangnannan,如若轉載,請注明出處:http://www.www58058.com/36500