一:
1、API 和ABI
API : Application Programming Interface
應用程序編程接口
程序源代碼-->預處理--> 編譯-->彙編--> 鏈接
ABI: Application Binary Interface
應用程序二進制接口
windows 與linux不兼容
庫級別的虛擬化
Linux :Wine
Windows: Cywin
2、二進制應用程序的組成部分:
二進制文件、庫文件、配置文件、幫助文件
程序包管理器:
Debian:deb-->apt
Redhat:rpm-->rpm
Gentoo:emerge Portage
Archlinux:pacman
Suse: zypper
Fedora 22+:dnf
3、查看二進制程序所依賴的庫文件:
ldd /PATH/TO/BINARY_FILE
4、管理及查看本機裝載的庫文件
ldconfig
/sbin/ldconfig -p //顯示本機已緩存的可用庫文件及文件映射關係
配置文件: /etc/ld.so.conf
/etc/ld.so.conf.d/*.conf
緩存文件:/etc/ld.so.cache
5、程序包管理;
功能:將編輯好的應用程序的各組成文件打包成一個或者幾個程序包文件;
從而方便快速完成安裝、卸載、查詢、升級等
(1)程序的組成清單 -----每個包獨有
文件清單
安裝和卸載時運行的腳本
(2)、數據庫 ----公共-----
程序包名稱和版本
依賴關係
功能說明
安裝生成的各文件的文件路徑及校驗信息
6、管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum、dnf
7、獲取程序包的途徑:
(1)系統發行版的光盤或者官方的服務器:
Centos鏡像:
(2)項目官方站點
(3)第三方組織:
Fedora-EPEL
搜索引擎:
http://pkgs.org
http://rpm.pbone.net
(4)自己製作
注意:檢查合法性----->來源合法性、程序包完整性
二:rpm程序包管理命令
----實現安裝、卸載、升級、查詢、校驗、數據庫維護
rpm {-i | --install} [install-options] PACKAGE_FILE...
-v : verbose
-h : 以#顯示程序包管理執行進度;每個#表示2%的進度
rpm -ivh PACKAGE_FILE ...
[ install-options ]
--test : 測試安裝,但不真正的執行安裝過程。
--nodeps: 忽略依賴關係。
--replacepkgs: 重新安裝
--nodigest : 不檢查包來源合法性
--nosignature :不檢查包完整性
--noscipts :
%pre:安裝前腳本
%post:安裝後腳本
%prenu:卸載前腳本
%postun : 卸載後腳本
升級:
rpm { -U|--upgrade}[install-option] PACKAGE_FILE
rpm { -F|--freshen}[install-options] PACKAGE_FILE
rpm -Uvh PACKAGE_FILE...
rpm - Fvh PACKAGE_FILE...
--oldpackage : 降級
--force : 強行升級
注意:
(1)不要對內核做升級操作,linux支持多內核版本共存。
(2)如果原程序包的配置文件安裝後曾被修改,升級時,新配置不會覆蓋而是重命名保留(.rpmnew)
查詢:
rpm { -q| --query} [select-options][query-options]
[select-options]
-a : 所有包
-f : 查詢命令由那個程序包安裝生成。
-P /PATH/PACKAGE_FILE: 針對尚未安裝的程序包安裝文件做查詢操作
--whatprovides CAPABILITY :查詢指定的CAPABILITY是由那個包提供
--whatrequires CAPABILITY : 查詢指定的CAPABILITY是由那個包所依賴
[query-options]
--changelog : 查詢rpm包的changelog
-c : 查詢程序的配置文件
-d: 文檔
-i :包的描述信息
-l : 查看程序包安裝後生成的所有文件。
--scripts :程序包自帶的腳本片段。
-R : 查詢程序包所依賴的CAPABILITY
--provides : 列出指定程序包所提供的CAPABILITY
校驗:
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
包來源合法性驗證及完整性驗證
完整性驗證:sha256
來源合法性驗證:RSA