跳至正文

Red Hat系列的包管理器(附:源代码编译安装)

RPM(Red Hat Package Manager)

  • 定义:RPM 是一种软件包管理工具,主要用于基于 Red Hat 的 Linux 发行版(如 RHEL、CentOS、Fedora)安装、卸载、升级和查询软件包。
  • 功能
    • 安装 .rpm 格式的软件包。
    • 卸载已安装的软件包。
    • 查询软件包信息(比如版本、文件列表等)。
    • 验证软件包完整性和一致性。
  • 特点
    • 只处理单个软件包,不处理依赖关系。
    • 需要用户自己解决依赖问题。

YUM(Yellowdog Updater Modified)

  • 定义:YUM 是基于 RPM 的高级包管理工具,能自动处理软件包的依赖关系,简化软件安装和管理。
  • 功能
    • 自动解决和安装依赖包。
    • 从软件仓库(Repository)中下载安装软件。
    • 支持安装、升级、卸载软件包。
    • 支持仓库管理和搜索软件包。
  • 特点
    • 依赖自动处理,用户操作更方便。
    • 支持远程仓库,方便更新和安装。
    • 比 rpm 更智能、易用。

RPM

使用 RPM 机制封装的软件包文件拥有约定俗成的命名格式。
一般使用“软件名-软件版 本 – 发 布 次 数 . 操 作 系 统 类 型 . 硬 件 架 构 类 型 .rpm” 的 文 件 名 形 式 , 如 “bash-4.2.46-20.el7_2.x86_64.rpm”。

其中硬件平台通常为“i386”或“i686”等,表示适用于 Intel 公司的处理器,“x86_64”表示适用于 64 位的系统,如果是“noarch”表示不区分硬件架 构(支持不同硬件体系的处理器)。
CentOS 的 DVD 安装光盘携带的大部分软件包都在 Packages 目录中,通过该目录中 的文件可以熟悉 RPM 软件包的一般命名格式。例如,以下操作用于查看 DVD 光盘设备中 携带的 bash 和 fontconfig-devel 软件包(分别是 Shell 解释器、字体配置和定制库)。一般 情 况 下 , CentOS 启 动 后 安 装 光 盘 会 自 动 挂 载 到 系 统 的 /run/media/root/CentOS\7\x86_64/Packages/目录下。

查看已经安装的信息

命令作用描述
rpm -q 软件名查询指定软件是否已安装
`rpm -qi 软件名`显示已安装的指定软件的详细信息
rpm -ql 软件名显示已安装的指定软件的文件列表
`rpm -qc 软件名`列出已安装的指定软件的配置文件
`rpm -qd 软件名`列出已安装的指定软件的软件包文档所在位置
rpm -qR 软件名列出已安装的指定软件的依赖的软件包及文件
`rpm -qF 文件或目录`查询已安装的指定软件属于哪个安装包
`rpm -qa`显示当前系统中以 rpm 方式安装的所有软件列表
rpm -qa | grep -i postfix查询软件 postfix 是否已安装
rpm -qf 文件或目录查看指定的文件或目录是哪个软件包所安装的

查询未安装的 RPM 软件包文件中信息

命令作用描述
rpm -qpi RPM包文件名查询指定软件包的详细信息
rpm -qpl RPM包文件名查询指定软件包的文件列表
rpm -qpc RPM包文件名查询指定软件包的配置文件
rpm -qpd RPM包文件名查询指定软件包的软件包文档的位置

安装、升级、卸载 RPM 软件包

格式和参数:

rpm [选项] RPM包文件
rpm -ivh RPM软件包

-i:安装一个新的 RPM 软件包。
-U:升级某个软件包,若未安装过,则进行安装。
-F:升级某个软件包,若未安装过,则放弃安装。
-h:在安装或升级软件包的过程中,以“#”号显示安装进度。
-v:显示软件安装过程中的详细信息。
–force:强制安装某个软件包,比如要安装版本更旧的软件包
-e:卸载指定名称的软件包。
–nodeps:在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系。

YUM

安装源代码软件包需要编译安装,需要安装支持c和c++程序语言的编译器,如gcc、gcc-c++、make
如果使用rpm方式安装,则需要先安装多个依赖包,这样会很繁琐。这里可以使用 yum方式进行一键安装。

自定义的yum的源,默认在/etc/yum.repos.d/下面,可以自己建立新的repo来使得yum工作。

repo文件示例

新建文件/etc/yum.repos.d/local.repo

[local]    #仓库类别
name=local     #仓库名称
baseurl=file:///mnt     #指定URL 访问路径为光盘挂载目录
enabled=1     #开启此yum源,此为默认项,可省略
gpgcheck=0     #不验证软件包的签名

新建源完成后,使用yum clean all && yum makecache 以删除yum缓存并更新

yum常用的操作命令

命令作用描述
yum -y install 软件名安装、升级软件包,“-y”表示自动确认
yum -y remove 软件名卸载软件包,可自动解决依赖关系
yum -y update 软件名升级软件包
yum list查询软件包列表
yum list installed查询系统中已安装的软件包
yum list available查询仓库中尚未安装的软件包
yum list updates查询可以升级版本的软件包
yum info 软件名查询软件包的描述信息
yum search [all] 关键词根据关键词查找相关软件包
yum whatprovides 命令查询命令属于哪个软件包
yum install 包名 -y --downloadonly --downloaddir=/tmp/下载RPM包到指定目录

示范:使用yum安装一些开发工具

在线repo源

阿里云的 yum 源是国内很多 Linux 用户常用的镜像源之一,它速度快、稳定,适合用来替换默认的官方 yum 源,从而提高软件包下载和更新的速度。

备份当前的 yum 源配置:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载阿里云的 CentOS 7 yum 源配置文件:
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

【可选】腾讯的软件源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo

清理缓存并重新生成缓存:
yum clean all
yum makecache

自此,就可以直接使用在线仓库来管理系统的软件了。

源代码安装

源码安装是指通过下载软件的源代码文件(通常是 .tar.gz.tar.bz2 等压缩包),然后在本地编译生成可执行文件,再安装到系统中。
源码安装允许用户自定义编译选项、安装路径,甚至可以修正源码中的bug或应用补丁。

开发工具预装

yum install gcc* apr-devel* pkgconfig* libapr* pcre pcre-devel libtool libxml2-devel apr-util* -y

编译安装的基本过程:
1)tar 解包
tar zxvf/jxvf xxx.tar.gz/xxx.tar.bz2 -C 目标路径
2)配置软件模块(安装路径、开启或关闭模块功能、管理服务进程的用户设定)
./configure --prefix=目标路径(此软件安装到哪里去)
3)编译(将源代码转换为可执行的程序)
make
4)安装
make install

结语

RPM 是一种基于二进制包的低级软件管理工具,直接安装 .rpm 格式的软件包。它操作灵活,适合精确管理单个软件包,但它不会自动处理依赖关系,用户需要自行解决依赖问题。因此,rpm 适用于已经明确依赖关系且只需快速安装特定包的场景。

YUM 则是基于 RPM 之上的高级包管理器,能够自动解决软件包之间的依赖问题。它支持从远程仓库下载安装和升级软件包,使用起来更简单方便,特别适合日常的软件安装和系统更新管理。由于依赖仓库的可用性,yum 在灵活性上不如源码安装,但极大地提高了用户体验和效率。

源码安装 是从软件的源代码开始,经过编译和构建后安装到系统中。它允许用户根据需求自定义编译参数和安装路径,适合需要特定版本或特殊功能的软件,或者官方仓库中没有的包。源码安装虽然灵活强大,但过程复杂且耗时较长,依赖和卸载管理相对麻烦,更适合有一定技术背景的用户使用。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注