RPM
RPM 介绍
RPM Package Manager (原来被称为"Red Hat Package Manager")是一套在Linux下广泛使用的包管理系统。RPM能够进行安装、更新、卸载、检查和查询软件等等的操作。Linux Standard Base标准指定RPM为基本的包管理软件。RPM最初是由Red Hat公司开发的,现在已经在应用很多主流的Linux发行版上使用。
安装RPM软件包
安装二进制RPM包
rpm软件包的安装可以使用程序rpm来完成。执行下面的命令:
rpm -i your-package.rpm
其中your-package.rpm是你要安装的rpm包的文件名,一般置于当前目录下。
安装过程中可能出现以下一些关于依赖关系的警告或提示:
| ... conflict with ... | 要安装的包和系统内已安装的包有冲突。 |
| ... is needed by ... | 要安装的包和系统内已安装的包有冲突。 |
| ... is not installed ... | 在您的系统上没有找到要安装的包所依赖的软件包。 |
安装SRPM软件包
SRPM(Source RPM)是只包含源代码的RPM包。如果我们要对RPM包进行改动(如打最新的patch等等), 我们可以通过这些建立自己的二进制RPM包(Binary RPM Package)。
从SRPM直接建立二进制包可以使用以下的方法:
rpmbuild --rebuild foobar.src.rpm
如果rpmbuild执行成功,系统会在/usr/src/mBuild/i686 (根据具体环境可能会有所不同)会有一个新的rpm包,这个是编译好的二进制RPM文件。利用上一节所说的方法,便可以安装这个新的RPM。
更详细的指示可以参考rpmbuild的man文档。
卸载RPM软件包
使用命令 rpm -e <包名>
比如卸载软件包proftpd-1.2.8-1,可以使用下列命令之一:
rpm -e proftpd-1.2.8-1 rpm -e proftpd-1.2.8 rpm -e proftpd- rpm -e proftpd
有时会出现一些错误或者警告:
... is needed by ... 说明其他软件包需要这个软件包,不能被卸载。
不安装而获取rpm包中的文件
使用工具rpm2cpio和cpio
rpm2cpio xxx.rpm | cpio -vi rpm2cpio xxx.rpm | cpio -idmv rpm2cpio xxx.rpm | cpio --extract --make-directories
参数i和extract相同,表示提取文件。v表示指示执行进程
d和make-directory相同,表示根据包中文件原来的路径建立目录
m表示保持文件的更新时间。
更详细的参数说明可以参见cpio的man文档。
查询RPM的信息
获得软件包相关的信息用rpm -q,q表示查询query,后面可以跟其他选项:
| i | 表示info,获得软件包的信息 |
| l | 表示list,获得文件列表 |
| a | 表示all,在所有包中执行查询 |
| f | 表示file,根据文件进行相关的查询 |
| p | 表示package,根据软件包进行查询 |
查询系统中安装了哪些RPM包
rpm -qa 列出所有安装过的包
下面以 mysql 为例,如果要查找所有安装过的包含某个字符串sql的软件包
rpm -qa |grep sql
获得某个软件包的全名
rpm -q mysql
可以获得系统中安装的mysql软件包全名,从中可以获得当前软件包的版本等信息。
这个例子中可以得到信息:mysql-3.23.54a-11
查询RPM包中的文件
本条目尚未完全完成,我们需要您的参与!
rpm -ql mysql
如果只是想知道可执行程序放到那里去了,也可以用which,比如:
which mysql whereis ftptop