Linux基础命令-RPM软件包管理器
目录
前言
现在的软件,服务都是通过软件包进行下载,这个时候就离不开rpm命令,而rpm的功能繁多,也意味着这个命令的参数不简单,正如此,更应该了解清楚;一般rpm用的是系统自带的光盘镜像,当然可以去一些大厂找rpm的软件源,像阿里云,华为云,清华大学等都有自己的软件镜像站,还可到对应的软件官网查找,例如zabbix网站。
清华大学开源软件镜像站 | Tsinghua Open Source Mirror
一、命令介绍
rpm命令来自于英文"RedHat Package Manager",看这英文不难猜到,这个RPM是由红帽公司推出的,之后被众多Linux发行版本广为所用,是一种数据库记录的方式来讲所需要的软件安装到Linux系统的一套软件管理机制,其功能是用于在linux系统下对软件包进行安装、卸载、查询、验证、升级等工作。
优点:
二、命令的语法及参数
2.1 用rpm --help查看rpm的语法和参数
语法: rpm 【选项】
[root@localhost ~]# rpm --help
用法: rpm [选项...]
查询/验证软件包选项:
-a, --all 查询/验证所有软件包
-f, --file 查询/验证文件属于的软件包
-g, --group 查询/验证组中的软件包
-p, --package 查询/验证一个软件包
--pkgid query/verify package(s) with package identifier
--hdrid query/verify package(s) with header identifier
--triggeredby query the package(s) triggered by the package
--whatrequires query/verify the package(s) which require a
dependency
--whatprovides 查询/验证提供相关依赖的软件包
--nomanifest 不把非软件包文件作为清单处理
查询选项(用 -q 或 --query):
-c, --configfiles 列出所有配置文件
-d, --docfiles 列出所有程序文档
-L, --licensefiles list all license files
--dump 转储基本文件信息
-l, --list 列出软件包中的文件
--queryformat=QUERYFORMAT 使用这种格式打印信息
-s, --state 显示列出文件的状态
验证选项(用 -V 或 --verify):
--nofiledigest 不验证文件摘要
--nofiles 不验证软件包中文件
--nodeps 不验证包依赖
--noscript 不执行验证脚本
安装/升级/擦除选项:
--allfiles 安装全部文件,包含配置文件,否则配置文件会被跳过。
--allmatches 移除所有符合 <package> 的软件包(如果
<package>
被指定未多个软件包,常常会导致错误出现)
--badreloc 对不可重定位的软件包重新分配文件位置
-e, --erase=<package>+ 清除 (卸载) 软件包
--excludedocs 不安装程序文档
--excludepath=<path> 略过以 <path> 开头的文件
--force --replacepkgs --replacefiles 的缩写
-F, --freshen=<packagefile>+ 如果软件包已经安装,升级软件包
-h, --hash 软件包安装的时候列出哈希标记 (和 -v
一起使用效果更好)
--ignorearch 不验证软件包架构
--ignoreos 不验证软件包操作系统
--ignoresize 在安装前不检查磁盘空间
-i, --install 安装软件包
可以看到的是,rpm的参数真的超级的多,看的着实眼花缭乱。
2.2 常用参数的结合
-a | 查询所有的软件包 |
-d | 只列出文本文件,本参数需配合”-l”参数使用 |
-e | 卸载软件包 |
-f | 查询文件或命令属于哪个软件包 |
-h | 安装软件包时列出标记 |
-i | 安装软件包 |
-l | 显示软件包的文件列表 |
-p | 查询指定的rpm软件包 |
-q | 查询软件包 |
-R | 显示软件包的依赖关系 |
-s | 显示文件状态,本参数需配合”-l”参数使用 |
-U | 升级软件包(Upgrade) |
-v | 显示命令执行过程 |
-vv | 详细显示指令执行过程 |
三、命令实战-安装、查询、删除、升级
1)安装软件包
下载安装(i)软件包,并且显示命令执行过程(v)和进度条标记(h)
[root@localhost ~]# rpm -ivh /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
准备中... ################################# [100%]
软件包 lrzsz-0.12.20-36.el7.x86_64 已经安装
[root@localhost ~]#
2)查询软件包
查询(q)全部(a)的软件包,这里会显示下载好的软件包,可以用grep过滤,查找看看有没有需要用到的包
[root@localhost ~]# rpm -qa | grep httpd
httpd-2.4.6-98.el7.centos.6.x86_64
httpd-tools-2.4.6-98.el7.centos.6.x86_64
[root@localhost ~]#
也可以通过这个命令查看系统一共有多少个软件包
[root@localhost ~]# rpm -qa | wc -l
1324
可以查看(q)命令是哪个软件包(f)
[root@localhost ~]# which chmod
/usr/bin/chmod
[root@localhost ~]# rpm -qf /usr/bin/chmod
coreutils-8.22-23.el7.x86_64
[root@localhost ~]#
可以查看这个命令文件是否被改动过()
[root@localhost ~]# echo " " >> /usr/bin/chmod
[root@localhost ~]# rpm -Vf !$ #!$的意思是输出上一条命令的最后一段信息
rpm -Vf /usr/bin/chmod
S.5....T. /usr/bin/chmod
[root@localhost ~]#
图中显示了S 5 T,说明文件的大小,MD5校验值,修改时间已改变;
如果修改了属主和属组后,图中还出现了U,G,则表示属主和属组都已修改;
[root@localhost ~]# chown roq:roq /usr/bin/chmod
[root@localhost ~]# ll /usr/bin/chmod
-rwxr-xr-x. 1 roq roq 58658 2月 4 15:17 /usr/bin/chmod
[root@localhost ~]# rpm -Vf !$
rpm -Vf /usr/bin/chmod
S.5..UGT. /usr/bin/chmod
[root@localhost ~]#
可以看下图每个字符代表的含义;
字符 | 含义 |
S | 文件大小已改变; |
M | 文件的类型或者文件的权限(rwx)已改变; |
5 | 文件MD5校验已改变,或者文件里的内容已改变; |
D | 设备的主从代码已改变; |
L | 文件的路径已改变; |
U | 文件的属主(所有者)已改变; |
G | 文件的属组已改变; |
T | 文件的修改时间已改变; |
P | (caPabilities differ)功能已改变; |
查询(q)指定安装包(p)(未安装)的基本信息(i),这里的i指的是信息
[root@localhost ~]# rpm -qpi /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
Name : lrzsz
Version : 0.12.20
Release : 36.el7
Architecture: x86_64
Install Date: (not installed)
Group : Applications/Communications
Size : 184846
License : GPLv2+
Signature : RSA/SHA256, 2014年07月04日 星期五 11时35分32秒, Key ID 24c6a8a7f4a80eb5
Source RPM : lrzsz-0.12.20-36.el7.src.rpm
Build Date : 2014年06月10日 星期二 07时29分11秒
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.ohse.de/uwe/software/lrzsz.html
Summary : The lrz and lsz modem communications programs
Description :
Lrzsz (consisting of lrz and lsz) is a cosmetically modified
zmodem/ymodem/xmodem package built from the public-domain version of
the rzsz package. Lrzsz was created to provide a working GNU
copylefted Zmodem solution for Linux systems.
查询(q)程序包的相关信息(已安装)
[root@localhost ~]# rpm -qi httpd
Name : httpd
Version : 2.4.6
Release : 98.el7.centos.6
Architecture: x86_64
Install Date: 2023年02月04日 星期六 15时39分51秒
Group : System Environment/Daemons
Size : 9829272
License : ASL 2.0
Signature : RSA/SHA256, 2023年01月28日 星期六 02时02分31秒, Key ID 24c6a8a7f4a80eb5
Source RPM : httpd-2.4.6-98.el7.centos.6.src.rpm
Build Date : 2023年01月28日 星期六 01时38分14秒
Build Host : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
[root@localhost ~]#
查询(q)程序包安装之后产生的文件列表(l )
[root@localhost ~]# rpm -ql httpd
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
.........
[root@localhost ~]# rpm -ql httpd | wc -l
496
查询(q)程序包的配置文件(c)
[root@localhost ~]# rpm -qc httpd
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
.......
3)删除软件包
删除(e)软件包,当然也可以加个-vh参数,显示执行的过程和进度条
[root@localhost ~]# rpm -e lrzsz
[root@localhost ~]#
[root@localhost ~]# rpm -ev lrzsz
软件包准备中...
lrzsz-0.12.20-36.el7.x86_64
4)升级软件包
可以升级指定的软件包,这里的升级是U=upgrade,这个过程是不升级系统内核的,只升级对应的安装包
[root@localhost ~]# rpm -Uvh /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:lrzsz-0.12.20-36.el7 ################################# [100%]
[root@localhost ~]#
四、命令参数汇总
4.1 所有参数的结合使用都在这里,可以多了解看下
rpm -qa 查询所有的软件包(已安装)
rpm -q lrzsz 查看命令有没有安装软件包
rpm -qi httpd 查看程序包的相关信息
rpm -qpi httpd 查看未安装包的详细信息
rpm -ql httpd 查看程序包安装产生的文件列表
rpm -qc lrzsz 查看程序包的配置文件
rpm -qd lrzsz 查看程序包的文档信息
rpm -qR lrzsz 查看程序包依赖的包
rpm -Vf chmod 查看命令是否被改动过
rpm -Va 检查所有程序包是否被改动过
rpm -ivh 安装软件包
rpm -Uvh 升级软件包
rpm -evh 删除软件包
五、软件包名称解读
[root@localhost ~]# ls /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
/mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
[root@localhost ~]#
#lrzsz-0.12.20-36.el7.x86_64.rpm
依次代表的意思是:
lrzsz:软件名称
0 :主版本号
12:次版本号
20: 修订版本
36:第几次发版
el7:操作系统
x86_64:软件包是64位的包
总结
rpm命令虽然说功能上都是比较齐全的,但是如果 安装包有依赖的情况下,就需要依次安装对应的依赖包后才能安装需要安装的包,如果依赖的包特别多,在安装的时候就很耽搁时间;后来出现了yum命令,这个命令完美解决了软件包依赖的问题。
相关文章
- 【Linux基础】 diff命令的参数详解和实例
- 【Linux基础】iconv命令详解(编码转换)
- 【Linux基础】Linux更改系统IP
- 【Linux基础】文件处理实例
- 【Linux基础】VM使用
- 【Linux基础】crontab定时命令详解
- Linux基础之命令行浏览器links
- Linux基础命令(常用的)
- Linux-Shell基础(变量,字符串,数组)
- Linux基础之shell变量
- Linux基础命令-scp远程复制文件
- Linux基础命令-uname显示系统内核信息
- Linux基础命令-alias设置别名
- 『学了就忘』Linux基础 — UNIX系统介绍
- Linux Shell脚本编程基础
- Linux基础笔记14 | 正则表达式从崩溃到入门
- Linux基础笔记7 | 文件权限操作
- Linux云计算-03_必备基础命令
- Linux基础入门到精通之安装Linux系统时分区操作(补充)