linux下RPM⼯具的使⽤:RPM安装查询查看卸载升级软件包
⽬录
⼀.关于软件包
在linux中安装软件是需要安装包的,软件的安装包有各种类型:.zip,.rar,.rpm,.,.tar。软件包还可以分为源代码包和⼆进制
包,源代码包是没有经过编译的包,需要经过GCC、C++编译器环境编译才能运⾏。⼆进制包⽆需编译,可以直接安装使⽤。区分是否为
源代码包还是⼆进制包还得基于软件包⾥⾯的⽂件来判断,包含.h、.c、.cpp、.cc等结尾的源码⽂件,称之为源代码包,⽽软件包⾥⾯存
在bin⽬录(bin⽬录⾥有可执⾏⽂件),称之为⼆进制包。源码包⾼度可定制,可以⾃由选择⾃⼰需要的功能。
⼆.RPM软件包
RPM是RPM Package Manager(RPM软件包管理器)的缩写,这⼀⽂件格式名称虽然打上了RedHat的标志,但是其原始设计理念是
开放式的,现在包括OpenLinux、SUSE以及Turbo Linux等Linux的分发版本都有采⽤,可以算是公认的⾏业标准了。RPM包是⼆进制包
可以直接使⽤。
三.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 5.x/CentOS 5.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
< >>>>>>### [100%]
Updating /
1:telnet-1:0.17-64.el7 >>>>>>### [100%]
5.从⽹上下载centos epel扩展源,然后安装
#注释:epel源是对centos7系统中⾃带的 base源的扩展。
[root@node5 ~]# rpm -ivh /pub/arch.rpm
Retrieving /pub/arch.rpm
< >>>>>>### [100%]
Updating /
1:epel-release-7-12 >>>>>>### [100%]
6.安装rpm包的时候,有时候需要解决依赖关系,这时候根据提⽰,优先安装依赖包,再次安装即可。[root@node5 ~]# rpm -ivh mariadb-server-5.5.56-2.el
7.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.arch
......
#查询所有已安装包中带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/
#查询⽂件或命令属于哪个安装包
[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 : s.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <>
Vendor : CentOS
URL : /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 : s.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <>
Vendor : CentOS
URL : /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/
#查看已安装的命令,⽣成了哪些⽂件
[root@node5 ~]# rpm -ql telnet
mysql下载下来没安装包/usr/bin/telnet
/usr/share/doc/telnet-0.17
/
usr/share/doc/telnet-0.17/README
/usr/share/man/man1/
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
T. /usr/bin/telnet
[root@node5 ~]# rpm -V telnet
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 >
[root@node5 ~]# ll -h
-rw-r--r-- 1 root root 629 Oct 19 21:34
[root@node5 ~]# cat
.......T. c /etc/httpd/f
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
T. c /etc/f
missing /var/run/wpa_supplicant
T. c /etc/f
.....UG.. /var/ftp/pub
T. c /etc/sysconfig/iptables
.......T. /usr/aarch64-linux-gnu/include/rpc/netdb.h
T. /usr/bin/telnet
T. c /etc/rc.d/rc.local
.M....... /etc/rc.d/init.d/functions
T. c /f
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
< >>>>>>### [100%] Updating /
1:telnet-1:0.17-64.el7 >>>>>>### [100%]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
最新超详细Linux下LNMP环境搭建
« 上一篇
推荐文章
热门文章
-
随机森林算法的改进方法
2024-10-02 -
基于随机森林算法的风险预警模型研究
2024-10-02 -
Python中的随机森林算法详解
2024-10-02 -
随机森林发展历史
2024-10-02 -
如何使用随机森林进行时间序列数据模式识别(八)
2024-10-02 -
随机森林回归模型原理
2024-10-02 -
如何使用随机森林进行时间序列数据模式识别(六)
2024-10-02 -
如何使用随机森林进行时间序列数据预测(四)
2024-10-02 -
如何使用随机森林进行异常检测(六)
2024-10-02 -
随机森林算法和grandientboosting算法 -回复
2024-10-02 -
随机森林方法总结全面
2024-10-02 -
随机森林算法原理和步骤
2024-10-02 -
随机森林的原理
2024-10-02 -
随机森林 重要性
2024-10-02 -
随机森林算法
2024-10-02 -
机器学习中随机森林的原理
2024-10-02 -
随机森林算法原理
2024-10-02 -
使用计算机视觉技术进行动物识别的技巧
2024-10-02 -
基于crf命名实体识别实验总结
2024-10-02 -
transformer预测模型训练方法
2024-10-02
最新文章
-
随机森林算法介绍及R语言实现
2024-10-02 -
基于随机森林优化的神经网络算法在冬小麦产量预测中的应用研究_百度文 ...
2024-10-02 -
基于正则化贪心森林算法的情感分析方法研究
2024-10-02 -
随机森林算法和grandientboosting算法
2024-10-02 -
基于随机森林的图像分类算法研究
2024-10-02 -
随机森林结合直接正交信号校正的模型传递方法
2024-10-02
发表评论