linux 下rpm命令参数使用方法详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 下rpm命令参数使用方法详解相关的知识,希望对你有一定的参考价值。


RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理;在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用;

一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系;也就是安装一个rpm包需要的so动态链接库(也称为共享库)的环境。其实就和人的生存环境一样,如果一个人想生存必须要给这个人提供他生存所需要的环境简单的包括就是衣、食、住、行,同样软件生存也是需要生存环境的,这些环境包括1、内核的支持,2、共享库的支持,这两个缺一不可。一般软件安装不成功大多是因为共享库的缺失或找不到这些库文件所导致的,这些通过yum可以很少的解决,不过现在我给大家介绍的是rpm这个老命令:


一、RPM包管理的用途;

1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;

2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;

3、可以在查询系统中的软件包是否安装以及其版本;

4、作为开发者可以把自己的程序打包为RPM 包发布;

5、软件包签名GPG和MD5的导入、验证和签名发布

6、依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;


二、RPM 的使用权限;


RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装;


三、rpm 的一点简单用法;


我们除了软件包管理器以外,还能通过rpm 命令来安装;是不是所有的软件包都能通过rpm 命令来安装呢?不是的,文件以.rpm 后缀结尾的才行;有时我们在一些网站上找到*.rpm ,都要用 rpm 来安装;


1)初始化rpm 数据库;


通过rpm 命令查询一个rpm 包是否安装了,也是要通过rpm 数据库来完成的;所以我们要经常用下面的两个命令来初始化rpm 数据库;

[[email protected] ~]# rpm --initdb
[[email protected] ~]# rpm --rebuilddb

注:这个要花好长时间,这两个参数是极为有用,有时rpm 系统出了问题,不能安装和查询,大多是这里出了问题;刚才我在用yum时就出现了问题,用rpm重新构建了一下数据库,所以想起给大家写这篇博文,希望对大家有帮助。呵呵


四、RPM软件包管理的查询功能:


命令格式


rpm {-q|--query} [select-options] [query-options]

RPM的查询功能是极为强大,是极为重要的功能之一;举几个常用的例子,更为详细的具体的,请参考#man rpm


1、对系统中已安装软件的查询;

1)查询系统已安装的软件;

语法:rpm -q 软件名

举例:

[[email protected] ~]# rpm -q net-tools
net-tools-2.0-0.17.20131004git.el7.x86_64

-q就是 --query ,中文意思是“查询”,此命令表示的是,是不是系统安装了net-tools;如果已安装会有信息输出;如果没有安装,会输出net-tools没有安装的信息;

查看系统中所有已经安装的包,要加 -a 参数 ;


#如果分页查看,再加一个管道 |和less命令;

[[email protected] ~]# rpm -qa

#在所有已经安装的软件包中查找某个软件,比如说 net-tools ;可以用 grep 抽取出来;

[[email protected] ~]# rpm -qa |less


以下这条命令的功能和 rpm -q net-tools 输出的结果是一样的;

[[email protected] ~]# rpm -qa |grep net-tools
net-tools-2.0-0.17.20131004git.el7.x86_64


2)查询一个已经安装的文件属于哪个软件包;

语法 rpm -qf 文件名


以下是使用rpm -qf 查询指定文件来之哪个rpm包文件。

[[email protected] ~]# rpm -qf /usr/lib/rpm/check-files 
rpm-build-4.11.3-17.el7.x86_64


注:文件名所在的绝对路径要指出 


3)查询已安装软件包都安装到何处;

语法:rpm -ql 软件名 或 rpm rpmquery -ql 软件名

举例:

[[email protected] ~]# rpm -ql net-tools
/bin/netstat
/sbin/arp
/sbin/ether-wake
/sbin/ifconfig
/sbin/ipmaddr
/sbin/iptunnel
/sbin/mii-diag
/sbin/mii-tool
/sbin/nameif
/sbin/plipconfig
/sbin/route
  … …

  

[[email protected] rpm]# rpmquery -ql net-tools
/bin/netstat
/sbin/arp
/sbin/ether-wake
/sbin/ifconfig
/sbin/ipmaddr
/sbin/iptunnel
/sbin/mii-diag
/sbin/mii-tool
/sbin/nameif
/sbin/plipconfig
/sbin/route
/sbin/slattach
  … …

  

4)查询一个已安装软件包的信息 

语法格式: rpm -qi 软件名

举例:

# rpm -qi net-tools
Name        : net-tools
Version     : 2.0
Release     : 0.17.20131004git.el7
Architecture: x86_64
Install Date: Thu 03 Mar 2016 10:32:36 PM EST
Group       : System Environment/Base
Size        : 938653
License     : GPLv2+
Signature   : RSA/SHA256, Thu 03 Jul 2014 11:56:18 PM EDT, Key ID 24c6a8a7f4a80eb5
Source RPM  : net-tools-2.0-0.17.20131004git.el7.src.rpm
Build Date  : Tue 10 Jun 2014 12:15:04 AM EDT
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://sourceforge.net/projects/net-tools/
Summary     : Basic networking tools
Description :
The net-tools package contains basic networking tools,
including ifconfig, netstat, route, and others.
Most of them are obsolete. For replacement check iproute package.



5)查看一下已安装软件的配置文件;

语法格式:rpm -qc 软件名

举例:

[[email protected] ~]# rpm -qc net-tools


6)查看一个已经安装软件的文档安装位置:

语法格式: rpm -qd 软件名

举例:

[[email protected] ~]# rpm -qd net-tools
/usr/share/doc/net-tools-2.0/COPYING
/usr/share/man/de/man5/ethers.5.gz
/usr/share/man/de/man8/arp.8.gz
/usr/share/man/de/man8/ifconfig.8.gz
/usr/share/man/de/man8/netstat.8.gz
/usr/share/man/de/man8/plipconfig.8.gz
/usr/share/man/de/man8/route.8.gz
/usr/share/man/de/man8/slattach.8.gz
/usr/share/man/fr/man5/ethers.5.gz
/usr/share/man/fr/man8/arp.8.gz
/usr/share/man/fr/man8/ifconfig.8.gz
/usr/share/man/fr/man8/netstat.8.gz
/usr/share/man/fr/man8/plipconfig.8.gz
/usr/share/man/fr/man8/route.8.gz
/usr/share/man/fr/man8/slattach.8.gz
/usr/share/man/man5/ethers.5.gz
/usr/share/man/man8/arp.8.gz
/usr/share/man/man8/ether-wake.8.gz
/usr/share/man/man8/ifconfig.8.gz
/usr/share/man/man8/ipmaddr.8.gz
/usr/share/man/man8/iptunnel.8.gz
/usr/share/man/man8/mii-diag.8.gz
/usr/share/man/man8/mii-tool.8.gz
/usr/share/man/man8/nameif.8.gz
/usr/share/man/man8/netstat.8.gz
/usr/share/man/man8/plipconfig.8.gz
/usr/share/man/man8/route.8.gz
/usr/share/man/man8/slattach.8.gz
/usr/share/man/pt/man8/arp.8.gz
/usr/share/man/pt/man8/ifconfig.8.gz
/usr/share/man/pt/man8/netstat.8.gz
/usr/share/man/pt/man8/route.8.gz


7)查看一下已安装软件所依赖的软件包及文件;

语法格式: rpm -qR 软件名

举例:

[[email protected] ~]# rpm -qR net-tools
/bin/sh
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libselinux.so.1()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
systemd-units
rpmlib(PayloadIsXz) <= 5.2-1


查询已安装软件的总结:对于一个软件包已经安装,我们可以把一系列的参数组合起来用;比如 rpm -qil ;比如:

[[email protected] ~]# rpm -qil net-tools
Name        : net-tools
Version     : 2.0
Release     : 0.17.20131004git.el7
Architecture: x86_64
Install Date: Thu 03 Mar 2016 10:32:36 PM EST
Group       : System Environment/Base
Size        : 938653
License     : GPLv2+
Signature   : RSA/SHA256, Thu 03 Jul 2014 11:56:18 PM EDT, Key ID 24c6a8a7f4a80eb5
Source RPM  : net-tools-2.0-0.17.20131004git.el7.src.rpm
Build Date  : Tue 10 Jun 2014 12:15:04 AM EDT
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://sourceforge.net/projects/net-tools/
Summary     : Basic networking tools
Description :
The net-tools package contains basic networking tools,
including ifconfig, netstat, route, and others.
Most of them are obsolete. For replacement check iproute package.
/bin/netstat
/sbin/arp
/sbin/ether-wake
/sbin/ifconfig
/sbin/ipmaddr
/sbin/iptunnel
/sbin/mii-diag
/sbin/mii-tool
/sbin/nameif
/sbin/plipconfig
/sbin/route
/sbin/slattach
/usr/lib/systemd/system/arp-ethers.service
/usr/share/doc/net-tools-2.0
/usr/share/doc/net-tools-2.0/COPYING
/usr/share/locale/cs/LC_MESSAGES/net-tools.mo
/usr/share/locale/de/LC_MESSAGES/net-tools.mo
/usr/share/locale/et_EE/LC_MESSAGES/net-tools.mo
/usr/share/locale/fr/LC_MESSAGES/net-tools.mo
/usr/share/locale/pt_BR/LC_MESSAGES/net-tools.mo
/usr/share/man/de/man5/ethers.5.gz
/usr/share/man/de/man8/arp.8.gz
/usr/share/man/de/man8/ifconfig.8.gz
/usr/share/man/de/man8/netstat.8.gz
/usr/share/man/de/man8/plipconfig.8.gz
/usr/share/man/de/man8/route.8.gz
/usr/share/man/de/man8/slattach.8.gz
/usr/share/man/fr/man5/ethers.5.gz
/usr/share/man/fr/man8/arp.8.gz
/usr/share/man/fr/man8/ifconfig.8.gz
/usr/share/man/fr/man8/netstat.8.gz
/usr/share/man/fr/man8/plipconfig.8.gz
/usr/share/man/fr/man8/route.8.gz
/usr/share/man/fr/man8/slattach.8.gz
/usr/share/man/man5/ethers.5.gz
/usr/share/man/man8/arp.8.gz
/usr/share/man/man8/ether-wake.8.gz
/usr/share/man/man8/ifconfig.8.gz
/usr/share/man/man8/ipmaddr.8.gz
/usr/share/man/man8/iptunnel.8.gz
/usr/share/man/man8/mii-diag.8.gz
/usr/share/man/man8/mii-tool.8.gz
/usr/share/man/man8/nameif.8.gz
/usr/share/man/man8/netstat.8.gz
/usr/share/man/man8/plipconfig.8.gz
/usr/share/man/man8/route.8.gz
/usr/share/man/man8/slattach.8.gz
/usr/share/man/pt/man8/arp.8.gz
/usr/share/man/pt/man8/ifconfig.8.gz
/usr/share/man/pt/man8/netstat.8.gz
/usr/share/man/pt/man8/route.8.gz


以上是我给大家详细总结了一下rpm包管理命令的使用方法,希望对大家有帮助。

本文出自 “放牛娃” 博客,请务必保留此出处http://fangniuwa.blog.51cto.com/10209030/1750663

以上是关于linux 下rpm命令参数使用方法详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux RPM 命令参数使用详解

Linux RPM 命令参数使用详解

Linux RPM 命令参数使用详解

Linux rpm 命令参数使用详解[介绍和应用]

[转]Linux rpm 命令参数使用详解

Linux rpm 命令参数使用详解[介绍和应用]