当前位置

12.1 使用RPM进行软件包管理

主标签


rpm是Red Hat Linux发行版专门用来管理Linux软件包的程序,由于它遵循GPL规则且功能强大,使用方便,因此已被多种版本的Linux使用,并逐渐成为Linux软件包管理的事实标准。

下面以一个典型的RPM文件为例讲解RPM文件的安装及卸载
[list][*]文件名称:software-1.2.3-1.i386.rpm
[*]软件名称:software
[*]版本号:1.2.3
[*]修正版本:1
[*]可用平台:i386,适用于Intel 80x86平台。
[*]类型:rpm,说明是一个rpm包。[/list]

注:i386、i486、i586、i686代表Intel兼容cpu的平台,athlon代表AMD兼容cpu的平台,noarch代表可以在任何平台下执行。

rpm最常用的命有:

1、安装软件,执行rpm -ivh rpm包名

#rpm -ivh software-1.2.3-1.i386.rpm 

2、升级软件:执行rpm -Uvh rpm包名

#rpm -Uvh software-1.2.3-1.i386.rpm

3、卸载软件:执行rpm -e rpm包名

#rpm -e software-1.2.3-1.i386.rpm

4、强行安装软件:执行rpm -ivh rpm包名 --force

#rpm -ivh software-1.2.3-1.i386.rpm --force

5、查询软件包在系统中的注册名称

#rpm -qa |grep software

6、查询软件包的详细信息:执行rpm -qpi rpm包名

#rpm -qpi software-1.2.3-1.i386.rpm

7、查询某个文件是属于那个rpm包的:执行rpm -qf rpm包名

#rpm -qf software-1.2.3-1.i386.rpm

8、查该软件包会向系统里面写入哪些文件:执行 rpm -qpl rpm包名

#rpm -qpl software-1.2.3-1.i386.rpm


有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法。

方法一:[list=1]
[*]执行rpm -ivh software-1.2.3-1.src.rpm
[*]cd /usr/src/MagicLinux/SPECS
[*]rpm -bb software-1.2.3-1.specs 一个和你的软件包同名的specs文件
[*]cd /usr/src/MagicLinux/i386
[*]rpm -ivh software-1.2.3-1.i386.rpm[/list]

方法二:[list=1]
[*]执行rpmbuild --rebuild --target=i386 software-1.2.3-1.src.rpm
[*]cd /usr/src/MagicLinux/RPMS/i386
[*]rpm -ivh software-1.2.3-1.i386.rpm[/list]

常用参数和选项:
[list][*]-a 查询所有的软件包

[*]-b<完成阶段><软件包>+或-t<完成阶段><软件包>+ 设置包装软件包的完成阶段,并指定软件包的名称。完成阶段有:p、l、c、i、b和a共6种,分别代表解开源代码并修补文件、仅执行概要文件确认、编译(包含解开源代码与修补文件)、安装(包含编译)、二进制文件软件包(包含安装),以及二进制文件与源代码的软件包(包含安装)。
[*]-c  只列出程序的配置文件,必须与-l参数同时使用。
[*]-d 只列出文件,必须配合-l参数使用。
[*]-e<软件包>或--erase<软件包>  删除指定的软件包。
[*]-f<文件>+ 查询拥有指定文件的软件包
[*]-h或――hash 软件包安装时列出标记。
[*]-I 显示软件包的相关信息。
[*]-I<软件包>或――install<软件包> 安装指定软件包
[*]-l 显示软件包的文件列表
[*]-p<软件包>+ 查询指定的RPM软件包。
[*]-q 使用确认模式,当遇到问题时要求用户确认
[*]-R 显示软件包的依赖关于信息。
[*]-s 显示文件状态,必须配合-l参数使用。
[*]-U<软件包>或――upgrade<软件包> 升级指定的软件包
[*]-v 显示命令执行过程。
[*]-vv 详细显示命令执行过程
[*]――addsign<软件包>+ 在指定的软件包中加上新的签名认证。
[*]――allfiles 安装所有文件。
[*]――allmatches 删除指定软件包所包含的文件。
[*]――badreloc 出错时重新配置文件。
[*]――buildroot<根目录> 设置产生软件包的根目录
[*]――changelog 显示软件包的更改记录
[*]――checksig<软件包>+ 检验指定软件包的签名认证。
[*]――clean 完成软件包的包装后,删除包装过程中所建立的目录
[*]――dbpath<数据库目录> 设置存放RPM数据库的目录。
[*]――dump 显示每个文件的验证信息。须配合-l参数使用。
[*]――excludedocs 安装软件包时不安装的文件。
[*]――excludepath<排除目录> 忽略指定目录里的所有文件。
[*]――force 强行更换软件包或文件。
[*]――ftpproxy<主机名或IP地址> 指定FTP代理服务器。
[*]――ftpport<通信端口> 设置FTP服务器或代理服务器使用的通信端口。
[*]――help 显示在线帮助信息。
[*]――httpproxy<主机名或IP地址> 指定HTTP代理服务器。
[*]――httpport<通信端口> 设置HTTP服务器或代理服务器使用的通信端口。
[*]――ignorearch或――ignoreos 不验证软件包的结构正确性。
[*]――ignoresize 安装前不检查磁盘空间是否够用。
[*]――includedocs 安装套件时,同时安装文件。
[*]――initdb 确认有正确、可用的数据库。
[*]――justdb 更新数据库,但不变动任何文件。
[*]――nobuild 不执行任何完成阶段
[*]――nodeps 不验证软件包的依赖关系。
[*]――nofiles 不验证文件的属性。
[*]――nogpg 略过所有GPG(GNU Privacy Guard)签名认证。
[*]――nomd5 不使用MD5编码算法确认文件的大小与正确性。
[*]--nopgp 略过所有PGP(Pretty Good Privacy)的签名认证。
[*]――noorder 不重新编排软件包的安装顺序,以便满足其彼此间的依赖关系。
[*]――noscripts 不执行任何安装脚本文件。
[*]――notriggers 不执行该软件包内的任何脚本文件。
[*]――oldpackage 升级成旧版本的软件包。
[*]――percent 安装软件时显示完成百分比。
[*]――pipe<执行命令> 建立管理,把输出结果转为指定命令的输入数据。
[*]――prefix<目的目录> 把新的配置文件放到指定目录下。
[*]――provides 查询该软件包所提供的兼容性。
[*]――queryformat<软件包> 设置包头格式。包头格式分有name、version和description3种,必须与参数-l使用。
[*]――querytags 列出可用于包头格式的标签。
[*]――rcfile<配置文件> 指定配置文件,默认配置文件为/etc或用户主目录下的rpmrc或.rpmrc。
[*]――rebuild<软件包> 安装源代码软件包,重新产生二进制文件的软件包。
[*]――rebuilddb 以现有数据库为主,重新一份数据库。
[*]――recompile<软件包> 同――rebuild参数,但不产生软件包。
[*]――relocate<原目录>=<新目录> 把本来存放原目录下的文件改放到新目录中。
[*]――replacefiles 强行置换文件。
[*]――replacepkgs 强行置换软件包。
[*]――requires 查询该软件包所需的兼容度。
[*]――resign<套件档>+ 重新产生签名认证,并删除现有认证。
[*]――rmsource 完成软件包装后,删除源代码。
[*]――rmsource<文件> 删除源代码和指定文件。
[*]――root<根目录> 设置作为根目录的目录。
[*]――scripts 列出安装软件包的脚本变量。
[*]――setperms 设置文件的权限。
[*]――setugids 设置文件的所有者和所属组。
[*]――short-circuit 直接略过指定完成阶段的步骤。
[*]――sign 产生PGP或GPG的签名认证。
[*]――target=<安装平台>+ 设置产生软件包的安装平台。
[*]――test 仅作测试,不实际安装软件包。
[*]――timecheck<检查秒数> 设置检查时间的计时秒数。
[*]――triggeredby<软件包> 查询该软件包的包装者。
[*]――triggers 展示软件包内的包装脚本
[*]――verify 同-q参数相同。
[*]――version 显示版本信息。
[*]――whatprovides<功能特性> 查询软件包对指定功能特性所提供的兼容性。
[*]――whatrequires<功能特性> 查询该软件包对指定功能特性所提供的兼容度。[/list]

评论

建议把语法部分简化,大部分用户参数都是用不到的。
用户手册尽量简单明了,以例子为主。如解释以下几条常用命令:
rpm -U --force xxx.rpm
rpm -Uvh xxx.rpm
rpm -ql|grep k3b*