运维之道 | RPM

RPM

一、RPM工具简介

RPM是"Redhat Package Manager"的缩写,根据名字也能猜到这是Redhat公司开发出来的。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。

如果你的光驱中还有系统安装盘的话,你可以通过mount /dev/cdrom /mnt命令把光驱挂载到/mnt目录下,那么你在/mnt/CentOS目录下看到很多.rpm的文件,这就是RPM包了。
在这里插入图片描述
每一个rpm包的名称都由"-“和”."分成了若干部分。就拿 a2ps-4.13b-57.2.el5.i386.rpm 这个包来解释一下,a2ps 为包名4.13b则为版本信息57.2.el5为发布版本号i386为运行平台。其中运行平台常见的有i386, i586, i686, x86_64 ,需要你注意的是cpu目前是分32位和64位的,i386,i586和i686都为32位平台,x86_64则代表为64位的平台。另外有些rpm包并没有写具体的平台而是noarch,这代表这个rpm包没有硬件平台限制。例如 alacarte-0.10.0-1.fc6.noarch.rpm 。下面介绍一下rpm常用的命令。


二、RPM命令使用解析

1、安装一个rpm包

rpm -ivh rpm包名
在这里插入图片描述

  • -i :安装的意思
  • -v :可视化
  • -h :显示安装进度
    另外在安装一个rpm包时常用的附带参数有:
  • --force 强制安装,即使覆盖属于其他包的文件也要安装
  • --nodeps 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包
2、升级一个rpm包

rpm -Uvh filename -U

3、卸载一个rpm包

rpm -e filename 这里的filename是通过rpm的查询功能所查询到的
在这里插入图片描述
卸载时后边跟的filename和安装时的是有区别的。上面命令提到的 “|”在linux系统中用的非常多也非常有用,它是一个管道符,用来把前面运行的结果传递给后面的命令。以后会做详细介绍,而后出现的grep命令则是用来过滤某个关键词的工具,在后续章节中会做详细介绍。

4、查询一个包是否安装

rpm -q rpm包名(这里的包名,是不带有平台信息以及后缀名的)
在这里插入图片描述

5、查询当前系统中所安装的所有rpm包

rpm -qa | head (分页查询)
在这里插入图片描述

6、查询一个rpm包的相关信息

rpm -qi 包名 (同样不需要加平台信息与后缀名)
在这里插入图片描述

7、列出一个rpm包安装的文件

rpm -ql 包名
在这里插入图片描述
通过上面的命令可以看出vim是通过安装vim-enhanced-7.0.109-6.el5这个rpm包得来的。那么反过来如何通过一个文件去查找是由安装哪个rpm包得来的?

8、列出某一个文件属于哪个rpm包

rpm -qf 文件的绝对路径
在这里插入图片描述
前面讲过如何查找一个文件(可执行命令)的绝对路径
在这里插入图片描述
所以你也可以把这两条命令连起来写
在这里插入图片描述


三、安装源码包

源码包的编译用到了linux系统里的编译器,常见的源码包一般都是用C语言开发的,这也是因为C语言为linux上最标准的程序语言。Linux上的C语言编译器叫做gcc,利用它就可以把C语言变成可执行的二进制文件。所以如果你的机器上没有安装gcc就没有办法去编译源码。你可以使用 yum install -y gcc 来完成安装。
安装一个源码包,通常需要三个步骤:

1、./config在这一步可以定制功能,加上相应的选项即可,具有有什么选项可以通过”./config --help ”命令来查看。在这一步会自动检测你的linux系统与相关的套件是否有编译该源码包时需要的库,因为一旦缺少某个库就不能完成编译。只有检测通过后才会生成一个Makefile文件。
2、make 使用这个命令会根据Makefile文件中预设的参数进行编译,这一步其实就是gcc在工作了。
3、make install安装步骤,生成相关的软件存放目录和配置文件的过程。

实例:

1、下载一个源码包

在这里插入图片描述
这里要提一下,建议以后你把所有下载的源码包放到/usr/local/src/目录下,这个并不是必须的,只是一个约定。方便你和你的同事将来更好的去运维这台服务器。wget即为下载的命令,后边跟源码包的下载地址。该地址为笔者从网上找的一个apache的下载地址。

2、解压源码包

在这里插入图片描述

3、配置相关的选项,并生成Makefile

在这里插入图片描述
使用./config --help 可以查看可用的选项。一般常用的有“–prefix=PREFIX ”这个选项的意思是定义软件包安装到哪里。到这里,笔者再提一个小小的约定,通常源码包都是安装在/usr/local/目录下的。比如,我们把apache安装在/usr/local/apache2下,那么这里就应该这样写” --prefix=/usr/local/apache2”。其他还有好多选项,如果你有耐心你可以挨个去看一看都有什么作用。
在这里插入图片描述
笔者在这里只定义了apache的安装目录,其他都是默认。回车后,开始执行check操作。
在这里插入图片描述
等check结束后生成了Makefile文件
在这里插入图片描述
除了查看有没有生成Makefile文件来判定有没有完成./config 的操作外,还可以通过这个命令”echo $?”来判定,如果是0,则表示上一步操作成功完成,否则就是没有成功。
在这里插入图片描述

4、进行编译

在这里插入图片描述
这一步操作,就是把源代码编译成二进制的可执行文件,这一步也是最漫长的一步,编译时间的长短取决于源代码的多少和机器配置。

5、安装

在这里插入图片描述
在安装前,先确认上一步操作是否成功完成。
在这里插入图片描述
make install 会创建相应的目录以及文件。当完成安装后,会在/usr/local目录下多了一个apache2目录,这就是apache所安装的目录了。
在这里插入图片描述


Yum、RPM、源码安装,三者区别

发布了97 篇原创文章 · 获赞 10 · 访问量 3397

猜你喜欢

转载自blog.csdn.net/VillianTsang/article/details/103626589
rpm