AIX程序包原理及linux RPM包
一. AIX程序包原理
1. 原理
2. 文件集(fileset)命名规则
Fileset这种命名格式基本上描述了此文件集的内容和层次关系,方便管理员查看和管理
3. 文件集(fileset)的版本号
Version和Release版本号的升级是需要购买,而后面两个版本号的升级可以到IBM网址免费下载;每个fileset都有各自的版本号,操作系统也有它的版本号
4. 软件包的两种安装状态Applied和 Committed
- 旧版本的软件升级后处于 applied状态,系统使用的是新的版本,旧的版本并没有被删除
- 执行commit动作后,旧的版本被删除,软件包就处于committed状态了;执行reject动作,新的版本被删除,系统仍用旧的版本
- 软件包的升级,为了应用安全运行,先让新软件包处于applied状态试运行一阵后再commit;如果安装一个新的软件包,就直接committed
二. linux RPM包
1. 介绍
- RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写
- 这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了
- 一个RPM包文件是能够让应用软件运行的全部文件的一个集合,它记录了二进制软件的内容、安装的位置、软件包的描述信息、软件包之间的依赖关系等信息
2. RPM的体系结构
3. 基本命令
3.1. rpm的安装、升级、刷新
```
基本语法:
rpm -i package-filename.rpm (install)
rpm -F package-filename.rpm (freshen)
rpm -U package-filename.rpm (upgrade)
选项:
-v 表示可以输出详细信息
-h 在安装过程中打印50个“#”符号,表示安装进度
```
例如:安装软件包package-10.2-67.i386.rpm
# rpm -ihv package-10.2-67.i386.rpm
package: ########################################
3.2. rpm包的删除
```
基本语法:
rpm -e package-filename
选项:
--nodeps 忽略包的依赖提示
```
例如:删除包 kdelibs3
如果使用以下命令将忽略包的依赖提示
#rpm -e --nodeps kdelibs3
3.3. rpm的查询
查询已安装RPM的内容:
基本语法:
rpm -q package-name
选项:
-q 一个包是否被安装
-a 查询所有安装的RPM
-f <file> 查询拥有某文件的RPM
-p <package-file> 查询包文件
-i 显示包的信息
-l 信息包文件的信息
-s 显示所有文件的状态
-d 显示文档文件
-c 显示配置文件
3.4. rpm的校验
- RPM的校验功能可以用来确认文件是否被修改或覆盖
基本语法:
#rpm -V package_name_to_verify
参数:
-V 检查与某一RPM包相关所有文件的完整性
例子1:检查sendmail的相关文件的完整性
#rpm -V sendmail
S.5....T c /etc/aliases
missing /etc/mail/ip_allow
S.5....T c /etc/mail/relay_allow
S.5....T c /etc/sendmail.cf
S.5....T c /etc/sendmail.cw
S.5....T /usr/sbin/sendmail
S.5....T /var/log/sendmail.st
解释:只有校验失败的文件才被列出,没有列出的文件应该是完好无损的。输出的内容给出了为什 么校验失败的原因,具体解释如下:
- S = 大小改变
- M = 权限改变
- L = 连接改变
- D = 设备改变
- U = 用户改变
- G = 组改变
- T = 日期和时间改变
- missing = 文件丢失
例子2:挨个检查软件包很费时间,用“-a”选项可以一次性检查所有RPM包
#rpm -Va > /root/rpm_chk.txt &
- 这条命令让RPM检查服务器上安装的RPM包,结果输出到rpm_chk.txt文件,最后的可选项“&”表示命令在后台运行,给出shell提示符可以作其他事情
例子3:检查某个文件而不知道它属于哪个RPM包,可以用“-qf”选 项查看哪个软件包安装了此文件
# rpm -qf /usr/sbin/sendmail
sendmail-8.8.7-20
如果一个文件没有关联 的RPM包
# rpm -qf /sbin/.vile_stuff
file /sbin/.vile_stuff is not owned by any package