0.
--------------------------------------------------
draft mostly come from [http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/index.html]
1.RPM文件格式
--------------------------------------------------
RPM包文件包含四节。第一节负责标记文件为一个RPM包。
剩余的分别是:signature、header和payload。
signature
签名负责校验包的完整性。通常用PGP或者MD5算法对包
头部和数据部分计算一个数学值
header
头部包含包的一些标签数据,包括:版权、版本、摘要等
payload
此节包含包的实际文件,文件通常会被压缩
RPM安装包的流程:
1.校验包
检查依赖包是否已经安装,检查是否已经安装或者版本太旧
2.安装前工作
3.解压文件并移动到合适的地方
4.安装后工作
5.更新RPM数据库
2.常用命令
--------------------------------------------------
rpm -ivh eruby-devel-0.9.8-2.i386.rpm
-i install
-v verbose
-h hash(human-readable)
rpm -Uvh eruby-devel-0.9.8-2.i386.rpm
-U update erase older-version package and install the new one
rpm -U --prefix /new/directory package.rpm
--prefix instruct RPM to install pkg in a new location
rpm -U --excludepath /usr/lib eruby-devel-0.9.8-2.i386.rpm
--excludepath 更新包里的文件时,跳过excludepath里的文件
rpm -U --oldpackage eruby-devel-0.9.8-2.i386.rpm
--oldpackage RPM通常不允许安装低版本的软件,除非你指定这个选项
--force 可以同时打开 --replacepkgs --replacefiles --oldpackages选项
rpm -U --nodeps eruby-devel-0.9.8-2.i386.rpm
强迫RPM忽略依赖关系的解决,直接安装软件
rpm -U --test eruby-devel-0.9.8-2.i386.rpm
测试依赖软件是否已经都得到解决
rpm -e package_name
删除一个包
rpm -q pck-name
查询RPM数据库某个包是否安装
-qa 可以查询系统所有已经安装的包,支持通配符查询
rpm -qi package
查询一个包的描述性信息包括:版本、安装日期、大小、概述等
rpm -qf filename
查询某个文件归哪个包所有
rpm -qlv package
查询包中的所有文件
-l list
-v verbose
rpm -qc package
查询一个包的配置文件
rpm -qd package
查询一个包的文档
rpm -qs package
查询一个包中所有文件的当前状态:正常或者未安装
rpm -q --scripts package
RPM包包含安装前后,卸载前后的脚本
--scripts可以列出包里的这些脚本
rpm -qa --last | head
按时间倒序列出所有的安装文件
rpm -qa --queryformat "%{NAME}\n"
格式化查询所有的RPM包
NAME 包名
VERSION 版本号
RELEASE release版本号
SUMMARY 概述
DESCRIPTION 描述性信息
BUILDTIME 安装时间
BUILDHOST
SIZE 安装文件大小
LICENSE 许可证
GROUP
OS
ARCH
SOURCERPM
CHANGLOGTIME
CHANGELOGNAME
CHANGELOGTEXT
PREIN 安装前脚本
POSTIN 安装后脚本
PREUN 卸载前脚本
POSTUN 卸载后脚本
PLATFORM 平台
rpm -q --qf "[%{REQUIRENAME}%{REQUIREFLAGS:depflags}%{REQUIREVERSION}\n]" sendmail
列出一个包的所有依赖文件
@用--test命令貌似完全足矣@
rpm -q query_options --requires packages
查询一个包的依赖
rpm -q query_options --provides packages
查询一个包可以提供的能力(capabilities)
rpm -q query_options --conflicts packages
查询与一个包冲突的包
rpm -q query_options --whatrequires capability
rpm -q --whatrequires tcsh
查询哪个包依赖于某个能力
rpm -q --whatprovides capability
查询哪个包提供了某种能力
@可以与wahtrequires结合解决依赖@
rpm -q --triggers sendmail
查询一个包在安装和卸载时将会触发的运行脚本
rpm -q --triggeredby glibc
查询触发指定脚本的包