Linux命令:RPM
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令:RPM相关的知识,希望对你有一定的参考价值。
RPM命令简介:
RPM 全名是『 RedHat Package Manager 』简称则为 RPM。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的 Linux 主机的一套管理程序。
1.命令格式:
rpm [选项][文件]
2.命令功能:
RPM最大的特点就是将您要安装的套件先编译且打包好了,透过包装好的套件里头预设的数据库记录, 记录这个套件要安装的时候必须要的相依属性模块(Linux主机需要预先存在的几个必须的套件),当安装时RPM会先依照套件里头的纪录数据查询Linux主机的相依属性套件是否满足,若满足则予以安装,若不满足则不予安装。那么安装的时候就将该套件的信息整个写入RPM的数据库中,以便未来的查询、验证与反安装!
这样的优点是:
a. 由于已经编译完成并且打包完毕,所以安装上很方便( 不需要再重新编译 );
b. 由于套件的信息都已经记录在 Linux 主机的数据库上,很方便查询、升级与反安装;
缺点是:
a. 安装的环境必须与打包时的环境需求一致或相当;;
b. 需要满足套件的相依属性需求;
c. 反安装时需要特别小心,最底层的套件不可先移除,否则可能造成整个系统的问题!
3.命令参数:
3.1.RPM 安装包
rpm -i /PATH/TO/PACKAGE_FILE
-h: 以#显示进度;每个#表示2%;
-v: 显示详细过程
-vv: 更详细的过程
rpm -ivh /PATH/TO/PACKAGE_FILE
--nodeps: 忽略依赖关系;
--replacepkgs: 重新安装,替换原有安装;
--force: 强行安装,可以实现重装或降级,为--replacefiles与--replacepkgs的综合体
--test :测试安装该软件,可找出是否有属性相依的问题。
eg1: rpm -ivh pkgname.i386.rpm --test
--replacefiles: 安装的过程当中出现了『某个文件已经被安装在你的系统上面』的资讯,或出现版本不合的信息(confilcting files) 时,可以使用这个参数来直接覆盖文件。
危险性:覆盖的动作是无法复原的!否则会欲哭无泪!
[[email protected]]~# rpm -ivh zsh-4.2.6-3.el5.x86_64.rpm
rpm -ivh zsh-4.2.6-3.el5.x86_64.rpm
warning: zsh-4.2.6-3.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
package zsh-4.2.6-3.el5.x86_64 is already installed
[[email protected]]~# 网络安装某个文件
[[email protected]]~# rpm -ivh http://website.name/path/pkgname.rpm
3.2.RPM 查询包
[[email protected] ~]# rpm -qa
[[email protected] ~]# rpm -q[licdR] 已安装的套件名称
[[email protected] ~]# rpm -qf 存在于系统上面的某个档案
[[email protected] ~]# rpm -qp[licdR] 未安装的某个文件名称
参数:
在查询的部分,所有的参数之前都需要加上 -q 才是所谓的查询!
查询主要分为两部分,一个是查已安装,另一个则是查某个 rpm 档案内容。
-q :仅查询(query),后面接的套件名称是否有安装;
-qa :列出所有的(all),已经安装在本机 Linux 系统上面的所有套件名称;
-qi :列出该套件的详细信息 (information),包含开发商、版本与说明等;
-ql :列出该套件所有的档案与目录所在完整文件名 (list);
-qc :列出该套件的配置文件 (找出在 /etc/ 底下的檔名而已)
-qd:列出该套件的所有说明档 (找出与 man 有关的档案document)
-qR :列出与该套件有关的相依套件所含的档案 (Required)
-qf :由后面接的文件名称(file),找出该档案属于哪一个已安装的套件;
rpm -q --scripts PACKAGE_NAME: 查询指定包中包含的脚本(scripts);
-qp[i|c|d|l|R]:未安装时,查询RPM档案内将含有的信息(Package)
注意 -qp 后面接的所有参数与上面的说明一致。
但用途仅在于找出RPM档案内的信息,而非已安装的套件信息!
[[email protected]]/media/Server# rpm -qi bash
Name : bash Relocations: (not relocatable)
Version : 3.2 Vendor: Red Hat, Inc.
Release : 24.el5 Build Date: Tue 21 Oct 2008 08:15:56 PM CST
Install Date: Thu 17 Apr 2014 11:41:58 AM CST Build Host: hs20-bc1-5.build.redhat.com
Group : System Environment/Shells Source RPM: bash-3.2-24.el5.src.rpm
Size : 5388767 License: GPLv2+
Signature : DSA/SHA1, Mon 08 Dec 2008 08:25:44 PM CST, Key ID 5326810137017186
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL : http://www.gnu.org/software/bash
Summary : The GNU Bourne Again shell (bash) version 3.1.
Description :
The GNU Bourne Again shell (Bash) is a shell or command language
interpreter that is compatible with the Bourne shell (sh). Bash
incorporates useful features from the Korn shell (ksh) and the C shell
(csh). Most sh scripts can be run by bash without modification. This
package (bash) contains bash version 3.1, which improves POSIX
compliance over previous versions.
[[email protected]]/media/Server# rpm -ql bash
/bin/bash
/bin/sh
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc
/usr/bin/bashbug-64
...
[[email protected]]/media/Server# rpm -qf /bin/ls
coreutils-5.97-23.el5
[[email protected]]/media/Server# rpm -q --scripts zsh
postinstall scriptlet (using /bin/sh): 安装后要执行的程式
if [ ! -f /etc/shells ] ; then
echo "/bin/zsh" > /etc/shells
else
grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells
fi
/sbin/install-info /usr/share/info/zsh.info.gz /usr/share/info/dir \
--entry="* zsh: (zsh). An enhanced bourne shell."
preuninstall scriptlet (using /bin/sh):卸载前要执行的程式
if [ "$1" = 0 ] ; then
/sbin/install-info --delete /usr/share/info/zsh.info.gz /usr/share/info/dir \
--entry="* zsh: (zsh). An enhanced bourne shell."
fi
postuninstall scriptlet (using /bin/sh):卸载后要执行的程式
if [ "$1" = 0 ] ; then
if [ -f /etc/shells ] ; then
TmpFile=`/bin/mktemp /tmp/.zshrpmXXXXXX`
grep -v ‘^/bin/zsh$‘ /etc/shells > $TmpFile
cp -f $TmpFile /etc/shells
rm -f $TmpFile
chmod 644 /etc/shells
fi
fi
3.3.RPM 升级包
-Uvh
后面接的套件即使没有安装过,则系统将予以直接安装; 若后面接的套件有安装过旧版,则系统自动更新至新版;
-Fvh
如果后面接的套件并未安装到您的 Linux 系统上,则该套件不会被安装;亦即只有安装至您 Linux 系统内的套件会被『升级』!
3.4.RPM 验证包
[[email protected] ~]# rpm -Va
[[email protected] ~]# rpm -V 已安装的套件名称
[[email protected] ~]# rpm -Vp 某个 RPM 档案的档名
[[email protected] ~]# rpm -Vf 在系统上面的某个档案
参数:
-V :后面加的是套件名称,若该套件所含的档案被更动过,才会列出来;
-Va :列出目前系统上面所有可能被更动过的档案;
-Vp :后面加的是文件名称,列出该套件内可能被更动过的档案;
-Vf :列出某个档案是否被更动过~
3.5.RPM 卸载包
[[email protected] ~]# rpm -e logrotate <==解安装 logrotate 套件
[[email protected] ~]# rpm --rebuilddb <==重建数据库
3.6.RPMBUILD 安装包
--rebuild
这个参数会将后面的 SRPM 进行『编译』与『打包』的动作,最后会产生 RPM 的档案,但是产生的 RPM 档案并没有安装到系统上。
--recompile
这个动作会直接的『编译』『打包』并且『安装』啰!请注意, rebuild 仅『编译并打包』而已,而 recompile 不但进行编译跟打包,还同时进行『安装』了!
以上是关于Linux命令:RPM的主要内容,如果未能解决你的问题,请参考以下文章