家园首页 Php4手册 我的相册 家园下载 个人文集 给我留言
我形我塑,网络相册,www.5x54.com 相册 相册 心情相册,少女相册 免费申请,我形我塑免费相册
 家园 个人文集   http://www.5x54.com
 


rpm命令详解(包的安装、删除、效验、查询)


作者:chinaunix.net    点击: 读取中...

安装软件包 (%$$402#^67)心情家园www.bbsdiy.net
rpm -i 包全名 (%$$402#^67)心情家园www.bbsdiy.net
删除 (%$$402#^67)心情家园www.bbsdiy.net
rpm -e name(不是包名) (%$$402#^67)心情家园www.bbsdiy.net
参数 (%$$402#^67)心情家园www.bbsdiy.net
-ivh 获得一个详细的安装进程 (%$$402#^67)心情家园www.bbsdiy.net
--nodeps 忽略依赖关系 (%$$402#^67)心情家园www.bbsdiy.net
--force 强制安装 (%$$402#^67)心情家园www.bbsdiy.net
-U 包名:升级安装 (%$$402#^67)心情家园www.bbsdiy.net
-F 更新不管是什么直接覆盖 (%$$402#^67)心情家园www.bbsdiy.net
--replacepkgs这样 RPM 将忽略该错误信息 -vih --replacepkgs (%$$402#^67)心情家园www.bbsdiy.net
-q name :查询 (%$$402#^67)心情家园www.bbsdiy.net
-qa查询所有已安装的RPM (%$$402#^67)心情家园www.bbsdiy.net
-qi name 查询这个软件详细信息 (%$$402#^67)心情家园www.bbsdiy.net
-ql 显示列表 (%$$402#^67)心情家园www.bbsdiy.net
-qf path :查询一个文件属于哪个包 (%$$402#^67)心情家园www.bbsdiy.net
-qp 包名 :查文件是什么 (%$$402#^67)心情家园www.bbsdiy.net
-qpl 包名 :针对一个没装过的包 (%$$402#^67)心情家园www.bbsdiy.net
rpm -qc 配置文件 (%$$402#^67)心情家园www.bbsdiy.net
效验 rpm -Va (%$$402#^67)心情家园www.bbsdiy.net
rpm -Vf /bin/ls (%$$402#^67)心情家园www.bbsdiy.net
rpm -Vp 包名 (%$$402#^67)心情家园www.bbsdiy.net
5 -- MD5 校验和 (%$$402#^67)心情家园www.bbsdiy.net
S -- 文件长度 (%$$402#^67)心情家园www.bbsdiy.net
L -- 符号链接 (%$$402#^67)心情家园www.bbsdiy.net
T -- 文件修改日期 (%$$402#^67)心情家园www.bbsdiy.net
D -- 设备 (%$$402#^67)心情家园www.bbsdiy.net
U -- 用户 (%$$402#^67)心情家园www.bbsdiy.net
G -- 用户组 (%$$402#^67)心情家园www.bbsdiy.net
M -- 模式 (包含许可和文件类型) (%$$402#^67)心情家园www.bbsdiy.net
? -- 不可读文件 (%$$402#^67)心情家园www.bbsdiy.net
    详细课程 (%$$402#^67)心情家园www.bbsdiy.net
使用 RPM (%$$402#^67)心情家园www.bbsdiy.net
RPM 有五个基本的操作 模式(不包括包的编译): 安装(%$$402#^67)心情家园www.bbsdiy.net,卸载(%$$402#^67)心情家园www.bbsdiy.net,升级(%$$402#^67)心情家园www.bbsdiy.net,查询(%$$402#^67)心情家园www.bbsdiy.net,校验。本节将对它们一一介绍。要了解完整的细节和选项(%$$402#^67)心情家园www.bbsdiy.net,可以使用 (%$$402#^67)心情家园www.bbsdiy.net
rpm --help, 或转到 the section called 其它 RPM 资源 得到更多关于 RPM 的信息。 (%$$402#^67)心情家园www.bbsdiy.net
1 安装 (%$$402#^67)心情家园www.bbsdiy.net
典型的 RPM 有着类似 foo-1.0-1.i386.rpm这样的名称, 其中指明了包名 (foo), 版本号 (1.0), 发行号 (1), 和硬件平台 (i386)。安装一个软件包只需简单的键入以下命令: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -ivh foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo           #################################### (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
正如您所看到的, RPM 将会打印出软件包的名字 ( 并不一定要与文件名相同, 可能是 1.rpm), 而后打印出一连串的 # 号以表示安装进度。 (%$$402#^67)心情家园www.bbsdiy.net
请注意 (%$$402#^67)心情家园www.bbsdiy.net
 尽管通常是使用 rpm -ivh foo-1.0-1.i386.rpm 来安装包, 但也可以用 rpm -Uvh (%$$402#^67)心情家园www.bbsdiy.net
foo-1.0-1.i386.rpm 来替代。 -U 是包升级参数, 也可以用来安装新包。参看 升级 有关RPM 中 -U 参数的详细使用情况。 (%$$402#^67)心情家园www.bbsdiy.net
软件包的安装设计非常简单, 但还是有可能发生以下错误: (%$$402#^67)心情家园www.bbsdiy.net
软件包已被安装 (%$$402#^67)心情家园www.bbsdiy.net
如果软件包已被安装, 会出现以下信息: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -ivh foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo          package foo-1.0-1 is already installed (%$$402#^67)心情家园www.bbsdiy.net
error: foo-1.0-1.i386.rpm cannot be installed (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
如果仍要安装该包, 可以在命令行中使用 --replacepkgs 选项, 这样 RPM 将忽略该错误信息: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -ivh --replacepkgs foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo           #################################### (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
文件冲突 (%$$402#^67)心情家园www.bbsdiy.net
如果要安装的软件包中有一个文件已在安装其它包时被安装(%$$402#^67)心情家园www.bbsdiy.net,会显示以下信息: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -ivh foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo     /usr/bin/foo conflicts with file from bar-1.0-1 (%$$402#^67)心情家园www.bbsdiy.net
error: foo-1.0-1.i386.rpm cannot be installed (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
要想让RPM 忽略该错误信息, 请使用 --replacefiles 命令行选项: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -ivh --replacefiles foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo           #################################### (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
未解决依赖关系 (%$$402#^67)心情家园www.bbsdiy.net
一个 RPM 包可能会 "依赖" 其它软件包, 也就是说要求在安装了特定的软件包之后才能安装该软件包。 如果在安装这个软件包时未解决这种存在的依赖关系, 会看到: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -ivh bar-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
failed dependencies: (%$$402#^67)心情家园www.bbsdiy.net
    foo is needed by bar-1.0-1 (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
只有先安装完所依赖的软件包(%$$402#^67)心情家园www.bbsdiy.net,才能解决这个问题。 如果想强制安装 (这不是个好办法(%$$402#^67)心情家园www.bbsdiy.net,因为安装后的软件包未必能正常运行), 可以使用 --nodeps 命令行选项。 (%$$402#^67)心情家园www.bbsdiy.net
3.2.2 卸载 (%$$402#^67)心情家园www.bbsdiy.net
卸载软件包就象安装软件包时一样简单: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -e foo (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
请注意 (%$$402#^67)心情家园www.bbsdiy.net
 注意这里使用软件包的 名字 "foo" , 而不是原始软件包的 文件名 "foo-1.0-1.i386.rpm"。卸载软件包时, 需要用原始包的实际文件名替换 foo 包名。 (%$$402#^67)心情家园www.bbsdiy.net
在卸载某个软件包时(%$$402#^67)心情家园www.bbsdiy.net,可能会发生依赖关系错误(%$$402#^67)心情家园www.bbsdiy.net,这说明其它包与此包之间有安装依赖关系。例如: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -e foo (%$$402#^67)心情家园www.bbsdiy.net
removing these packages would break dependencies: (%$$402#^67)心情家园www.bbsdiy.net
    foo is needed by bar-1.0-1 (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
要使 RPM 在卸载此包时忽略该错误 (这不是个好办法(%$$402#^67)心情家园www.bbsdiy.net,因为卸载后(%$$402#^67)心情家园www.bbsdiy.net,与它有依赖关系的软件包未必能正常运行), 使用 --nodeps 命令行选项。 (%$$402#^67)心情家园www.bbsdiy.net
3.2.3 升级 (%$$402#^67)心情家园www.bbsdiy.net
升级软件包和安装软件包十分类似。 (%$$402#^67)心情家园www.bbsdiy.net
# rpm -Uvh foo-2.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo           #################################### (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
RPM 将自动卸载已安装的老版本的 foo 软件包(%$$402#^67)心情家园www.bbsdiy.net,用户无法看到有关信息。事实上用户可能总是使用 -U 来安装软件包, 因为即便以往未安装过该软件包(%$$402#^67)心情家园www.bbsdiy.net,也能正常运行。 (%$$402#^67)心情家园www.bbsdiy.net
因为 RPM 执行智能化的软件包升级(%$$402#^67)心情家园www.bbsdiy.net,自动处理配置文件(%$$402#^67)心情家园www.bbsdiy.net,会显示如下信息: (%$$402#^67)心情家园www.bbsdiy.net
saving /etc/foo.conf as /etc/foo.conf.rpmsave (%$$402#^67)心情家园www.bbsdiy.net
这表示用户对配置文件的修改(%$$402#^67)心情家园www.bbsdiy.net,不一定能 "向上兼容" 该软件包中的配置文件。 因此(%$$402#^67)心情家园www.bbsdiy.net,RPM 会备份原始的文件(%$$402#^67)心情家园www.bbsdiy.net,再安装新文件。用户应当尽快解决这两个配置文件的不同之处(%$$402#^67)心情家园www.bbsdiy.net,以便系统能持续正常运行。 (%$$402#^67)心情家园www.bbsdiy.net
因为升级其实就是软件包的卸载与安装的综合,也可能会遇见那些操作中所可能发生的错误。 再有就是: 在使用 旧 版本的 RPM 软件包来升级新版本的软件时(%$$402#^67)心情家园www.bbsdiy.net,会产生以下信息: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -Uvh foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo  package foo-2.0-1 (which is newer) is already installed (%$$402#^67)心情家园www.bbsdiy.net
error: foo-1.0-1.i386.rpm cannot be installed (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
要使用 RPM 强行 "升级" , 请使用 --oldpackage 命令行参数: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -Uvh --oldpackage foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo           #################################### (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
3.2.4 更新 (%$$402#^67)心情家园www.bbsdiy.net
包的更新与包升级相似: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -Fvh foo-1.2-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo           #################################### (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
RPM 更新选项(%$$402#^67)心情家园www.bbsdiy.net,是检查命令行中指明的包版本与安装在系统中的包版本是否一致。 当 RPM (%$$402#^67)心情家园www.bbsdiy.net
更新选项处理完已安装包的新版本时(%$$402#^67)心情家园www.bbsdiy.net,该包会升级到新版本。 但是(%$$402#^67)心情家园www.bbsdiy.net,RPM 更新选项无法安装系统目前没有的软件包。 这与 RPM (%$$402#^67)心情家园www.bbsdiy.net
升级不同(%$$402#^67)心情家园www.bbsdiy.net,升级选项能够 安装软件包(%$$402#^67)心情家园www.bbsdiy.net,无论旧版本的包是否已安装。 (%$$402#^67)心情家园www.bbsdiy.net
RPM 更新选项可以很好的更新一个软件包或一组软件包。 如果用户下载了大量的软件包(%$$402#^67)心情家园www.bbsdiy.net,但只想升级系统中已有的包时(%$$402#^67)心情家园www.bbsdiy.net,RPM 更新选项会非常有用。 使用 RPM 更新选项意味着你无需从下载的包中挑挑拣拣(%$$402#^67)心情家园www.bbsdiy.net,也不用事先删除不要的包。 (%$$402#^67)心情家园www.bbsdiy.net
这种情况下, 只需简单的键入: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -Fvh *.rpm (%$$402#^67)心情家园www.bbsdiy.net
RPM 工具会自动升级那些已经安装好的包。 (%$$402#^67)心情家园www.bbsdiy.net
3.2.5 查询 (%$$402#^67)心情家园www.bbsdiy.net
使用命令 rpm -q来查询已安装软件包的数据库。简单的使用命令 rpm -q foo 会打印出foo软件包的包名、版本号和发行号: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -q foo (%$$402#^67)心情家园www.bbsdiy.net
foo-2.0-1 (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
除了指定包名以外(%$$402#^67)心情家园www.bbsdiy.net,用户还可以使用以下选项与 -q 连用(%$$402#^67)心情家园www.bbsdiy.net,来指明要查询哪些软件包的信息。这些选项被称之为 软件包指定选项 。 (%$$402#^67)心情家园www.bbsdiy.net
-a 查询所有已安装的软件包。 (%$$402#^67)心情家园www.bbsdiy.net
-f 将查询包含有文件 的软件包。 (%$$402#^67)心情家园www.bbsdiy.net
-p 查询软件包文件名为 的包。 (%$$402#^67)心情家园www.bbsdiy.net
有几种方式来指定查询软件包时所显示的信息。 以下选项可以出选择感兴趣的信息(%$$402#^67)心情家园www.bbsdiy.net,加以显示。这样的选项被称作 信息选择选项 。 (%$$402#^67)心情家园www.bbsdiy.net
-i 显示软件包信息(%$$402#^67)心情家园www.bbsdiy.net,如描述、发行号、大小、编译日期、安装日期、硬件平台、以及其它一些各类信息。 (%$$402#^67)心情家园www.bbsdiy.net
-l 列出软件包中包含的文件。 (%$$402#^67)心情家园www.bbsdiy.net
-s 显示软件包中所有文件的状态。 (%$$402#^67)心情家园www.bbsdiy.net
-d 列出被标注为文档的文件 (如(%$$402#^67)心情家园www.bbsdiy.net,man 手册、 info 信息、README(%$$402#^67)心情家园www.bbsdiy.net,等等) 。 (%$$402#^67)心情家园www.bbsdiy.net
-c 列出被标注为配置文件的文件。这些文件是需要在安装完毕后加以定制的(%$$402#^67)心情家园www.bbsdiy.net,如 (sendmail.cf, passwd, inittab, 等) 。 (%$$402#^67)心情家园www.bbsdiy.net
如果要在执行上述选项的同时(%$$402#^67)心情家园www.bbsdiy.net,显示文件列表, 可以同时使用 -v 命令行选项(%$$402#^67)心情家园www.bbsdiy.net,就能得出与 ls -l 格式类似的输出。 (%$$402#^67)心情家园www.bbsdiy.net
3.2.6 校验 (%$$402#^67)心情家园www.bbsdiy.net
包校验是比较自软件包中安装的文件信息和软件包中的原始文件的相同信息。 与其它校验相同(%$$402#^67)心情家园www.bbsdiy.net,包校验将比较文件的长度、MD5校验和、许可、类型、文件属主和群组。 (%$$402#^67)心情家园www.bbsdiy.net
使用 rpm -V 命令进行包校验。用户可以配合使用各个包选择选项 (%$$402#^67)心情家园www.bbsdiy.net,来列出校验包的查询结果。 简单地使用 rpm -V foo 可以校验 foo 包中原始安装时的所有文件。例如: (%$$402#^67)心情家园www.bbsdiy.net
校验包含特定文件的软件包: rpm -Vf /bin/vi (%$$402#^67)心情家园www.bbsdiy.net
校验所有已安装的软件包: rpm -Va (%$$402#^67)心情家园www.bbsdiy.net
用 RPM 包文件校验已安装的软件包: rpm -Vp foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
如果担心RPM数据库被破坏(%$$402#^67)心情家园www.bbsdiy.net,就可以使用这种方式加以校验。 (%$$402#^67)心情家园www.bbsdiy.net
如果校验结果一切正常(%$$402#^67)心情家园www.bbsdiy.net,将不会产生任何输出。如果有不一致的地方(%$$402#^67)心情家园www.bbsdiy.net,会显示出来。 输出格式是8位长字符串, "c" 用以指配置文件, (%$$402#^67)心情家园www.bbsdiy.net
接着是文件名。8位长字符(%$$402#^67)心情家园www.bbsdiy.net,每个代表一个文件属性与RPM数据库中记录的属性相比较的结果。"." (点) 表示测试通过。下面的字符代表某测试的失败: (%$$402#^67)心情家园www.bbsdiy.net
5 -- MD5 校验和 (%$$402#^67)心情家园www.bbsdiy.net
S -- 文件长度 (%$$402#^67)心情家园www.bbsdiy.net
L -- 符号链接 (%$$402#^67)心情家园www.bbsdiy.net
T -- 文件修改日期 (%$$402#^67)心情家园www.bbsdiy.net
D -- 设备 (%$$402#^67)心情家园www.bbsdiy.net
U -- 用户 (%$$402#^67)心情家园www.bbsdiy.net
G -- 用户组 (%$$402#^67)心情家园www.bbsdiy.net
M -- 模式 (包含许可和文件类型) (%$$402#^67)心情家园www.bbsdiy.net
? -- 不可读文件 (%$$402#^67)心情家园www.bbsdiy.net
如果有信息输出, 用户应当认真加以考虑(%$$402#^67)心情家园www.bbsdiy.net,是该删除、重新安装、还是修正出现的问题。 (%$$402#^67)心情家园www.bbsdiy.net
3.2 使用 RPM (%$$402#^67)心情家园www.bbsdiy.net
RPM 有五个基本的操作 模式(不包括包的编译): 安装(%$$402#^67)心情家园www.bbsdiy.net,卸载(%$$402#^67)心情家园www.bbsdiy.net,升级(%$$402#^67)心情家园www.bbsdiy.net,查询(%$$402#^67)心情家园www.bbsdiy.net,校验。本节将对它们一一介绍。要了解完整的细节和选项(%$$402#^67)心情家园www.bbsdiy.net,可以使用 (%$$402#^67)心情家园www.bbsdiy.net
rpm --help, 或转到 the section called 其它 RPM 资源 得到更多关于 RPM 的信息。 (%$$402#^67)心情家园www.bbsdiy.net
3.2.1 安装 (%$$402#^67)心情家园www.bbsdiy.net
典型的 RPM 有着类似 foo-1.0-1.i386.rpm这样的名称, 其中指明了包名 (foo), 版本号 (1.0), 发行号 (1), 和硬件平台 (i386)。安装一个软件包只需简单的键入以下命令: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -ivh foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo           #################################### (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
正如您所看到的, RPM 将会打印出软件包的名字 ( 并不一定要与文件名相同, 可能是 1.rpm), 而后打印出一连串的 # 号以表示安装进度。 (%$$402#^67)心情家园www.bbsdiy.net
请注意 (%$$402#^67)心情家园www.bbsdiy.net
 尽管通常是使用 rpm -ivh foo-1.0-1.i386.rpm 来安装包, 但也可以用 rpm -Uvh (%$$402#^67)心情家园www.bbsdiy.net
foo-1.0-1.i386.rpm 来替代。 -U 是包升级参数, 也可以用来安装新包。参看 升级一节 有关RPM 中 -U (%$$402#^67)心情家园www.bbsdiy.net
参数的详细使用情况。 (%$$402#^67)心情家园www.bbsdiy.net
软件包的安装设计非常简单, 但还是有可能发生以下错误: (%$$402#^67)心情家园www.bbsdiy.net
软件包已被安装 (%$$402#^67)心情家园www.bbsdiy.net
如果软件包已被安装, 会出现以下信息: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -ivh foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo          package foo-1.0-1 is already installed (%$$402#^67)心情家园www.bbsdiy.net
error: foo-1.0-1.i386.rpm cannot be installed (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
如果仍要安装该包, 可以在命令行中使用 --replacepkgs 选项, 这样 RPM 将忽略该错误信息: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -ivh --replacepkgs foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo           #################################### (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
文件冲突 (%$$402#^67)心情家园www.bbsdiy.net
如果要安装的软件包中有一个文件已在安装其它包时被安装(%$$402#^67)心情家园www.bbsdiy.net,会显示以下信息: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -ivh foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo     /usr/bin/foo conflicts with file from bar-1.0-1 (%$$402#^67)心情家园www.bbsdiy.net
error: foo-1.0-1.i386.rpm cannot be installed (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
要想让RPM 忽略该错误信息, 请使用 --replacefiles 命令行选项: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -ivh --replacefiles foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo           #################################### (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
未解决依赖关系 (%$$402#^67)心情家园www.bbsdiy.net
一个 RPM 包可能会 "依赖" 其它软件包, 也就是说要求在安装了特定的软件包之后才能安装该软件包。 如果在安装这个软件包时未解决这种存在的依赖关系, 会看到: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -ivh bar-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
failed dependencies: (%$$402#^67)心情家园www.bbsdiy.net
    foo is needed by bar-1.0-1 (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
只有先安装完所依赖的软件包(%$$402#^67)心情家园www.bbsdiy.net,才能解决这个问题。 如果想强制安装 (这不是个好办法(%$$402#^67)心情家园www.bbsdiy.net,因为安装后的软件包未必能正常运行), 可以使用 --nodeps 命令行选项。 (%$$402#^67)心情家园www.bbsdiy.net
3.2.2 卸载 (%$$402#^67)心情家园www.bbsdiy.net
卸载软件包就象安装软件包时一样简单: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -e foo (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
请注意 (%$$402#^67)心情家园www.bbsdiy.net
 注意这里使用软件包的 名字 "foo" , 而不是原始软件包的 文件名 "foo-1.0-1.i386.rpm"。卸载软件包时, 需要用原始包的实际文件名替换 foo 包名。 (%$$402#^67)心情家园www.bbsdiy.net
在卸载某个软件包时(%$$402#^67)心情家园www.bbsdiy.net,可能会发生依赖关系错误(%$$402#^67)心情家园www.bbsdiy.net,这说明其它包与此包之间有安装依赖关系。例如: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -e foo (%$$402#^67)心情家园www.bbsdiy.net
removing these packages would break dependencies: (%$$402#^67)心情家园www.bbsdiy.net
    foo is needed by bar-1.0-1 (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
要使 RPM 在卸载此包时忽略该错误 (这不是个好办法(%$$402#^67)心情家园www.bbsdiy.net,因为卸载后(%$$402#^67)心情家园www.bbsdiy.net,与它有依赖关系的软件包未必能正常运行), 使用 --nodeps 命令行选项。 (%$$402#^67)心情家园www.bbsdiy.net
3.2.3 升级 (%$$402#^67)心情家园www.bbsdiy.net
升级软件包和安装软件包十分类似。 (%$$402#^67)心情家园www.bbsdiy.net
# rpm -Uvh foo-2.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo           #################################### (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
RPM 将自动卸载已安装的老版本的 foo 软件包(%$$402#^67)心情家园www.bbsdiy.net,用户无法看到有关信息。事实上用户可能总是使用 -U 来安装软件包, 因为即便以往未安装过该软件包(%$$402#^67)心情家园www.bbsdiy.net,也能正常运行。 (%$$402#^67)心情家园www.bbsdiy.net
因为 RPM 执行智能化的软件包升级(%$$402#^67)心情家园www.bbsdiy.net,自动处理配置文件(%$$402#^67)心情家园www.bbsdiy.net,会显示如下信息: (%$$402#^67)心情家园www.bbsdiy.net
saving /etc/foo.conf as /etc/foo.conf.rpmsave (%$$402#^67)心情家园www.bbsdiy.net
这表示用户对配置文件的修改(%$$402#^67)心情家园www.bbsdiy.net,不一定能 "向上兼容" 该软件包中的配置文件。 因此(%$$402#^67)心情家园www.bbsdiy.net,RPM 会备份原始的文件(%$$402#^67)心情家园www.bbsdiy.net,再安装新文件。用户应当尽快解决这两个配置文件的不同之处(%$$402#^67)心情家园www.bbsdiy.net,以便系统能持续正常运行。 (%$$402#^67)心情家园www.bbsdiy.net
因为升级其实就是软件包的卸载与安装的综合,也可能会遇见那些操作中所可能发生的错误。 再有就是: 在使用 旧 版本的 RPM 软件包来升级新版本的软件时(%$$402#^67)心情家园www.bbsdiy.net,会产生以下信息: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -Uvh foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo  package foo-2.0-1 (which is newer) is already installed (%$$402#^67)心情家园www.bbsdiy.net
error: foo-1.0-1.i386.rpm cannot be installed (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
要使用 RPM 强行 "升级" , 请使用 --oldpackage 命令行参数: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -Uvh --oldpackage foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo           #################################### (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
3.2.4 更新 (%$$402#^67)心情家园www.bbsdiy.net
包的更新与包升级相似: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -Fvh foo-1.2-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
foo           #################################### (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
RPM 更新选项(%$$402#^67)心情家园www.bbsdiy.net,是检查命令行中指明的包版本与安装在系统中的包版本是否一致。 当 RPM (%$$402#^67)心情家园www.bbsdiy.net
更新选项处理完已安装包的新版本时(%$$402#^67)心情家园www.bbsdiy.net,该包会升级到新版本。 但是(%$$402#^67)心情家园www.bbsdiy.net,RPM 更新选项无法安装系统目前没有的软件包。 这与 RPM (%$$402#^67)心情家园www.bbsdiy.net
升级不同(%$$402#^67)心情家园www.bbsdiy.net,升级选项能够 安装软件包(%$$402#^67)心情家园www.bbsdiy.net,无论旧版本的包是否已安装。 (%$$402#^67)心情家园www.bbsdiy.net
RPM 更新选项可以很好的更新一个软件包或一组软件包。 如果用户下载了大量的软件包(%$$402#^67)心情家园www.bbsdiy.net,但只想升级系统中已有的包时(%$$402#^67)心情家园www.bbsdiy.net,RPM 更新选项会非常有用。 使用 RPM 更新选项意味着你无需从下载的包中挑挑拣拣(%$$402#^67)心情家园www.bbsdiy.net,也不用事先删除不要的包。 (%$$402#^67)心情家园www.bbsdiy.net
这种情况下, 只需简单的键入: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -Fvh *.rpm (%$$402#^67)心情家园www.bbsdiy.net
RPM 工具会自动升级那些已经安装好的包。 (%$$402#^67)心情家园www.bbsdiy.net
3.2.5 查询 (%$$402#^67)心情家园www.bbsdiy.net
使用命令 rpm -q来查询已安装软件包的数据库。简单的使用命令 rpm -q foo 会打印出foo软件包的包名、版本号和发行号: (%$$402#^67)心情家园www.bbsdiy.net
# rpm -q foo (%$$402#^67)心情家园www.bbsdiy.net
foo-2.0-1 (%$$402#^67)心情家园www.bbsdiy.net
# (%$$402#^67)心情家园www.bbsdiy.net
除了指定包名以外(%$$402#^67)心情家园www.bbsdiy.net,用户还可以使用以下选项与 -q 连用(%$$402#^67)心情家园www.bbsdiy.net,来指明要查询哪些软件包的信息。这些选项被称之为 软件包指定选项 。 (%$$402#^67)心情家园www.bbsdiy.net
-a 查询所有已安装的软件包。 (%$$402#^67)心情家园www.bbsdiy.net
-f 将查询包含有文件 的软件包。 (%$$402#^67)心情家园www.bbsdiy.net
-p 查询软件包文件名为 的包。 (%$$402#^67)心情家园www.bbsdiy.net
有几种方式来指定查询软件包时所显示的信息。 以下选项可以出选择感兴趣的信息(%$$402#^67)心情家园www.bbsdiy.net,加以显示。这样的选项被称作 信息选择选项 。 (%$$402#^67)心情家园www.bbsdiy.net
-i 显示软件包信息(%$$402#^67)心情家园www.bbsdiy.net,如描述、发行号、大小、编译日期、安装日期、硬件平台、以及其它一些各类信息。 (%$$402#^67)心情家园www.bbsdiy.net
-l 列出软件包中包含的文件。 (%$$402#^67)心情家园www.bbsdiy.net
-s 显示软件包中所有文件的状态。 (%$$402#^67)心情家园www.bbsdiy.net
-d 列出被标注为文档的文件 (如(%$$402#^67)心情家园www.bbsdiy.net,man 手册、 info 信息、README(%$$402#^67)心情家园www.bbsdiy.net,等等) 。 (%$$402#^67)心情家园www.bbsdiy.net
-c 列出被标注为配置文件的文件。这些文件是需要在安装完毕后加以定制的(%$$402#^67)心情家园www.bbsdiy.net,如 (sendmail.cf, passwd, inittab, 等) 。 (%$$402#^67)心情家园www.bbsdiy.net
如果要在执行上述选项的同时(%$$402#^67)心情家园www.bbsdiy.net,显示文件列表, 可以同时使用 -v 命令行选项(%$$402#^67)心情家园www.bbsdiy.net,就能得出与 ls -l 格式类似的输出。 (%$$402#^67)心情家园www.bbsdiy.net
3.2.6 校验 (%$$402#^67)心情家园www.bbsdiy.net
包校验是比较自软件包中安装的文件信息和软件包中的原始文件的相同信息。 与其它校验相同(%$$402#^67)心情家园www.bbsdiy.net,包校验将比较文件的长度、MD5校验和、许可、类型、文件属主和群组。 (%$$402#^67)心情家园www.bbsdiy.net
使用 rpm -V 命令进行包校验。用户可以配合使用各个包选择选项 (%$$402#^67)心情家园www.bbsdiy.net,来列出校验包的查询结果。 简单地使用 rpm -V foo 可以校验 foo 包中原始安装时的所有文件。例如: (%$$402#^67)心情家园www.bbsdiy.net
校验包含特定文件的软件包: rpm -Vf /bin/vi (%$$402#^67)心情家园www.bbsdiy.net
校验所有已安装的软件包: rpm -Va (%$$402#^67)心情家园www.bbsdiy.net
用 RPM 包文件校验已安装的软件包: rpm -Vp foo-1.0-1.i386.rpm (%$$402#^67)心情家园www.bbsdiy.net
如果担心RPM数据库被破坏(%$$402#^67)心情家园www.bbsdiy.net,就可以使用这种方式加以校验。 (%$$402#^67)心情家园www.bbsdiy.net
如果校验结果一切正常(%$$402#^67)心情家园www.bbsdiy.net,将不会产生任何输出。如果有不一致的地方(%$$402#^67)心情家园www.bbsdiy.net,会显示出来。 输出格式是8位长字符串, "c" 用以指配置文件, (%$$402#^67)心情家园www.bbsdiy.net
接着是文件名。8位长字符(%$$402#^67)心情家园www.bbsdiy.net,每个代表一个文件属性与RPM数据库中记录的属性相比较的结果。"." (点) 表示测试通过。下面的字符代表某测试的失败: (%$$402#^67)心情家园www.bbsdiy.net
5 -- MD5 校验和 (%$$402#^67)心情家园www.bbsdiy.net
S -- 文件长度 (%$$402#^67)心情家园www.bbsdiy.net
L -- 符号链接 (%$$402#^67)心情家园www.bbsdiy.net
T -- 文件修改日期 (%$$402#^67)心情家园www.bbsdiy.net
D -- 设备 (%$$402#^67)心情家园www.bbsdiy.net
U -- 用户 (%$$402#^67)心情家园www.bbsdiy.net
G -- 用户组 (%$$402#^67)心情家园www.bbsdiy.net
M -- 模式 (包含许可和文件类型) (%$$402#^67)心情家园www.bbsdiy.net
? -- 不可读文件 (%$$402#^67)心情家园www.bbsdiy.net
如果有信息输出, 用户应当认真加以考虑(%$$402#^67)心情家园www.bbsdiy.net,是该删除、重新安装、还是修正出现的问题。

收藏此文章     打印  更新     编辑此文章    『关闭窗口』