RPM usage

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
  查询触发指定脚本的包
posted @ 2012-11-24 15:07  buaaspy  阅读(331)  评论(0编辑  收藏  举报