rpm
(RedHat Package Manager) 简介rpm
是免费的,并在以下条件下发布GPL
(General Public License
)。rpm
将所有已安装包的信息保存在/var/lib/rpm
数据库。rpm
是 Linux 系统下安装包的唯一方式,如果你已经使用源代码安装了包,那么rpm
不能管理它。rpm
处理.rpm
文件,其中包含有关软件包的实际信息,例如:what it is
,from where it comes
,dependencies info
,version info
等等。Install
: 用于安装rpm
包。Remove
:它用于删除或卸载rpm`包。Upgrade
:用于更新现有的rpm
包。Verify
: 用于验证rpm
包。Query
: 用于查询任何rpm
包。rpm
包以下是
rpm
站点列表,你可以在其中找到并下载所有RPM
包。
请记住你必须是
root
用户在 Linux 中安装软件包
rpm
签名包在 Linux 系统上安装包之前,请务必检查包的 PGP 签名,并确保其完整性和来源是
OK
.使用以下命令–checksig
(check signature
) 选项来检查名为的包的签名pidgin
.
[rumenz@local]#rpm --checksig pidgin-2.7.9-5.el6.2.i686.rpm
pidgin-2.7.9-5.el6.2.i686.rpm: rsa sha1 (md5) pgp md5 OK
rpm
包要安装
rpm
软件包,请使用以下命令-i
选项。例如,要安装一个名为的rpm
包pidgin-2.7.9-5.el6.2.i686.rpm
.
[rumenz@local]#rpm -ivh pidgin-2.7.9-5.el6.2.i686.rpm
Preparing... ########################################### [100%]
1:pidgin ########################################### [100%]
-i
: 安装一个包-v
: 详细显示更好的显示-h
: 在解压包存档时打印散列标记。rpm
包的依赖关系假设你想在安装或升级包之前进行依赖项检查。比如使用下面的命令来检查依赖
BitTorrent-5.2.2-1-Python2.4.noarch.rpm
包裹。它将显示包的依赖项列表。
[rumenz@local]#rpm -qpR BitTorrent-5.2.2-1-Python2.4.noarch.rpm
/usr/bin/python2.4
python >= 2.3
python(abi) = 2.4
python-crypto >= 2.0
python-psyco
python-twisted >= 2.0
python-zopeinterface
rpmlib(CompressedFileNames) = 2.6
-q
: 查询一个包-p
:列出此包提供的功能。-R
: 列出此包所依赖的功能..rpm
包如果你知道所有需要的软件包都已经安装,你可以使用选项忽略这些依赖项
–nodeps
(no dependencies check
) 在安装包之前。
[rumenz@local]#rpm -ivh --nodeps BitTorrent-5.2.2-1-Python2.4.noarch.rpm
Preparing... ########################################### [100%]
1:BitTorrent ########################################### [100%]
上面的命令通过忽略依赖错误来强制安装
rpm
包,但是如果缺少这些依赖文件,那么程序将无法运行。
rpm
包使用
-q
带有包名的选项,将显示是否安装了 rpm。
[rumenz@local]#rpm -q BitTorrent
BitTorrent-5.2.2-1.noarch
rpm
包的所有文件要查看已安装的
rpm
包的所有文件,请使用-ql
(query list
) 与rpm
命令。
[rumenz@local]#rpm -ql BitTorrent
/usr/bin/bittorrent
/usr/bin/bittorrent-console
/usr/bin/bittorrent-curses
/usr/bin/bittorrent-tracker
/usr/bin/changetracker-console
/usr/bin/launchmany-console
/usr/bin/launchmany-curses
/usr/bin/maketorrent
/usr/bin/maketorrent-console
/usr/bin/torrentinfo-console
rpm
包使用以下
rpm
命令-qa
(query all
) 选项,将列出所有最近安装的rpm
包。
[rumenz@local]#rpm -qa --last
BitTorrent-5.2.2-1.noarch Tue 04 Dec 2012 05:14:06 PM BDT
pidgin-2.7.9-5.el6.2.i686 Tue 04 Dec 2012 05:13:51 PM BDT
cyrus-sasl-devel-2.1.23-13.el6_3.1.i686 Tue 04 Dec 2012 04:43:06 PM BDT
cyrus-sasl-2.1.23-13.el6_3.1.i686 Tue 04 Dec 2012 04:43:05 PM BDT
cyrus-sasl-md5-2.1.23-13.el6_3.1.i686 Tue 04 Dec 2012 04:43:04 PM BDT
cyrus-sasl-plain-2.1.23-13.el6_3.1.i686 Tue 04 Dec 2012 04:43:03 PM BDT
rpm
包键入以下命令以打印
Linux
系统上已安装软件包的所有名称。
[rumenz@local]#rpm -qa
initscripts-9.03.31-2.el6.centos.i686
polkit-desktop-policy-0.96-2.el6_0.1.noarch
thunderbird-17.0-1.el6.remi.i686
rpm
包如果我们要升级任何
rpm
包–U
(upgrade
) 选项将被使用。使用此选项的主要优点之一是它不仅会升级任何软件包的最新版本,而且还会保留旧软件包的备份,以便在较新升级的软件包不运行先前安装的软件包的情况下可以再次使用。
[rumenz@local]#rpm -Uvh nx-3.5.0-2.el6.centos.i686.rpm
Preparing... ########################################### [100%]
1:nx ########################################### [100%]
rpm
包要卸载
rpm
包,例如我们使用包名nx
, 不是原来的包名nx-3.5.0-2.el6.centos.i686.rpm
.这-e (erase)
选项用于删除包。
[rumenz@local]#rpm -evv nx
rpm
包这
–nodeps
(Do not check dependencies
) 选项强制从系统中删除rpm
包。但请记住,删除特定包可能会破坏其他工作应用程序。
[rumenz@local]#rpm -ev --nodeps vsftpd
rpm
包假设你有文件列表,并且想找出属于这些文件的包。例如,以下命令与
-qf
(query file
) 选项将显示一个文件/usr/bin/htpasswd
由包裹拥有httpd-tools-2.2.15-15.el6.centos.1.i686
.
[rumenz@local]#rpm -qf /usr/bin/htpasswd
httpd-tools-2.2.15-15.el6.centos.1.i686
rpm
包信息假设你已经安装了一个
rpm
包并且想知道有关该包的信息。下列-qi
(query info
) 选项将打印已安装包的可用信息。
[rumenz@local]#rpm -qi vsftpd
Name : vsftpd Relocations: (not relocatable)
Version : 2.2.2 Vendor: CentOS
Release : 11.el6 Build Date: Fri 22 Jun 2012 01:54:24 PM BDT
Install Date: Mon 17 Sep 2012 07:55:28 PM BDT Build Host: c6b8.bsys.dev.centos.org
Group : System Environment/Daemons Source RPM: vsftpd-2.2.2-11.el6.src.rpm
Size : 351932 License: GPLv2 with exceptions
Signature : RSA/SHA1, Mon 25 Jun 2012 04:07:34 AM BDT, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://vsftpd.beasts.org/
Summary : Very Secure Ftp Daemon
Description :
vsftpd is a Very Secure FTP daemon. It was written completely from
scratch.
rpm
包信息你从网上下载了一个软件包,想在安装前了解软件包的信息。例如,以下选项
-qip
(query info package
) 将打印包[sqlbuddy]的信息。
[rumenz@local]#rpm -qip sqlbuddy-1.3.3-1.noarch.rpm
Name : sqlbuddy Relocations: (not relocatable)
Version : 1.3.3 Vendor: (none)
Release : 1 Build Date: Wed 02 Nov 2011 11:01:21 PM BDT
Install Date: (not installed) Build Host: rpm.bar.baz
Group : Applications/Internet Source RPM: sqlbuddy-1.3.3-1.src.rpm
Size : 1155804 License: MIT
Signature : (none)
Packager : Erik M Jacobs
URL : http://www.sqlbuddy.com/
Summary : SQL Buddy â Web based MySQL administration
Description :
SQLBuddy is a PHP script that allows for web-based MySQL administration.
rpm
包的文档要获取已安装软件包的可用文档列表,请使用以下命令和选项
-qdf
(query document file
) 将显示与vmstat包相关的手册页。
[rumenz@local]#rpm -qdf /usr/bin/vmstat
/usr/share/doc/procps-3.2.8/BUGS
/usr/share/doc/procps-3.2.8/COPYING
/usr/share/doc/procps-3.2.8/COPYING.LIB
/usr/share/doc/procps-3.2.8/FAQ
/usr/share/doc/procps-3.2.8/NEWS
/usr/share/doc/procps-3.2.8/TODO
rpm
包验证软件包会将软件包的已安装文件信息与
rpm
数据库进行比较。这-Vp
(verify package
) 用于验证包。
[rumenz@local downloads]#rpm -Vp sqlbuddy-1.3.3-1.noarch.rpm
S.5....T. c /etc/httpd/conf.d/sqlbuddy.conf
rpm
包键入以下命令以验证所有已安装的
rpm
包。
[rumenz@local]#rpm -Va
S.5....T. c /etc/rc.d/rc.local
.......T. c /etc/dnsmasq.conf
.......T. /etc/ld.so.conf.d/kernel-2.6.32-279.5.2.el6.i686.conf
S.5....T. c /etc/yum.conf
S.5....T. c /etc/yum.repos.d/epel.repo
rpm
GPG 密钥验证
RHEL/CentOS/Fedora
包,你必须导入GPG
钥匙。为此,请执行以下命令。它会导入CentOS 6
GPG 密钥。
[rumenz@local]#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
rpm
GPG 密钥打印所有导入的
GPG
键,请使用以下命令。
[rumenz@local]#rpm -qa gpg-pubkey*
gpg-pubkey-0608b895-4bd22942
gpg-pubkey-7fac5991-4615767f
gpg-pubkey-0f2672c8-4cd950ee
gpg-pubkey-c105b9de-4e0fd3a3
gpg-pubkey-00f97f56-467e318a
gpg-pubkey-6b8d79e6-3f49313d
gpg-pubkey-849c449f-4cb9df30
rpm
数据库有时
rpm
数据库会损坏并停止rpm
和系统上其他应用程序的所有功能。所以,此时我们需要重建rpm
数据库并借助以下命令进行恢复。
[rumenz@local]# cd /var/lib/rpm
[rumenz@local]# rm __db*
[rumenz@local]# rpm --rebuilddb
[rumenz@local]# rpmdb_verify Packages