CentOS软件包管理
  kIM7GUNpnV3x 2023年11月02日 37 0

一:CentOS中RPM软件包管理方式概述

Linux系统中的很多软件除了提供软件本身的程序功能之外,还需要提供该程序使用的库和软件以及配置文件等。因此,在Linux中以软件包为单位处理这些集合。包的组成部分如下图所示:

CentOS软件包管理_配置文件

软件包管理就是安装或者卸载软件,还可以查看当前安装软件的信息以及软件之间的依赖关系,这种检查可以避免软件之间的冲突。软件包之间的依赖关系就是指操作系统软件包a时需要安装软件包b。软件包管理方式在RedHat(CentOS)和Debian(Ubuntu)中有所不同,区别如下表所示:

主要软件包格式

RedHat系列

Debian系列

软件包格式

rpm格式

deb格式

软件包管理命令

rpm命令

dpkg命令

在线升级命令

yum(dnf)命令

apt命令

在CentOS中,虽然rpm和yum包都是软件包管理命令,但是两者之间还是有区别的。

rpm命令:以单个程序为单位管理和执行,软件包之间的依赖关系不会自动解决,但是会预先显示必要的程序包信息。使用rpm命令安装软件包时需要指定路径,且受限于软件的依赖性。

yum命令:具有在线升级软件包功能,可以自动解决依赖关系。yum安装时不需要指定路径,而且会自动安装依赖的软件包,但需要提前配置好yum源。

二:利用rpm命令管理RPM软件包

格式:rpm [软件包] 软件包名称

rpm命令的选项大致可以分为3类,分别是显示类选项、安装类选项和卸载类选项。显示软件包信息的选项如下表所示:

选项

说明

-i、--info

显示指定软件包的详细信息

-a、--all

显示已安装的RPM软件包信息列表

-q 、--query

显示软件版本(已安装的软件)

-f、 --file

显示包含指定文件的RPM软件包

-c、 --configfiles

仅显示指定程序包的配置文件

-d、 --docfiles

仅显示指定包中的文件

-l、 --list

显式指定包中的所有文件

-R、 --requires

显示指定软件包所依赖的RPM软件包名称

-P 、--package

显示有关指定的RPM软件包文件而不是已安装的RMPM软件包名称的信息

不同选项组合起来有不同的显示效果,比如执行rpm -q cups命令显示cups软件包的版本信息,如果使用该命令查看系统中还没有安装的软件包vim,则会提示“未安装软件包vim”,指定-ql表示显示cups软件包中的所有文件。如下图所示:

CentOS软件包管理_配置文件_02

再看一个/etc/skel/.bashrc文件的RPM软件包信息,如下图所示:

CentOS软件包管理_配置文件_03



有关软件包的选项如下表所示:

选项

说明

-i --install

安装软件包(没有更新)

-v  --verbose

显示详细信息

-h --hash

使用#显示进度

-U --upgrade

升级软件包,若不存在则安装新软件包

-F  --freshen

更新软件包,若不存在,则不会执行任何操作

--nodeps

忽略依赖项并安装

--force

即使已安装指定的软件包,也会执行覆盖安装

--test

在不安装软件包的情况下,检查是否存在冲突并显示结果

通常安装软件包会搭配-ivh这三个选项一起使用,即rpm -ivh软件包名称。指定-q安装软件包时会显示这个软件是否已经安装了,如果没有安装会提示这是未安装的软件包,指定-ivh选项安装软件包时会显示更加详细的安装信息,还可以看到安装进度,如下图所示:

CentOS软件包管理_CentOS_04


安装软件包时,如果对其他软件包有依赖性,必须同时安装所需的软件包,否则安装将会停止。你可以使用--nodeps选项忽略依赖关系,但是这种操作可能会是其他情况收到涌向。在安装ypbind软件包时由于没有其他软件包而无法安装,这时加入--nodeps选项可以忽略依赖项并安装成功。

如果想卸载软件包,可以指定下面这几个选项,如下表所示:

选项

说明

-e --erase

卸载安装包

--nodeps

忽略依赖软件包并删除软件包

--allmatches

删除与软件包匹配的所有版本的软件包

卸载安装包时会验证rpm软件包之间的依赖性,如果你要卸载的软件包依赖于其他软件包,卸载操作会被中断。忽略依赖项时,可以进行卸载,但其他情况会受影响。下面使用rpm -e命令卸载软件包的过程,如下图所示:

CentOS软件包管理_安装软件_05

在卸载软件时,如果存在软件依赖性,一般不要轻易删除互相依赖的软件包,因为不清楚对系统有没有影响。有时可以指定-nodeps选项忽略依赖关系,但是这样可能会导致相关依赖不可用。

注意:如果使用rpm安装软件包时一直失败,可以:在关机后,"Oracle VM VirtualBox管理器"界面点击“设置按钮”,选择”存储>控制器:IDE“选项单击右边的”添加虚拟光驱“按钮添加CentOS的ISO镜像文件。然后单击”系统”按钮,选择”主板“选项,在启动顺序中取消勾选“光驱”复选框,设置完成后单击OK按钮。

开机后,执行mount -tiso9660/dev/cdrom/mnt.cdrom命令即可以将光驱挂载成功。/mnt目录中的cdrom目录需要使用mkdir命令创建。在/mnt/cdrom中找到Packages目录,安装软件时需要事先进入到Packages目录中。

三:rpm命令和yum命令的区别

yum命令是一个开源的命令行管理工具,这个命令广泛应用于在LInux系统上管理和维护RPM软件包。yum命令通过解决软件包的依赖性,自动安装、删除和更改软件包,当yum安装和升级一个软件包时,它会安装和升级所有依赖包的软件包。所有的RPM软件包都存储在软件库当中,用户可以使用yum命令从软件库当中下载安装到系统当中。

格式:yum [选项] {子命令} [软件包名称]

yum命令和它的子命令组合起来可以显示和搜索软件包的相关信息。下面是使几个和搜索与显示相关的子命令,如下表所示:

子命令

说明

list

显示所有可用的RPM软件包信息

list installed

显示已安装的的RPM软件包

info

显示有关指定的RPM软件包的详细信息

search

使用指定的关键字搜索RPM软件包并显示结果

deplist

显示指定的RPM包的依赖项信息

可以使用yum命令与上面的的各种子命令组合起来显示软件包的信息。

CentOS软件包管理_安装软件_06

上面截图中,利用yum installed命令显示已安装的RPM软件包信息。

执行yum info bash命令显示软件包bash的详细信息,包括软件包bash的名臣、版本、大小等,如下图所示:

CentOS软件包管理_CentOS_07

在执行软件包管理系统时,使用yum命令非常方便。yum和子命令搭配可以用来安装、更新和卸载软件包,如下表所示:

子命令

说明

install

安装指定的rpm软件包,会自动解决依赖问题

update

更新所有可以更新的已安装的rpm软件包,也可以指定单个rpm软件包进行更新

upgrade

整个系统的升级发行般

remove

卸载指定的rpm软件包

在更新软件包时,可以一次更新一个单独的软件包、多个软件包或全部的软件包。如果在更新时存在任何有关依赖关系的包,那么所依赖的软件包也会被同时更新。在使用yum命令安装或更新软件包时,yum命令总是时会安装一个新内核来取消安装和更新内核软件包之间的差别。

执行yum install zsh命令可以安装zsh安装软件包时,安装过程有提示确认消息时,输入y就可以继续安装,直到成功完成软件的安装,如下图所示。

CentOS软件包管理_安装软件_08

安装完成之后,你可以使用yum list命令指定软件包的名称检查是否安装了这个软件包,如下图所示,

CentOS软件包管理_配置文件_09

想要卸载之前安装的zsh软件包,可以使用yum remove zsh命令。卸载过程中会有卸载确认的提示信息。

CentOS软件包管理_安装软件_10

四:yum命令的配置文件

yum命令的主要配置文件是/etc/yum.conf,这个文件包含了基本的配置信息,例如yum执行期间的日志文件规范。yum的配置文件有配置文件/etc/yum.conf和资源库配置目录/etc/yum.repos.d。Linux系统中将有关每个软件库的消息都存储在了/etc/yum.repos.d目录下的一个单独文件中,这些文件定义了要使用的软件库。

CentOS软件包管理_CentOS_11



在/etc/yum.conf文件中,[main]的部分中所定义的都是全局设置,下面是每个参数的·含义:

cachedir:存储下载软件包的目录。

keepcache:如果该值为0,表示在安装软件包之后删除它们。

debuglevel:记录日志的信息量,数值从0到1.

logfile:yum的日志文件。

exactarch:该值为1时,表示yum只更新相同的体系结构的软件包。

obsoletes:该值为1时,表示yum在更新期间替换废弃的软件包。

gpgcheck:该值为1时,表示yum检查GPG签名以验证软件包的授权。

plugins:该值为1时,开启有扩展功能的yum plugins。

installonly_limit:对于单一的软件包可以同时安装的最大版本数.

进入/etc/yum,repos.d目录中,使用ls命令可以查看到这个目录下的每一个存储库服务器的配置文件,如下图所示:

CentOS软件包管理_配置文件_12

下面来说一下yum的存储库,存储库是指用户要下载文件的存储位置,除了使用网络上的服务器之外,还应该在文件系统中指定一个特定的目录作为存储库。

CentOS的存储库有提供CentOS正式支持的软件包的标准存储库,也有提供来自第三方的其他软件包的外部存储库,安装CentOS时的配置文件在/etc/yum,repos.d目录中。存储库的主要类型如下:

存储库

说明

配置文件

base

CentOS租用的软件包,此软件包包含在ISO影像中进行安装








CentOS-Base.repo

updates

CentOS租赁后更新的软件包

CentOS-Base.repo

extras

附加和上游戏包

CentOS-Base.repo

c7-media

使用DVD或ISO映像的存储库

CentOS-Medio.repo

 使用cat命令查看存储服务器配置文件,即CentOS.repo配置文件内容。

CentOS软件包管理_CentOS_13

其中name表示存储库的名称,morrorlist字段指定包含存储服务器列表的URL,baseurl(注释行,默认在首行带#)字段指定centos.org的存储库URL。



















【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月06日   29   0   0 sarcentos
  wwLZeziuqjLR   2023年12月11日   32   0   0 Dockercentos
  LE2wsiBPlOhg   2023年12月06日   33   0   0 Dockercentos
  wwLZeziuqjLR   2023年12月08日   103   0   0 Dockercentosbash
  wwLZeziuqjLR   2023年12月07日   36   0   0 Dockercentos
  wwLZeziuqjLR   2023年12月06日   28   0   0 abTime数据centos
  9JCEeX0Eg8g4   2023年12月11日   26   0   0 mysql配置文件
kIM7GUNpnV3x