CentOS7程序包的管理与安装

# 程序包管理

  • RPM

RPM 是 Red Hat Package Manager(RPM 程序包管理器)的缩写,其设计理念是开放式的,现在包括 OpenLinux、SUSE 及 Turbo Linux 等 Linux 的分发版本都有采用,可以算是公认的行业标准了。

RPM 默认去 /var/lib/rpm 目录下进行搜索。当一个 rpm 包安装到系统上之后,安装信息通常会保存在本地的 /var/lib/rpm/ 目录下。

RPM 工具的使用分为安装、查询、验证、更新、删除等操作。

  • YUM

Yum 的全称是 Yellowdog Updater Modified,是程序包的前端管理工具。前端管理工具实际上并不能取代程序包管理器,而仅作为程序包管理器的补充。Yum 在工作时还需要依赖 RPM 程序包管理器来完成工作。Yum 能够自动解决包依赖关系问题,自动下载程序,它是基于 C/S(客户端/服务端)的架构。C 代表 Client 客户端,S 代表服务器端,服务器端可以是 ftp、http 或 file。

Yum 的工作机制如下:当安装某个程序时,不管该程序包有多少层依赖或依赖多少个程序包,Yum 都能够找到所被依赖的程序包,并在本地完成所需程序的安装。Yum 能够自动解决依赖关系,那么程序包是怎么来的?Yum 的自动解决依赖的过程依赖某一种机制,在某一个地方存放着程序包。文件服务器能够通过 Yum 所支持的文件共享机制共享各 RPM 包。这个文件服务器所输出的路径,给 Yum 工作提供后端支持以获取所需的任意 RPM 包,这个后端支持称为 Yum 仓库。

但仅靠一个 Yum 仓库不能完成 Yum 的工作,Yum 需要自行发现各 RPM 包的依赖关系,并且根据其依赖关系到 Yum 仓库中找到所被依赖的程序包。那么,Yum 仓库中有多少个 RPM 包?各 RPM 包的依赖关系是什么?是否有依赖 Yum 仓库内并不存在的 RPM 包?这些都需要事先定义,也就是说,这种依赖关系并不是 Yum 自身就能够得知的,Yum 也是通过查询某个文件后得知的。

因此,Yum 仓库中不仅有 RPM 包,还包含一些元数据文件,每一个 RPM 包的名称、安装后能提供哪些文件、程序的依赖关系等都存储在这些文件中。Yum 在使用任何一个 Yum 仓库时,首先会获取这些元数据文件,把仓库中的各元数据文件下载并缓存到本地,以便快速分析。而后根据元数据文件分析需要安装的程序是否有依赖关系、所依赖的程序有多少存在于仓库中、有多少本地系统是已经安装了的、还剩余多少尚未安装,根据检测后的结果下载所需要的程序包,并在本地安装。

Yum 在获取服务端的元数据文件并缓存到本地以后,下次安装时就不用再去服务端下载,而是直接查询本地缓存即可,但是 Yum 每次查询本地缓存的元数据文件时,也会到服务端根据元数据文件的 MD5 码做检测对比。如果服务端的元数据文件发生了改变,Yum 会自动下载元数据文件到本地,如果没有改变,则不再下载,直接使用本地的元数据文件,当然,也可以手动清除 Yum 的缓存元数据文件。

# 程序包类型

程序包的类型分为以下两种:

tar 源码包:是开发者开发后的源代码程序包,在安装时需要先编译再进行安装。

rpm 二进制包:是经过发布者使用 GCC 编译后的程序包。

# RPM 包简介

  • 获取方式网站 rpmfind.net
  • 软件包
  • 软件命名规则

提示

修订:即第几次修改bug。

发布:即第几次发布。发布时,可能只是对软件安装的默认参数做了修改,而没有其他改动。

# RPM 包安装

  • rpm 安装命令。
安装命令使用格式

rpm [参数] 程序包

命令参数如下:

-i:install的意思,安装程序包。

-v:显示附加信息,提供更多详细信息。

-V:校验,对已经安装的软件进行校验。

-h:--hash,安装时输出####的标记。

问题解答

问:使用 rpm 时,什么情况下使用程序包全名,什么时候使用程序包名?

答:在安装和更新升级时使用软件命名。对已经安装过的程序包进行操作时,如查找已经安装的某个包、卸载包等,使用程序包名。

  • 从本地安装

例如:zsh-5.0.2-28.el7.x86_64.rpm

  • 从网上下载直接安装

例如:安装 CentOS epel 扩展源

# RPM 查询功能

查询命令使用格式

用法:rpm –q,常与下面的参数组合使用。

-a:查询所有已安装的程序包。

-f:系统文件名(查询系统文件属于哪个程序包),反向查询。

-i:显示已经安装的rpm程序包信息,后面直接跟程序包名。

-l:查询程序包中文件安装的位置。

-p:查询未安装程序包的相关信息,后面要跟软件的名字。

-R:查询程序包的依赖性。

查询已经安装的 rpm 包的详细信息或作用,格式如下:rpm -qi rpm包名。

# 检查程序包内容是否被修改过

检查程序包内容是否被修改过命令使用格式

rpm –V程序包名。rpm -Vf文件路径

例如:检查文件是否被修改过。

注意

如果出现的全是点或没有任何输出结果,则表示检查通过,在检查时实际上参考了 /var/lib/rpm 目录下的 rpm 数据库信息。

检查过程遇到的问题

在检查结果中,出现下面的字符代表检查失败。

① 5:MD5校验和是否改变,也可看成文件内容是否改变。

② S:文件长度,文件大小发生改变。

③ L:符号链接,文件路径发生改变。

④ T:文件修改日期发生改变。

⑤ D:设备文件的主设备号和次设备号不能匹配(发生改变)。

⑥ U:文件的所属主不匹配(发生改变)。

⑦ G:文件的所属组不匹配(发生改变)。

⑧ M:文件权限发生改变。

⑨ ?:不可读文件。

检查结果中,后面的文件名中c表示的是文件类型。比如:[root@xuegod63 ~]# rpm -V dhcpS.5....T. c /etc/dhcp/dhcpd.conf有以下几种文件类型。

① c:配置文件。

② d:普通文件。

③ g:不该出现的文件,意思就是这个文件不该被这个包所包含。

④ l:授权文件(license file)。

⑤ r:描述文件。知识扩展:查看系统中所有的rpm包及安装的文件有没有被修改过。[插图]注意:“>”表示标准输出重定向,将rpm -Va输出到屏幕上的信息重定向到rpm_check.txt文件中。

知识扩展

查看系统中所有的 rpm 包及安装的文件有没有被修改过。

注意

注意:“>”表示标准输出重定向,将 rpm -Va 输出到屏幕上的信息重定向到 rpm_check.txt 文件中。

# RPM 卸载和升级

使用格式

rpm -e程序包名。

  • 卸载
卸载
  • 升级
升级
  • 解决 rpm 依赖关系
依赖关系

解决:安装被依赖的程序包。

解决依赖关系

# YUM

在搞清楚这个问题前,我们先来了解一下 YUM 。YUM(Yellow Dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,避免了手动安装的麻烦(寻找资源、下载;放到指定目录安装;处理依赖关系并下载依赖关系的包进行安装)。所以用 YUM 安装,实质上是用 RPM 安装,所以 RPM 查询信息的指令都可用。如果使用 RPM 安装了一些包,一般来说,RPM 默认安装路径如下:

# 配置 Yum 源

  • 配置本地 Yum 源

1)首先需要把光盘镜像挂载,设置连接光驱,打开下图所示的“虚拟机设置”对话框,选择“CD/DVD(SATA)”,勾选“已连接”和“启动时连接”复选框,单击“浏览(B)”按钮,选择镜像文件,如图8-1所示。

2)确定虚拟机光驱中有加载系统镜像,如下图所示

 配置本地 Yum 源 配置本地 Yum 源

配置本地 Yum 源

3)配置Yum源文件

配置本地 Yum 源
  • 网络 Yum 源

CentOS 7 配置网络 Yum 源

配置本地 Yum 源

提示

wget 命令用来下载文件,选项 -O 表示将 wget 命令下载的文件保存到指定的位置,保存时可以重新起一个名字,也可以直接写一个要保存的路径,这样还用原来的文件名。

查看网络 Yum 源

配置本地 Yum 源

提示

  • $releasever 表示系统版本的值,会自动匹配当前系统的版本号。
配置本地 Yum 源

排错:如果下载 CentOS-7.repo 后不能用,可打开阿里云链接:http://mirrors.aliyun.com/centos/,找到 CentOS 7 最新版本号,并下载,上传到 Linux 系统。

配置本地 Yum 源

执行 sed 命令进行全文替换

配置本地 Yum 源

# Yum 的使用

  • Yum 常用操作
um 常用操作

Yum 报错,注意几个小问题

1)查看光盘是否挂载。

2)配置文件中格式是否正确,字母和符号有没有少写,挂载点和配置文件中的设置是否一致。

3)网络源需要联网,操作和RPM类似,是会自动安装依赖程序包。

  • Yum 安装开发工具程序包组
安装开发工具程序包组

语法:yum groupinstall GROUPNAME

安装开发工具程序包组

测试:

安装开发工具程序包组
上次更新: 2025/03/22, 13:47:44
最近更新
01
Git问题集合
01-29
02
安装 Nginx 服务器
01-25
03
安装 Docker 容器
01-25
更多文章>
×
×