linux下RPM工具的使用:RPM安装/查询/查看/卸载/升级软件包

人生的哲理 2020-11-09 16:55:35
linux 工具 使用 rpm


一.关于软件包

​ 在linux中安装软件是需要安装包的,软件的安装包有各种类型:.zip,.rar,.rpm,.tar.gz,.tar。软件包还可以分为源代码包和二进制

包,源代码包是没有经过编译的包,需要经过GCC、C++编译器环境编译才能运行。二进制包无需编译,可以直接安装使用。区分是否为

源代码包还是二进制包还得基于软件包里面的文件来判断,包含.h、.c、.cpp、.cc等结尾的源码文件,称之为源代码包,而软件包里面存

在bin目录(bin目录里有可执行文件),称之为二进制包。源码包高度可定制,可以自由选择自己需要的功能。

二.RPM软件包

​ RPM是RPM Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是

开放式的,现在包括OpenLinux、SUSE以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。RPM包是二进制包

可以直接使用。

​ rpm包的获取方式:Centos系统镜像光盘;网站http://rpmfind.net/;各种软件的官网下载。

三.RPM包通用的命名规则

RPM包的一般命名规则为:name-version-arch.rpm或者name-version-arch.src.rpm。

  • ​ name就是软件包的名称
  • ​ version是软件的版本号,版本号的格式通常为“主版本号.次版本号.修正号”,也有发布版本号,表示这个RPM包是第几次编译生成的
  • ​ arch表示软件包适用的硬件平台,目前RPM支持的平台有:i386,i586,i686、sparc,alpha,x86_64等等
  • ​ .rpm或.src.rpm,是RPM包类型的后缀,.rpm是编译好的二进制包,可用rpm命令直接安装;.src.rpm表示是源代码包,需要编译之后才可以使用
  • ​ el* 表示这个软件包的发行商版本,el7表示这个软件包是在RHEL 7.x/CentOS 7.x下使用
  • ​ devel:表示这个RPM包是软件的开发包
  • ​ noarch:说明这样的软件包可以在任何平台上安装,不需要特定的硬件平台。在任何硬件平台上都可以运行
  • ​ manual 手册文档
httpd-2.2.3-29.el5.i386.rpm
软件名称httpd|软件版本号2.2.3|发布版本号29|el5软件包是在RHEL 7.x/CentOS 7.x下使用|包适用的硬件平台i386|RPM包的类型

四.RPM工具的使用

RPM工具可以进行安装、查询、验证、更新、删除等操作。

4.1 rpm安装软件的功能

1.RPM的命令格式:rpm [参数] 软件包,rpm的安装参数有:

  • ​ -i 是install的意思, 安装软件包
  • ​ -v 显示附加信息,提供更多详细信息
  • ​ -V 校验,对已经安装的软件进行校验
  • ​ -h --hash 安装时输出####标记

2.使用rpm时,什么情况使用软件包全名,什么时候使用软件包名?

答:1.在安装和更新升级时候使用全名;2.对已经安装过的软件包进行操作时,比如查找已经安装的某个包,卸载包等 ,使用包名。

3.当我们使用rpm查找某个rpm安装包的信息时,默认去目录/var/lib/rpm下面进行搜索。当一个 rpm 包安装到系统上之后,安装信息通常

会保存在本地的 /var/lib/rpm/目录下。

[root@node5 ~]# ls /var/lib/rpm
Basenames Conflictname __db.001 __db.002 __db.003 Dirnames Group Installtid Name Obsoletename Packages Providename Requirename Sha1header Sigmd5 Triggername

4.从本地安装rpm安装包

[root@node5 ~]# rpm -ivh telnet-0.17-64.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:telnet-1:0.17-64.el7 ################################# [100%]

5.从网上下载centos epel扩展源,然后安装

#注释:epel源是对centos7系统中自带的 base源的扩展。
[root@node5 ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Retrieving http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Preparing... ################################# [100%]
Updating / installing...
1:epel-release-7-12 ################################# [100%]

6.安装rpm包的时候,有时候需要解决依赖关系,这时候根据提示,优先安装依赖包,再次安装即可。

[root@node5 ~]# rpm -ivh mariadb-server-5.5.56-2.el7.x86_64.rpm
警告:/mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
错误:依赖检测失败:
mariadb(x86-64) = 1:5.5.56-2.el7 被 mariadb-server-1:5.5.56-2.el7.x86_64 需要
perl-DBD-MySQL 被 mariadb-server-1:5.5.56-2.el7.x86_64 需要
解决:
[root@node5 ~]# rpm -ivh /mnt/Packages/mariadb-5.5.56-2.el7.x86_64.rpm
[root@node5 ~]# rpm -ivh /mnt/Packages/perl-DBD-MySQL-4.023-5.el7.x86_64.rpm
[root@node5 ~]# rpm -ivh /mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm

4.2 rpm查询的功能

1.rpm查询语法:rpm -q(query),常与下面参数组合使用

  • ​ -a(all) 查询所有已安装的软件包
  • ​ -f(file)查询系统文件名(查询系统文件所属哪个软件包),反向查询
  • ​ -i 显示已经安装的rpm软件包信息,后面直接跟包名
  • ​ -l(list) 查询软件包中文件安装的位置
  • ​ -p 查询未安装软件包的相关信息,后面要跟软件的全名
  • ​ -R 查询软件包的依赖性
#查询zsh包是否安装
[root@node5 ~]# rpm -q zsh
zsh-5.0.2-34.el7_8.2.x86_64
#查询所有已安装的软件包
[root@node5 ~]# rpm -qa
......
libX11-1.6.7-2.el7.x86_64
kernel-3.10.0-693.el7.x86_64
setup-2.8.71-7.el7.noarch
......
#查询所有已安装包中带rest关键字的包
[root@node5 ~]# rpm -qa | grep rest
rest-0.8.1-2.el7.x86_64
#查看find命令的路径
[root@node5 ~]# which find
/usr/bin/find
#查看find命令的路径
[root@node5 ~]# whereis find
find: /usr/bin/find /usr/share/man/man1/find.1.gz
#查询文件或命令属于哪个安装包
[root@node5 ~]# rpm -qf /usr/bin/find
findutils-4.5.11-5.el7.x86_64
#查询已经安装的rpm包的详细信息或作用
[root@node5 ~]# rpm -qi hardlink
Name : hardlink
Epoch : 1
Version : 1.0
Release : 19.el7
Architecture: x86_64
Install Date: Fri 26 Apr 2019 05:10:21 PM CST
Group : System Environment/Base
Size : 16545
License : GPL+
Signature : RSA/SHA256, Fri 04 Jul 2014 09:53:40 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : hardlink-1.0-19.el7.src.rpm
Build Date : Tue 10 Jun 2014 02:26:04 PM CST
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://pkgs.fedoraproject.org/gitweb/?p=hardlink.git
Summary : Create a tree of hardlinks
Description :
hardlink is used to create a tree of hard links.
It's used by kernel installation to dramatically reduce the
amount of diskspace used by each kernel package installed.
#查询没有安装的rpm包的详细信息或作用
[root@node5 ~]# rpm -qpi telnet-0.17-64.el7.x86_64.rpm
Name : telnet
Epoch : 1
Version : 0.17
Release : 64.el7
Architecture: x86_64
Install Date: (not installed)
Group : Applications/Internet
Size : 115888
License : BSD
Signature : RSA/SHA256, Fri 11 Aug 2017 04:04:43 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : telnet-0.17-64.el7.src.rpm
Build Date : Fri 04 Aug 2017 04:00:38 AM CST
Build Host : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://web.archive.org/web/20070819111735/www.hcs.harvard.edu/~dholland/computers/old-netkit.html
Summary : The client program for the Telnet remote login protocol
Description :
Telnet is a popular protocol for logging into remote systems over the
Internet. The package provides a command line Telnet client
#查看rpm安装后,将生成哪些文件
[root@node5 ~]# rpm -qpl telnet-0.17-64.el7.x86_64.rpm
/usr/bin/telnet
/usr/share/doc/telnet-0.17
/usr/share/doc/telnet-0.17/README
/usr/share/man/man1/telnet.1.gz
#查看已安装的命令,生成了哪些文件
[root@node5 ~]# rpm -ql telnet
/usr/bin/telnet
/usr/share/doc/telnet-0.17
/usr/share/doc/telnet-0.17/README
/usr/share/man/man1/telnet.1.gz

4.3 rpm查看软件包内容是否被修改

1.语法:rpm -V包名 或者 rpm -Vf 文件路径

[root@node5 ~]# which telnet
/usr/bin/telnet
[root@node5 ~]# rpm -qf /usr/bin/telnet
telnet-0.17-64.el7.x86_64
#查看telnet命令内容是否被修改,没有输出,则没有被修改
[root@node5 ~]# rpm -Vf /usr/bin/telnet
[root@node5 ~]# echo aaa >> /usr/bin/telnet
[root@node5 ~]# rpm -Vf /usr/bin/telnet
S.5....T. /usr/bin/telnet
[root@node5 ~]# rpm -V telnet
S.5....T. /usr/bin/telnet
#注释:如果执行rpm -V 包名 出现的全是点,表示测试通过,命令内容没有被修改
#出现下面的字符代表测试的失败,即是命令内容被修改
5 — MD5 校验和是否改变,你也看成文件内容是否改变
S — 文件长度,大小是否改变
L — 符号链接,文件路径是否改变
T — 文件修改日期是否改变
D — 设备
U — 用户,文件的属主
G — 用户组
M — 模式 (包含许可和文件类型)
? — 不可读文件
#文件类型
c 配置文件
d 普通文件
g 不该出现的文件,意思就是这个文件不该被这个包所包含
l 授权文件(license file)
r 描述文件

2.查看系统中所有的rpm包及安装的文件有没有被黑客修改过?

#注释:检查时参考了/var/lib/rpm 目录下的rpm数据库信息
[root@node5 ~]# rpm -Va > rpm_check.txt
[root@node5 ~]# ll rpm_check.txt -h
-rw-r--r-- 1 root root 629 Oct 19 21:34 rpm_check.txt
[root@node5 ~]# cat rpm_check.txt
.......T. c /etc/httpd/conf/httpd.conf
S.5....T. c /etc/sysconfig/authconfig
....L.... c /etc/pam.d/fingerprint-auth
....L.... c /etc/pam.d/password-auth
....L.... c /etc/pam.d/postlogin
....L.... c /etc/pam.d/smartcard-auth
....L.... c /etc/pam.d/system-auth
S.5....T. c /etc/security/limits.conf
missing /var/run/wpa_supplicant
S.5....T. c /etc/vsftpd/vsftpd.conf
.....UG.. /var/ftp/pub
S.5....T. c /etc/sysconfig/iptables
.......T. /usr/aarch64-linux-gnu/include/rpc/netdb.h
S.5....T. /usr/bin/telnet
S.5....T. c /etc/rc.d/rc.local
.M....... /etc/rc.d/init.d/functions
S.5....T. c /etc/sysctl.conf

4.4 rpm卸载软件的功能

1.卸载软件的语法:rpm -e(erase) 包名

[root@node5 ~]# rpm -q telnet
telnet-0.17-64.el7.x86_64
[root@node5 ~]# rpm -e telnet
[root@node5 ~]# rpm -q telnet
package telnet is not installed
#有时候卸载的软件包有依赖关系,所以加上--nodeps强制卸载软件
[root@node5 ~]# rpm -e --nodeps lrzsz

4.5 rpm升级软件的功能

1.语法:rpm -Uvh 包名

[root@node5 ~]# rpm -Uvh telnet-0.17-64.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:telnet-1:0.17-64.el7 ################################# [100%]
版权声明
本文为[人生的哲理]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/renshengdezheli/p/13949405.html

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云