软件包工具包工具:RPM
应用程序:和CPU架构有关系
源代码--编译
编译:生成二进制文件(可执行文件),匹配底层架构
程序=数据+指令 应用程序运行时,申请cpu和内存资源
内存地址空间:
text:存放指令
data+bss:data存放数据,bss:block system of symbol:存放初始化为0的变量
堆:heap存放运行中临时文件
栈:stack存放应用程序的变量和函数等。
前端工具:yum,apt-get,自行解决依赖关系
后端工具:RPM,dpt
RPM优点:
1、RPM软件包中包含了编译过的程序与配置文件,用户不用重新编译
2、RPM在安装之前,首先会检查硬盘容量,操作系统版本等,避免被错误安装
3、RPM使用RPM数据库管理,数据中记录应用程序的参数,便于升级,卸载,查询等,RPM数据库/var/lib/rpm
4、RPM本身会提供应用程序版本信息,相关属性,软件名称,用途等,便于用户连接软件。
安装、查询、卸载、升级、校验、数据库的重建、验证数据包工作;
rpm命名:
包:组成部分
主包:
bind-9.7.1-1.315.i586.rpm
子包:
bind-libs-9.7.1-1.315.i586.rpm
bind-utils-9.7.1-1.315.i586.rpm
包名格式
主版本号:重大改进
此版本号:某个子功能
发行版本号:修正了部分bug,调整了一点功能
RPM包:经过源代码编译的软件包
.tar.gz:源码包,没有经过编译
1安装: rpm -ivh name.rpm
-i:安装软件包
-h:以#显示进度;每个#表示2%
-v:显示详细过程
rpm -ivh /path/to/package_file
--nodeps:忽略依赖关系
--replacepkgs:重新安装
--force:强行安装,重装或者降级
2.查询
rpm -q package_name:查询指定的包是否已经安装
rpm -qa 查询已经安装的所有包
rpm -qi package_name:查询指定包的说明信息
rpm -ql package_name:查询指定包安装后生成的文件列表
rpm -qc package_name:配置文件
rpm -qd package_name:帮助文件
rpm -q --script package_name:查询指定包中包含的脚本
rpm -qf /path/to/somefile:查询指定的文件是由哪个rpm包安装生成的;
rpm -qf /usr/bin/ls
rpm -qpl :查看未安装软件包列表
rpm -qpi:查看未安装软件包信息
3.升级
rpm -Uvh /path/to... :有老版本升级,没有安装
rpm -Fvh :有升级,没有退出
--oldpackage:降级
4.rpm -e Package_name
--nodeps
5.校验:验证软件包列表和配置文件的完整性
rpm -V package_name
应用程序配置文件完整性破坏以后的代码:
S:file size differs
6. 重建数据库
rpm
--rebuilddb:重建数据库,一定会重新建立
--initdb:初始化数据库,没有才建立,有就不用建立
7.检验来源合法性,及软件包完整性
ls /etc /pki/rpm-gpg
RPM-GPG-KEY-redhat-release
rpm -k /PART/TO/PACKAGE_FILE
dsa,gpg:验证来源合法性,也验证签名
sha1,md5:验证软件包完整性;可以使用--nodigest,略过此项
rpm --import etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release:导入密钥文件