一.关于软件包

​ 在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 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
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%]

linux下RPM工具的使用:RPM安装/查询/查看/卸载/升级软件包的更多相关文章

  1. Linux下SSH工具 PAC Manager的安装

    PAC Manager, Linux下类似SecureCRT Xshell的SSH工具,该工具功能上相当的不错,完全可以代替SecureCRT Xshell的功能. PAC (Perl Auto Co ...

  2. Linux下以tar包的形式安装mysql8.0.28

    Linux下以tar包的形式安装mysql8.0.28 1.首先卸载自带的Mysql-libs(如果之前安装过mysql,要全都卸载掉) rpm -qa | grep -i -E mysql\|mar ...

  3. linux下MySQL 5.6源码安装

    linux下MySQL 5.6源码安装 1.下载:当前mysql版本到了5.6.20 http://dev.mysql.com/downloads/mysql 选择Source Code 2.必要软件 ...

  4. linux自动交互工具expect,tcl安装和安装包,以及自动互信脚本

    linux自动交互工具expect,tcl安装,以及自动互信脚本 工作中需要对几十台服务器做自动互信,无意中发现expect命令,研究一番. 在网上找了许多资料也没有安装成功,摸索着总算成功了.现分享 ...

  5. VMware Linux下拖拽补丁vmtools的安装和卸载

    Linux下拖拽补丁vmtools的安装和卸载 by:授客 QQ:1033553122 Vmware 8.0.4为例子 步骤1.VM->Install Vmware Tools... 步骤2.查 ...

  6. Linux下beego及beego相关插件安装

    Linux下beego及beego相关插件安装 1.下载及配置go环境看见链接: http://golang.org/dl/ 网盘:链接: https://pan.baidu.com/s/1MveUM ...

  7. Linux下SVN服务器安装配置及客户端安装说明

    原文地址:http://wenku.baidu.com/link?url=h3dVAMx4azpOXEND5HQEE6nliE8-zc0GSQ03yv4cUs1vXMALXF64UsK7kT7kXm_ ...

  8. Linux下 rz 和 sz 命令的安装与使用

    目录 Linux下 rz 和 sz 命令的安装与使用 rz/sz命令的安装 sz命令-发送文件到本地(下载): rz命令-本地上传文件到服务器(上传): 声明 Linux下 rz 和 sz 命令的安装 ...

  9. Linux下Apache2.2和PHP5的安装配置

    Linux下Apache2.2和PHP5的安装配置 环境介绍 我安装使用的Linux版本为CentOS6.5最精简版,Apache为2.2.29,PHP版本为5.4.28. 系统安装 首先安装Cent ...

  10. Linux 日志分析工具(logwatch)安装及使用

    Linux 日志分析工具(logwatch)安装及使用 日志是非常重要的系统文件,管理员每天的重要工作就是分析和查看服务器的日志,判断服务器的健康状态.但是日志管理又是一项非常枯燥的工作,如果需要管理 ...

随机推荐

  1. MFC程序隐藏托盘+右键关闭菜单

    背景介绍: 我的程序是启动后,默认就隐藏到托盘中,等待http请求后,显示界面.所以最小化到托盘的代码,我是写在初始化里面.     正文: 一.自定义消息 WM_SHOWTASK #define W ...

  2. openGauss每日一练(全文检索)

    openGauss 每日一练(全文检索) 本文出处:https://www.modb.pro/db/224179 学习目标 学习 openGauss 全文检索 openGauss 提供了两种数据类型用 ...

  3. HDC2021技术分论坛:OpenHarmony驱动框架解读和开发实践

    转自:OpenAtom OpenHarmony    作者:yuanbo,华为高级工程师 在IoT时代下,终端设备差异较大.形态各异.尺寸各异.交互方式各异,解决设备适配问题无疑是实现万物互联的一个关 ...

  4. 51nod 1268

    51nod 1268 基础dfs 题目如下: 给出 N 个正整数组成的数组 A,求能否从中选出若干个,使他们的和 为 K.如果可以,输出:"Yes",否则输出"No&qu ...

  5. gitlib配置

    第1步:下载Java并安装Java.一般来说下载jdk对应的版本就行. 第2步:配置Java环境变量,具体如下: 1. 新建:变量名:JAVA_HOME:变量值:C:\Program Files\Ja ...

  6. 集群部署时的分布式 session 如何实现?

    面试官心理分析 面试官问了你一堆 dubbo 是怎么玩儿的,你会玩儿 dubbo 就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一堆问题,最大的问题就是分布式事务.接口幂等性.分布式锁, ...

  7. 急速上线 Serverless 钉钉机器人“防疫精灵”

    新型冠状病毒疫情肆虐的春节,大家都过得人心惶惶,作为被关在家的程序狗,总觉得要做点什么.于是阿里云 IoT 事业部的几个同学就开始了防疫精灵的开发之路. 从点子到防疫宝,只花了一个下午时间:从防疫宝到 ...

  8. [PHP] 浅谈 Laravel 三大验证方式的区别, auth:api, passport, auth:airlock

    auth:api 最先出来,提供了最简单和最实用的方式进行 api 身份校验. 关于它的含义和用法你可以参考以下两篇: 浅谈 Laravel Authentication 的 auth:api 浅谈 ...

  9. 尝试 IIncrementalGenerator 进行增量 Source Generator 生成代码

    在加上热重载时,源代码生成 Source Generator 的默认行为会让 Visual Studio 有些为难,其原因是热重载会变更代码,变更代码触发代码生成器更新代码,代码生成器更新的代码说不定 ...

  10. 读取 k8s 存储在 etcd 上的数据

    读取 k8s 存储在 etcd 上的数据 Etcd Assistant 是一款 Etcd 可视化管理工具,便捷高效地操作您的 etcd 集群:支持多种键的视图:管理租约.用户.角色和权限. etcd是 ...