92Linux 系统管理(CentOS)--用 RPM 部署 C

2021-08-15  本文已影响0人  Jachin111

目标

请你登录实验环境后,立即 在命令行中键入如下命令序列来建立实验环境:

wget http://labfile.oss.aliyuncs.com/courses/818/11.tar.gz
tar -xzf 11.tar.gz

查询系统中是否存在名为 finger 的软件包,如不存在则用 rpm 安装命令安装,如存在则更新为如下版本:

finger-0.17-52.el7

查询系统中是否存在名为 gnuplot 的软件包,如不存在则用 rpm 安装命令安装,如存在则更新为如下版本:

gnuplot-4.6.2-3.el7

查询系统中是否存在名为 python 的软件包,如不存在则用 rpm 命令安装,如存在则更新为如下版本:

python-2.7.5-68.el7

查询系统中是否存在名 gcc 的软件包,如不存在则用 rpm 命令安装,如存在则更新为如下版本:

gcc-4.8.5-11.el7

拓展

RPM 软件包封装机制
早期的 Linux 的软件都是通过源码来分发,使用者基本都是通过在自己的 Linux 平台上重新编译源代码来安装软件。这种编译源代码的方式比较繁琐和复杂,要求用户有一定的编程基础,普通用户往往难以掌握,同时软件的管理也非常不便。
为了解决这些问题,红帽公司 (Red Hat, Inc.) 开发了一套开放的软件包封装机制,名为 Red Hat Package Manager/ RPM RPM 是 RHEL、CentOS、Fedora,OpenSuSE 以及其它许多 Linux 操作系统上中默认的软件封装方式,也是是 Linux 中使用最广泛的软件包封装方式之一(还有一种是 DEB 封装方式)。
简单来说,RPM 将软件编译好的二进制文件、所依赖的动态库文件、配置文件以及软件所需 的图片、文档、脚本等打包压缩到一个文件中,这个文件就被称为 RPM 软件包,用户在用这个 RPM 软件包安装软件时,RPM 就将包里的文件解压至目标操作系统上,安装过程中,还可能动态生成一些文件,也一并安装到系统中。
RPM 在安装软件包的同时,还会为已安装的软件包,以及软件包所包含的文件建立了一份数据库,管理程序利用这些内容来安全地定位、安装和卸载软件。因此对于终端用户而言,RPM 使得软件管理变得十分容易。
RPM 软件包命名格式
每个软件包文的名字都包含了几个最重要的信息。例如,这就是 CentOS 中 tsclient 软件包的全名,分四个部分,第一部分是软件包的名字,第二部分是软件包版本号,第三部分是软件包适用的硬件架构,最后是固定的后缀 rpm。

tsclient-0.132-6.x86_64.rpm

特别要注意第三部分,因为这部分将决定你下载的软件包是否能够安装到你的机器上,并正常运行,例子中这部分显示的是 x86_64,表示该软件包必须安装在拥有 64 位 CPU 的计算机上,这部分还可能是 i386、i586 或者 i686,这表示软件包必须安装在拥有 32 位 CPU 的计算机上,这部分还可显示 noarch,表示适于所有架构的计算机上。
RPM 软件包的依赖性
事实上 RPM 有一个久为用户诟病的缺点,就是无法解决软件的依赖问题。简单来说,就是用 RPM 来安装软件时可能会出现以下问题:用户要安装软件包 A,RPM 可能会提醒需要先安装软件包 B(A 依赖于软件包 B),B 软件包又可能依赖软件包 C,C 软件包又可能依赖于软件包 D …… 有的软件包所依赖的其他软件包数量甚至多达上百个,安装起来十分麻烦。
究其原因,正是是由于 RPM 程序是已经打包好的数据,也就是说,里面的数据已经都编译完成,所有安装时一定需要当初编译软件源代码时的主机环境才能安装。当初编译这个软件的安装环境必须也要在当前主机上重现才行。
RPM 命令
用法:rpm [选项][软件包名] RHEL 和 CentOS 中自动安装、配置、卸载和升级软件包的工命令
-i <软件包名> 安装软件
-v 显示安装详细信息(与 i 连用)
-h 安装时输出(#)作为进度条(与 iv 连用)
-e <软件包名> 卸载软件
-U <软件包名> 更新一个 rpm 包但不改变其配置文件
-F <软件包名> 更新一个确定已经安装的 rpm 包
--replacepkg 无论软件包是否已被安装,都强行安装
--test 安装测试,并不实际安装
--nodeps 忽略软件包的依赖关系强行安装
--force 忽略软件包及文件的冲突
-q <软件包名> 查询软件包
-a 列出所有软件包(与 q 连用)
-p <软件包名> 列出安装后的软件包名(与 q 连用)

上一篇 下一篇

猜你喜欢

热点阅读