用途

RPM是Redhat Package Manager三个单词首字母缩写,是类redhat linux系统的包管理器,用它可以安装包(二进制/源码),升级包,删除包,查询包信息等功能。RPM软件包包含了程序文件列表以及跟包相关的元信息,通过使用包的元信息来对包进行管理。

用法

查询

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

验证

rpm {-V|--verify} [select-options] [verify-options]

rpm --import PUBKEY ...

rpm {-K|--checksig} [--nosignature] [--nodigest]
PACKAGE_FILE ...

安装

rpm {-i|--install} [install-options] PACKAGE_FILE ...

更新

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

删除

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...

其它

rpm {--initdb|--rebuilddb}

rpm {--addsign|--resign} PACKAGE_FILE ...

rpm {--querytags|--showrc}

rpm {--setperms|--setugids} PACKAGE_NAME ...

选项备注

选择选项(select-options)

[PACKAGE_NAME] [-a,--all] [-f,--file FILE]
[-g,--group GROUP] {-p,--package PACKAGE_FILE]
[--fileid ID] [--hdrid SHA1] [--pkgid MD5] [--tid TID]
[--querybynumber HDRNUM] [--triggeredby PACKAGE_NAME]
[--whatprovides CAPABILITY] [--whatrequires CAPABILITY]

查询选项(query-options)

[--changelog] [-c,--configfiles] [-d,--docfiles] [--dump]
[--filesbypkg] [-i,--info] [--last] [-l,--list]
[--provides] [--qf,--queryformat QUERYFMT]
[-R,--requires] [--obsoletes] [--scripts] [-s,--state]
[--triggers,--triggerscripts]

验证选项(verify-options)

[--nodeps] [--nofiles] [--noscripts]
[--nodigest] [--nosignature]
[--nolinkto] [--nofiledigest] [--nosize] [--nouser]
[--nogroup] [--nomtime] [--nomode] [--nordev]
[--nocaps]

安装选项(install-options)

[--aid] [--allfiles] [--badreloc] [--excludepath OLDPATH]
[--excludedocs] [--force] [-h,--hash]
[--ignoresize] [--ignorearch] [--ignoreos]
[--includedocs] [--justdb] [--nodeps]
[--nodigest] [--nosignature] [--nosuggest]
[--noorder] [--noscripts] [--notriggers]
[--oldpackage] [--percent] [--prefix NEWPATH]
[--relocate OLDPATH=NEWPATH]
[--replacefiles] [--replacepkgs]
[--test]

常用参数

通用类

-?, --help

输出帮助信息

--version

输出程序版本

--quiet

尽可能少输出信息,错误信息会输出

-v

输出进度信息

-vv

输出调试信息

安装和更新类

--badreloc

和--relocate参数配合使用,允许对所有文件设置安装目录

--excludepath OLDPATH

不安装文件路径以OLDPATH开头的文件

--excludedocs

不安装帮助文档(一般都需要安装帮助文档,否则使用man查不到命令使用信息)

--force

强制安装(Same as using --replacepkgs, --replacefiles, and --oldpackage.)

--nodeps

不检查依赖

--oldpackage

允许更新到老版本

--prefix NEWPATH

设置安装目录(只针对允许更改的rpm包,可以通过查看包信息了解)

--relocate OLDPATH=NEWPATH

设置安装目录(只针对允许更改的rpm包,可以通过查看包信息了解)

--replacefiles

强制安装,即使会替换其它包的文件

--replacepkgs

强制安装,即使包已经安装过了

--test

仅调试(不安装包),检查是否有冲突

卸载类

--allmatches

删除匹配的所有包。没有设置这个参数,默认匹配多个的情况下会提示错误

--nodeps

删除之前不检查依赖关系

--test

不删除,仅用于测试,和-vv一起使用可以看到更详细的信息

包选择类

-a, --all

查询所有的安装包

-f, --file FILE

查询FILE所属的安装包

-g, --group GROUP

查询属于GROUP分组的安装包

-p, --package PACKAGE_FILE

对包(未安装)PACKAGE_FILE进行查询,包所在路径可以是本地路径,也可以是http地址,也可以是ftp地址

包查询类

--changelog

显示包更改日志

-c, --configfiles

仅列出配置文件,相当于-c -l

-d, --docfiles

仅列出文档文件,相当于-d -l

--dump

文件列表带详细文件信息,相当于 --dump -l

--filesbypkg

显示每个被选中包的所有文件

-i, --info

显示包信息

--last

按照包安装时间降序排列

-l, --list

显示包文件列表

--provides

显示包提供的功能

-R, --requires

显示包依赖的功能或者库

--obsoletes

显示淘汰的包列表

--scripts

显示包脚本列表

-s, --state

显示包状态信息,状态列表:normal, not installed, or replaced

--triggers, --triggerscripts

显示触发脚本列表

验证类

--nodeps

不验证包依赖

--nodigest

不验证包或者头摘要

--nofiles

不验证包文件的任何属性

--noscripts

不执行验证脚本文件

--nosignature

不验证包或者头签名

其它类

--initdb

创建rpm数据库(如果已经存在不会覆盖)

--rebuilddb

重建rpm数据库

rpm --showrc

显示配置文件设置

--setperms

设置包中文件列表权限

--setugids

设置包中文件列表所有者

--ftpproxy HOST

使用的ftp代理

--ftpport PORT

使用的ftp端口

--httpproxy HOST

使用的http代理

--httpport PORT

使用的http端口

实践

通用类

  1. 初始化数据库
rpm --initdb
  1. 重建数据库
rpm --rebuilddb

查询类

  1. 查询所有已安装的包
[root@vm ~]# rpm -qa
setools-libs-python-3.3.7-4.el6.x86_64
setup-2.8.14-23.el6.noarch
libcgroup-0.40.rc1-24.el6_9.x86_64
basesystem-10.0-4.el6.noarch
policycoreutils-python-2.0.83-30.1.el6_8.x86_64
kernel-firmware-2.6.32-696.el6.noarch
mailx-12.4-8.el6_6.x86_64
lynx-2.8.6-27.el6.x86_64
...
  1. 判断curl包是否已安装
[root@vm ~]# rpm -q curl
curl-7.19.7-52.el6.x86_64
[root@vm ~]# rpm -qa | grep curl
python-pycurl-7.19.0-9.el6.x86_64
libcurl-7.19.7-52.el6.x86_64
curl-7.19.7-52.el6.x86_64
  1. 查询已安装包Python包信息
[root@vm ~]# rpm -qi python
Name : python Relocations: (not relocatable)
Version : 2.6.6 Vendor: CentOS
Release : 66.el6_8 Build Date: Thu 18 Aug 2016 11:29:19 PM CST
Install Date: Mon 11 Dec 2017 11:38:32 AM CST Build Host: worker1.bsys.centos.org
Group : Development/Languages Source RPM: python-2.6.6-66.el6_8.src.rpm
Size : 79603 License: Python
Signature : RSA/SHA1, Fri 19 Aug 2016 01:21:25 AM CST, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://www.python.org/
Summary : An interpreted, interactive, object-oriented programming language
Description :
Python is an interpreted, interactive, object-oriented programming
language often compared to Tcl, Perl, Scheme or Java. Python includes
modules, classes, exceptions, very high level dynamic data types and
dynamic typing. Python supports interfaces to many system calls and
libraries, as well as to various windowing systems (X11, Motif, Tk,
Mac and MFC).
  1. 查询已安装包python文件列表
[root@vm ~]# rpm -ql python
/usr/bin/pydoc
/usr/bin/python
/usr/bin/python2
/usr/bin/python2.6
/usr/share/doc/python-2.6.6
/usr/share/doc/python-2.6.6/LICENSE
/usr/share/doc/python-2.6.6/README
/usr/share/man/man1/python.1.gz
  1. 查询未安装包lynx-2.8.6-27.el6.x86_64.rpm包信息和待安装的文件列表
[root@vm ~]# rpm -qpil lynx-2.8.6-27.el6.x86_64.rpm
Name : lynx Relocations: (not relocatable)
Version : 2.8.6 Vendor: CentOS
Release : 27.el6 Build Date: Wed 25 Aug 2010 11:18:41 PM CST
Install Date: (not installed) Build Host: c6b3.bsys.dev.centos.org
Group : Applications/Internet Source RPM: lynx-2.8.6-27.el6.src.rpm
Size : 4934856 License: GPLv2
Signature : RSA/8, Sun 03 Jul 2011 12:43:46 PM CST, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://lynx.isc.org/
Summary : A text-based Web browser
Description :
Lynx is a text-based Web browser. Lynx does not display any images,
but it does support frames, tables, and most other HTML tags. One
advantage Lynx has over graphical browsers is speed; Lynx starts and
exits quickly and swiftly displays web pages.
/etc/lynx-site.cfg
/etc/lynx.cfg
/etc/lynx.lss
/usr/bin/lynx
/usr/share/doc/lynx-2.8.6
/usr/share/doc/lynx-2.8.6/INSTALLATION
/usr/share/doc/lynx-2.8.6/README
...

安装,更新,卸载类

  1. 卸载lynx包
[root@vm ~]# rpm -ev lynx
  1. 安装lynx包
[root@vm ~]# rpm -ivh lynx-2.8.6-27.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:lynx ########################################### [100%]
  1. 更新lynx包
[root@vm ~]# rpm -Uvh lynx-2.8.6-27.el6.x86_64.rpm
Preparing... ########################################### [100%]
package lynx-2.8.6-27.el6.x86_64 is already installed

参考资料

【1】man rpm

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

http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/08/2203153.html

【3】rpm 官方文档

http://rpm.org/documentation.html

N天学习一个linux命令之rpm的更多相关文章

  1. N天学习一个Linux命令之帮助命令:man

    前言 工作中每天都在使用常用的命令和非常用的命令,忘记了用法或者参数,都会bing一下,然后如此循环.一直没有真正的系统的深入的去了解命令的用法,我决定打破它.以前看到有人,每天学习一个linux命令 ...

  2. N天学习一个Linux命令之free

    用途 查看系统内存(物理/虚拟/缓存/共享)使用情况 用法 free [-b | -k | -m | -g | -h] [-o] [-s delay ] [-c count ] [-a] [-t] [ ...

  3. N天学习一个linux命令之ping

    用途 检测主机是否可到达,也就是说,目标主机是否可以联网,还可以用于检测网速.通过发送ICMP ECHO_REQUEST数据包检测. 用法 ping [options] destination 常用选 ...

  4. N天学习一个linux命令之kill

    用途 用于终止进程 用法 kill [-s signal|-p] [--] pid... kill -l [signal] 说明 1.默认发送信号15(请求终止进程,程序可以捕获,操作系统会杀死没有对 ...

  5. N天学习一个linux命令之du

    用途 统计文件或者目录占用硬盘空间大小 用法 du [OPTION] [FILE]du [OPTION] --files0-from=F 常用参数 -a, --all统计所有文件,不仅仅是目录 -b, ...

  6. N天学习一个linux命令之scp

    用途 通过ssh通道,不同主机之间复制文件 用法 scp [options] [user@host:]file1 [user2@host2:]file2 常用参数 -1使用 ssh 1协议 -2使用s ...

  7. 每天学习一个Linux命令-目录

    在工作中总会零零散散使用到各种Linux命令,从今天开始详细的学习一下linux常用命令,坚持每天一个命令,学习的主要参考资料为: 1.竹子-博客(https://www.cnblogs.com/pe ...

  8. N天学习一个linux命令之umask

    前言 umask不是linux命令,而是shell内置的指令,俗称用户权限掩码,用于对用户创建的文件和目录设置默认权限.默认的权限掩码是0022,也就是说新创建的文件权限是0644,新创建的目录权限是 ...

  9. N天学习一个linux命令之ip

    用途 show / manipulate routing, devices, policy routing and tunnels 用法 通用格式 ip [ OPTIONS ] OBJECT { CO ...

随机推荐

  1. .Net Core开源小工具mssql2mysql,从mssql生成mysql脚本

    Microsoft SQL Server to MySQL 这个工具用于从MSSQL生成MySQL脚本,生成的脚本包含表结构和数据 安装 这是一个.Net Core的具具,所以需要先安装.net co ...

  2. 解决gradle project refresh failed: protocol family unavailable问题的几种方法

    Android Studio从版本1.5更新到2.1之后,打开Android Studio一直提示: gradle project refresh failed: protocol family un ...

  3. 【转】Linux下变量内容删除与替换

    转自:http://www.linuxidc.com/Linux/2015-01/111781.htm 当一个变量被赋予值后,有时会对变量的值进行一些微小的调整,比如删除变量值中特定一部份,或替换掉一 ...

  4. Hadoop Hive概念学习系列之hive里的扩展接口(CLI、Beeline、JDBC)(十六)

    <Spark最佳实战  陈欢>写的这本书,关于此知识点,非常好,在94页. hive里的扩展接口,主要包括CLI(控制命令行接口).Beeline和JDBC等方式访问Hive. CLI和B ...

  5. 使用淘宝ip地址库开放接口在网站上显示当前用户所在的城市省份网络(完整代码)

    查看效果:每天进步网  在网站的页脚 <p>欢迎来自 <?php function GetIpCity() {$realip = '';$unknown = 'unknown';if ...

  6. Puppeteer——自动化脚本设计

    我被分配了一个繁琐的任务,就是要给100个相同的站点做同样的配置.曾经就有做过相同的事,那时还不会写脚本,全靠手动配置.机械的配置了两天的时间,身体感觉被掏空.所以这次我决定还是写一个脚本自动的进行配 ...

  7. ffmpeg rtp时间戳

    ffmpeg rtp时间戳 ffmpeg  c  一.介绍 在ffmpeg中,每帧都会存在一个pts用来表示该帧图像在视频流中的位置.而在多路流(比如视频.音频)时,往往需要进行多媒体的同步,使得画面 ...

  8. JS——滚动条

    1.核心思想与之前的拖拽盒子是一样的 2.完全将鼠标在盒子中的坐标给滚动条是错的,因为这样会使滚动条顶部立刻瞬间移动到鼠标位置 3.必须在鼠标按下事件时记住鼠标在滚动条内部的坐标,再将鼠标在盒子中的坐 ...

  9. 【译】x86程序员手册21-6.3.5为操作系统保留的指令

    6.3.5 Some Instructions are Reserved for Operating System 为操作系统保留的一些指令 Instructions that have the po ...

  10. RTL Compiler之Example

    Synthesis = Translation +  Logic Optimization + Mapping Step 1 Source files 1) make directory mkdir ...