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 onerpm -U --prefix /new/directory package.rpm --prefix instruct RPM to install pkg in a new locationrpm -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 verboserpm -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 查询触发指定脚本的包