一:
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