1. rpm 常用命令
安装包 -ivh
升级包 -Uvh
移走包 -e
查询包 -q
得到包信息 -qi
列出该包中文件 -ql
查询文件属于什么包 -qf
综合参数 -qil
列出所有安装的包 -qa
列出未安装包类容 -qpl
2. RPM中文手册
安装
删除
升级
查询
校验已安装的软件包
校验软件包中的文件
其它RPM选项
3. 系统的rpm宏
查询宏定义值
—qf
详细用法
查询

1. rpm 常用命令

安装包 -ivh

[root@localhost ~]# rpm -ivh /mnt/a/yum/fedora/packages/wget-1.11.4-1.fc10.i386.rpm
warning: /mnt/a/yum/fedora/packages/wget-1.11.4-1.fc10.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4ebfc273
Preparing...                ########################################### [100%]
   1:wget                   ########################################### [100%]

升级包 -Uvh

rpm -Uvh

移走包 -e

rpm -e

查询包 -q

[root@localhost ~]# rpm -q wget
wget-1.11.4-1.fc10.i386

得到包信息 -qi

[root@localhost ~]# rpm -qi wget
Name        : wget                         Relocations: (not relocatable)
Version     : 1.11.4                            Vendor: Fedora Project
Release     : 1.fc10                        Build Date: 2008年08月13日 星期三 20时53分38秒
Install Date: 2009年03月11日 星期三 10时40分50秒      Build Host: x86-7
...

列出该包中文件 -ql

[root@localhost ~]# rpm -ql wget
/etc/wgetrc
/usr/bin/wget
/usr/share/doc/wget-1.11.4
/usr/share/doc/wget-1.11.4/AUTHORS
...

查询文件属于什么包 -qf

[root@localhost ~]# rpm -qf /bin/ls
coreutils-6.12-17.fc10.i386

综合参数 -qil

很多参数可以一起使用,例如下例查询软件包的信息,再列出包包含的文件。

[root@localhost ~]# rpm -qil coreutils
Name        : coreutils                    Relocations: (not relocatable)
Version     : 6.12                              Vendor: Fedora Project
Release     : 17.fc10                       Build Date: 2008年11月03日 星期一 19时13分01秒
...
/bin/arch
/bin/basename
/bin/cat
/bin/chgrp
/bin/chmod
...

列出所有安装的包 -qa

[root@localhost ~]# rpm -qa|head
ca-certificates-2008-7.noarch
basesystem-10.0-1.noarch
ncurses-base-5.6-20.20080927.fc10.i386
rhino-1.6-0.1.r5.1.3.fc10.noarch
ql2400-firmware-4.04.04-1.fc10.noarch
ipw2100-firmware-1.3-8.noarch
words-3.0-13.fc10.noarch
popt-1.13-4.fc10.i386
freetype-2.3.7-1.fc10.i386
nss-3.12.2.0-3.fc10.i386

列出未安装包类容 -qpl

[root@localhost ~]# rpm -qpl /root/firefox-3.0.6-1.fc10.src.rpm
find-external-requires
firefox-3.0.6-source.tar.bz2
firefox-langpacks-3.0.6-20090204.tar.bz2
firefox-mozconfig
firefox-mozconfig-branded
firefox-redhat-default-prefs.js
firefox.1
firefox.desktop
firefox.png
firefox.sh.in
firefox.spec

2. RPM中文手册

安装

rpm -i ( or --install) [选项] file1.rpm ... fileN.rpm
-h (or --hash) 安装时输出hash记号 (``#'')
--test         只对安装进行测试,并不实际安装。
--percent      以百分比的形式输出安装的进度。
--excludedocs  不安装软件包中的文档文件
--includedocs  安装文档
--replacepkgs  强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force        忽略软件包及文件的冲突
--noscripts    不运行预安装和后安装脚本

--prefix 将软件包安装到由prefix后面指定的路径下
         这里只有可以relocatable包,用“rpm -qi/-qpi”查询包是否可以。

--ignorearch 不校验软件包的结构
--ignoreos   不检查软件包运行的操作系统
--nodeps     不检查依赖性关系
--ftpproxy   用作为FTP代理
--ftpport    指定FTP的端口号为
-v       显示附加信息
-vv      显示调试信息
--root   让RPM将指定的路径做为"根目录",这样预安装程序和
         后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为

删除

rpm -e ( or --erase) [选项] pkg1 ... pkgN
--test      只执行删除的测试
--noscripts 不运行预安装和后安装脚本程序
--nodeps    不检查依赖性
-vv      显示调试信息
--root   让RPM将指定的路径做为"根目录",这样预安装程序和
         后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为

升级

rpm -U ( or --upgrade) [选项] file1.rpm ... fileN.rpm
-h (or --hash) 安装时输出hash记号 (``#'')
--oldpackage   允许"升级"到一个老版本
--test         只进行升级测试
--excludedocs  不安装软件包中的文档文件
--includedocs  安装文档
--replacepkgs  强制重新安装已经安装的软件包
--replacefiles 替换属于其它软件包的文件
--force        忽略软件包及文件的冲突
--percent      以百分比的形式输出安装的进度。
--noscripts    不运行预安装和后安装脚本
--prefix       将软件包安装到由 指定的路径下
--ignorearch   不校验软件包的结构
--ignoreos     不检查软件包运行的操作系统
--nodeps       不检查依赖性关系
--ftpproxy     用作为 FTP代理
--ftpport      指定FTP的端口号为
-v 显示附加信息
-vv 显示调试信息
--root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下
--rcfile 设置rpmrc文件为
--dbpath 设置RPM 资料库存所在的路径为

查询

命令格式:

rpm -q ( or —query) options

参数:

pkg1 ... pkgN :查询已安装的软件包

详细选项

-p (or ``-'') 查询软件包的文件 -f 查询属于哪个软件包 -a 查询所有安装的软件包 —whatprovides 查询提供了 功能的软件包 -g 查询属于 组的软件包 —whatrequires 查询所有需要 功能的软件包

信息选项

显示软件包的全部标识 -i 显示软件包的概要信息 -l 显示软件包中的文件列表 -c 显示配置文件列表 -d 显示文档文件列表 -s 显示软件包中文件列表并显示每个文件的状态 —scripts 显示安装、卸载、校验脚本 —queryformat (or —qf) 以用户指定的方式显示查询信息 —dump 显示每个文件的所有已校验信息 —provides 显示软件包提供的功能 —requires (or -R) 显示软件包所需的功能

通用选项

-v 显示附加信息 -vv 显示调试信息 —root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下 —rcfile 设置rpmrc文件为 —dbpath 设置RPM 资料库存所在的路径为

校验已安装的软件包

命令格式:

rpm -V ( or —verify, or -y) options

参数

pkg1 ... pkgN 将要校验的软件包名

软件包选项

-p Verify against package file -f 校验所属的软件包 -a Verify 校验所有的软件包 -g 校验所有属于组 的软件包

详细选项

—noscripts 不运行校验脚本 —nodeps 不校验依赖性 —nofiles 不校验文件属性

通用选项

-v 显示附加信息 -vv 显示调试信息 —root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下 —rcfile 设置rpmrc文件为 —dbpath 设置RPM 资料库存所在的路径为

校验软件包中的文件

语法:

rpm -K ( or —checksig) options file1.rpm ... fileN.rpm

参数:

file1.rpm ... fileN.rpm 软件包的文件名

Checksig—详细选项

—nopgp 不校验PGP签名

通用选项

-v 显示附加信息 -vv 显示调试信息 —rcfile 设置rpmrc文件为

其它RPM选项

—rebuilddb 重建RPM资料库 —initdb 创建一个新的RPM资料库 —quiet 尽可能的减少输出 —help 显示帮助文件 —version 显示RPM的当前版本 附录: 台湾Linux方面高手VBird(鸟哥)所写<<RPM 與 SRPM 套件管理>> http://linux.ournb.net/index/article.php/310

3. 系统的rpm宏

查询宏定义值

rpm --eval %{_topdir}
rpm --eval %{_arch}

—qf

%{n},%{v},%{r} 是nvr。

rpm -qa --qf="%{n}-%{v}-%{r}\n"

详细用法

查询

参考: http://www.rpm.org/max-rpm/s1-rpm-query-parts.html

# rpm -qp --qf '[%{FILEUSERNAME} %{FILEGROUPNAME} %{FILENAMES}\n]' /dist/gtes11.3/rhel/GeoIP-1.4.7-0.1.20090931cvs.el5.src.rpm
mockbuild mockbuild GeoIP-1.4.6.tar.gz
mockbuild mockbuild GeoIP.spec
mockbuild mockbuild LICENSE.txt
mockbuild mockbuild README.Fedora
mockbuild mockbuild fetch-geoipdata-city.pl
mockbuild mockbuild fetch-geoipdata.pl
mockbuild mockbuild geoip-1.4.6-ipv6.patch

rpm 的 -p 选项决定查询未安装的包还是已安装的包:

# rpm -q --qf '[%{FILEUSERNAME} %{FILEGROUPNAME} %{FILENAMES}\n]' GeoIP
root root /etc/GeoIP.conf
root root /etc/GeoIP.conf.default
root root /usr/bin/geoiplookup
root root /usr/bin/geoiplookup6
root root /usr/bin/geoipupdate
root root /usr/lib64/libGeoIP.so.1
root root /usr/lib64/libGeoIP.so.1.4.6
root root /usr/lib64/libGeoIPUpdate.so.0

其中 —qf 是 —queryformat 的缩写,查询的格式字符串非特殊字符直接输出:

# rpm -q --qf '%{NAME} | %{VERSION} | %{RELEASE}\n' bash
bash | 3.2 | 24

而且还能这样:

# rpm -q --qf '%{NAME} | %20{VERSION} | %{RELEASE}\n' bash
bash |                  3.2 | 24
[root@builder4-x86 kvm]# rpm -q --qf '%{NAME} | %-20{VERSION} | %{RELEASE}\n' bash
bash | 3.2                  | 24