Linux包管理完全指南:从yum到dnf的演进与应用

2025/11/13 Linux 系统管理 共 12527 字,约 36 分钟

Linux包管理完全指南:从yum到dnf的演进与应用

在Linux系统管理和开发工作中,包管理是一项基础但至关重要的技能。无论是安装软件、更新系统、解决依赖关系,还是管理软件仓库,掌握高效的包管理工具都能大幅提升工作效率。本文将全面介绍RHEL系Linux发行版中两款最重要的包管理工具——yum和dnf,从基础概念到高级应用,帮助您精通Linux包管理操作。

1. 包管理的基础概念

1.1 什么是包管理

包管理(Package Management)是指在Linux系统中对软件包进行安装、更新、卸载、查询等操作的过程。一个完整的包管理系统通常包括:

  • 包格式:软件的打包格式(如RPM、DEB)
  • 包管理器:执行包操作的工具(如yum、dnf、apt)
  • 软件仓库:存储和分发软件包的服务器
  • 依赖解析:自动处理软件间的依赖关系

1.2 RPM包格式

Red Hat系列Linux发行版(如RHEL、CentOS、Fedora)使用RPM(Red Hat Package Manager)作为基本包格式。RPM包包含:

  • 软件的二进制文件、配置文件和文档
  • 软件的版本信息和依赖关系
  • 安装和卸载脚本

RPM包的文件名通常遵循以下格式:

package-name-version-release.architecture.rpm

例如:nginx-1.24.0-1.el9.x86_64.rpm

1.3 yum与dnf的C/S架构模式

yum和dnf都采用客户端/服务器(C/S)架构模式,其工作原理如下:

  • 服务器端(Repository)
    • 存放RPM包和相关的元数据库
    • 创建yum repository(仓库)时,会在仓库中存储众多RPM包
    • 元数据文件存储在特定目录repodata下,包含包的版本、依赖关系等信息
  • 客户端(yum/dnf工具)
    • 访问yum服务器进行安装、查询等操作
    • 自动下载repodata中的元数据
    • 查询元数据以确定是否存在相关包及依赖关系
    • 自动从仓库中找到相关包下载并安装

1.4 yum与dnf的历史演进

  • yum(Yellowdog Updater, Modified):
    • 2003年发布,基于Python 2开发
    • 作为rpm的前端工具,提供自动依赖解析
    • 广泛应用于RHEL 5-7、CentOS 5-7
  • dnf(Dandified Yum):
    • 2015年首次发布,基于Python 3开发
    • 作为yum的下一代替代品,解决了yum的性能问题
    • 自RHEL 8/CentOS 8起成为默认包管理器

2. yum命令基础

2.1 yum命令语法

yum [选项] [命令] [包名/组名]

2.2 yum常用命令

软件包查询

# 查询可用的软件包
yum list available

# 查询已安装的软件包
yum list installed

# 查询所有软件包(已安装和可用)
yum list all

# 查询特定软件包
yum list nginx

# 查询软件包信息
yum info nginx

# 搜索包含特定关键字的软件包
yum search python3

# 查找哪个软件包提供了特定文件
yum provides /usr/bin/python3

软件包安装

# 安装指定软件包
yum install nginx

# 安装多个软件包
yum install nginx mysql-server php

# 安装本地RPM包(并解决依赖)
yum localinstall package.rpm

# 重新安装软件包
yum reinstall nginx

软件包更新

# 检查可用更新
yum check-update

# 更新所有软件包
yum update

# 更新特定软件包
yum update nginx

# 升级系统到新版本
yum upgrade

软件包卸载

# 卸载软件包
yum remove nginx

# 卸载软件包但保留配置文件
yum erase nginx

2.3 yum仓库管理

# 列出所有启用的仓库
yum repolist enabled

# 列出所有仓库(包括禁用的)
yum repolist all

# 启用仓库
yum-config-manager --enable repo-name

# 禁用仓库
yum-config-manager --disable repo-name

# 安装EPEL扩展仓库
yum install epel-release

2.4 yum配置与仓库管理实践

yum主配置文件

在现代RHEL 9系统中,yum命令实际上是dnf的符号链接,因此yum的主配置文件/etc/yum.conf也是/etc/dnf/dnf.conf的符号链接:

ll /etc/yum.conf

实际输出示例:

lrwxrwxrwx. 1 root root 12  5月  4  2025 /etc/yum.conf -> dnf/dnf.conf

查看配置文件内容:

cat /etc/yum.conf

实际输出示例(带注释说明):

[main]
gpgcheck=1
#安装包前要做包的合法和完整性校验
installonly_limit=3
#同时可以安装3个包,最小值为2,如设为0或1,为不限制
clean_requirements_on_remove=True
#删除包时,是否将不再使用的包删除
best=True
#升级时,自动选择安装最新版,即使缺少包的依赖
skip_if_unavailable=False
#跳过不可用的

[repositoryID]
name=Some name for this repository
#仓库名称
baseurl=url://path/to/repository/
#仓库地址,支持多种协议格式:
# 本地光盘:baseurl=file:///cdrom/AppStream/
# HTTPS镜像:baseurl=https://mirrors.aliyun.com/rockylinux/9.4/AppStream/x86_64/os/
# HTTP镜像:baseurl=http://mirrors.aliyun.com/rockylinux/9.4/AppStream/x86_64/os/
# FTP服务器:baseurl=ftp://10.0.0.159/
# 注意:baseurl指向的路径必须是repodata目录所在的目录
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever
#仓库地址列表,支持使用变量动态生成镜像列表
#常用变量说明:
#  $arch - CPU架构:aarch64|i586|i686|x86_64
#  $basearch - 系统基本体系结构:i386|x86_64
#  $releasever - 系统版本号
#
#带变量的mirrorlist会自动替换为实际值,例如:
#  原始:mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever
#  替换后:mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=x86_64&repo=BaseOS-9
#
#mirrorlist返回的是所有可用镜像地址的列表,
#系统会自动选择最新且距离最近的可用镜像地址
enabled={1|0}
#是否启用,默认值为1,启用
gpgcheck={1|0}
#是否对包进行校验,默认值为1
gpgkey={URL|file://FILENAME}
#校验key的地址
enablegroups={1|0}
#是否启用yum group,默认值为 1
failovermethod={roundrobin|priority}
#有多个baseurl,此项决定访问规则,
#roundrobin 随机,priority:按顺序访问
cost=1000
#开销,或者是成本,
#YUM程序会根据此值来决定优先访问哪个源,默认为1000
metadata_expire=6h
#rocky-9中新增配置,metadata 过期时间
countme=1
#rocky-9中新增配置,默认值false,
#附加在mirrorlist之后,便于仓库收集客户端信息

仓库配置文件

每个软件仓库都有独立的配置文件,存放在/etc/yum.repos.d/目录下:

ll /etc/yum.repos.d/

实际输出示例:

总用量 20
-rw-r--r--. 1 root root 6610  5月 17 11:07 rocky-addons.repo
-rw-r--r--. 1 root root 1165  5月 17 11:07 rocky-devel.repo
-rw-r--r--. 1 root root 2387  5月 17 11:07 rocky-extras.repo
-rw-r--r--. 1 root root 3417  5月 17 11:07 rocky.repo

Rocky Linux国内镜像源

为了提高软件包下载速度,用户可以配置国内的镜像源。以下是几个常用的Rocky Linux国内镜像源:

来源机构地址
阿里云https://mirrors.aliyun.com/rockylinux/
中国科学技术大学http://mirrors.ustc.edu.cn/rocky/
南京大学https://mirrors.nju.edu.cn/rocky/
上海交通大学https://mirrors.sjtug.sjtu.edu.cn/rocky/
东软信息学院http://mirrors.neusoft.edu.cn/rocky/

实际配置示例:阿里云镜像源

以下是使用阿里云镜像源的完整配置示例:

  1. 创建阿里云BaseOS仓库配置文件:
sudo vim /etc/yum.repos.d/aliyun-baseos.repo
  1. 添加以下配置内容:
[aliyun-baseos]
name=aliyun.baseos
baseurl=https://mirrors.aliyun.com/rockylinux/9.6/BaseOS/x86_64/os/
gpgcheck=0
  1. 生成元数据缓存:
yum makecache

实际输出示例:

aliyun.baseos                                                                                                                         5.0 MB/s | 2.5 MB     00:00
Rocky Linux 9 - BaseOS                                                                                                                2.2 kB/s | 4.1 kB     00:01
Rocky Linux 9 - AppStream                                                                                                             1.8 kB/s | 4.5 kB     00:02
Rocky Linux 9 - Extras                                                                                                                1.9 kB/s | 2.9 kB     00:01
元数据缓存已建立。
  1. 验证仓库配置:
yum repolist

实际输出示例:

仓库 id                                                                      仓库名称
aliyun-baseos                                                                aliyun.baseos
appstream                                                                    Rocky Linux 9 - AppStream
baseos                                                                       Rocky Linux 9 - BaseOS
  1. 查看详细仓库信息:
yum repolist -v --repoid=aliyun-baseos

实际输出示例:

加载插件:builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, kpatch, needs-restarting, notify-packagekit, playground, repoclosure, repodiff, repograph, repomanage, reposync, system-upgrade
YUM version: 4.14.0
cachedir: /var/tmp/dnf-soveran-akvddr2r
上次元数据过期检查:0:01:00 前,执行于 2025年11月13日 星期四 22时22分53秒。
仓库ID            : aliyun-baseos
仓库名称          : aliyun.baseos
软件仓库修订版      : 1762376584
更新的软件仓库       : 2025年11月06日 星期四 05时03分04秒
软件仓库的软件包          : 1,171
软件仓库的可用软件包: 1,171
软件仓库大小          : 1.5 G
软件仓库基本 URL       : https://mirrors.aliyun.com/rockylinux/9.6/BaseOS/x86_64/os/ 
软件仓库过期时间        : 172,800 秒 (最近 2025年11月13日 星期四 22时22分53秒)
仓库文件名      : /etc/yum.repos.d/aliyun-baseos.repo
软件包总数:1,171

实际配置示例:南京大学镜像源

以下是使用南京大学镜像源的完整配置示例,包含AppStream、BaseOS和extras三个仓库:

  1. 创建南京大学镜像源配置文件:
sudo vim /etc/yum.repos.d/nju-extras.repo
  1. 添加以下配置内容:
[nju-appstream]
name=nju AppStream
baseurl=https://mirrors.nju.edu.cn/rocky/9.6/AppStream/x86_64/os/
gpgcheck=0

[nju-baseos]
name=nju BaseOS
baseurl=https://mirrors.nju.edu.cn/rocky/9.6/BaseOS/x86_64/os/
gpgcheck=0

[nju-extras]
name=nju extras
baseurl=https://mirrors.nju.edu.cn/rocky/9.6/extras/x86_64/os/
gpgcheck=0
  1. 生成元数据缓存:
yum makecache

实际输出示例:

aliyun.baseos                                                                                                                          22 kB/s | 4.1 kB     00:00
nju AppStream                                                                                                                          23 MB/s | 9.5 MB     00:00
nju BaseOS                                                                                                                            7.6 MB/s | 2.5 MB     00:00
nju extras                                                                                                                             85 kB/s |  17 kB     00:00
Rocky Linux 9 - BaseOS                                                                                                                1.7 kB/s | 4.1 kB     00:02
Rocky Linux 9 - AppStream                                                                                                             4.1 kB/s | 4.5 kB     00:01
Rocky Linux 9 - Extras                                                                                                                3.1 kB/s | 2.9 kB     00:00
元数据缓存已建立。

实际配置示例:本地光盘源

在没有网络连接或需要使用特定版本软件时,可以使用本地光盘作为软件源。以下是在Rocky Linux 9中配置本地光盘源的完整示例:

  1. 挂载光盘到/mnt目录
    mount /dev/cdrom /mnt/
    

    实际输出示例:

    mount: /mnt: WARNING: source write-protected, mounted read-only.
    
  2. 验证光盘内容
    df -h
    

    实际输出示例:

    文件系统             容量  已用  可用 已用% 挂载点
    devtmpfs             4.0M     0  4.0M    0% /dev
    tmpfs                1.8G     0  1.8G    0% /dev/shm
    tmpfs                725M   16M  710M    3% /run
    /dev/mapper/rl-root   70G  6.9G   64G   10% /
    /dev/sda1            960M  562M  399M   59% /boot
    /dev/mapper/rl-home  126G  1.1G  124G    1% /home
    tmpfs                363M   52K  363M    1% /run/user/42
    tmpfs                363M   36K  363M    1% /run/user/1000
    /dev/sr0              12G   12G     0  100% /mnt
    
    ls /mnt/
    

    实际输出示例:

    AppStream  BaseOS  EFI  images  isolinux  LICENSE  media.repo
    
  3. 创建本地光盘源配置文件
    sudo vim /etc/yum.repos.d/cdrom.repo
    
  4. 添加以下配置内容
    [cdrom-appstream]
    name=cdrom appstream
    baseurl=file:///mnt/AppStream/
    gpgcheck=0
    
    [cdrom-baseos]
    name=cdrom baseos
    baseurl=file:///mnt/BaseOS/
    gpgcheck=0
    
  5. 生成元数据缓存
    yum makecache
    
  6. 验证光盘源配置
    yum repolist
    

BaseOS和AppStream目录说明:

  • BaseOS目录
    • 内容:存储着操作系统的核心组件和基本系统工具,如内核、shell工具、系统服务等。
    • 功能:提供操作系统的基本功能和支持,确保系统的正常运行。
  • AppStream目录
    • 内容:存储着用户可能需要的应用程序和软件包的元数据信息,以及软件包依赖关系等。
    • 功能:使用户可以方便地安装和管理这些软件,通常包含用户界面软件、开发工具、数据库工具等应用程序。
  • 关联关系
    • BaseOS和AppStream两个目录之间的关系是互补的。
    • 在安装和管理软件时,系统会从这两个目录中获取所需的软件包和依赖关系,以确保系统的完整性和稳定性。

使用yum makecache命令可以预先生成软件仓库的元数据缓存,提高后续操作的速度。这在配置新仓库后特别有用,可以立即验证仓库的可用性。

详细查看仓库信息

使用yum repolist -v命令可以查看详细的仓库信息,包括仓库ID、名称、大小、镜像地址等。如果需要查看特定仓库的详细信息,可以使用yum repolist -v --repoid=仓库ID命令。

通过这些命令,用户可以全面了解当前系统中配置的所有仓库,以及每个仓库的具体状态和配置详情。

3. dnf命令基础

3.1 dnf命令语法

dnf [选项] [命令] [包名/组名]

3.2 dnf常用命令

软件包查询

# 查询可用的软件包
dnf list available

# 查询已安装的软件包
dnf list installed

# 查询所有软件包(已安装和可用)
dnf list all

# 查询特定软件包
dnf list nginx

# 查询软件包信息
dnf info nginx

# 搜索包含特定关键字的软件包
dnf search python3

# 查找哪个软件包提供了特定文件
dnf provides /usr/bin/python3

软件包安装

# 安装指定软件包
dnf install nginx

# 安装多个软件包
dnf install nginx mysql-server php

# 安装本地RPM包(并解决依赖)
dnf install package.rpm

# 重新安装软件包
dnf reinstall nginx

软件包更新

# 检查可用更新
dnf check-update

# 更新所有软件包
dnf update

# 更新特定软件包
dnf update nginx

# 升级系统到新版本
dnf upgrade

软件包卸载

# 卸载软件包
dnf remove nginx

# 卸载软件包但保留配置文件
dnf erase nginx

3.3 dnf仓库管理

# 列出所有启用的仓库
dnf repolist enabled

# 列出所有仓库(包括禁用的)
dnf repolist all

# 启用仓库
dnf config-manager --enable repo-name

# 禁用仓库
dnf config-manager --disable repo-name

# 安装EPEL扩展仓库
dnf install epel-release

4. yum与dnf的对比

特性yumdnf
开发语言Python 2Python 3
性能较慢,尤其是处理大量包时更快,使用libsolv解决依赖
内存占用较高较低
命令兼容性-兼容大部分yum命令
错误处理较简单更完善的错误报告
依赖解析基于算法,有时不准确基于libsolv,更准确
事务支持有限完整的事务支持
配置文件位置/etc/yum.conf, /etc/yum.repos.d//etc/dnf/dnf.conf, /etc/yum.repos.d/
默认发行版RHEL 5-7, CentOS 5-7RHEL 8+, CentOS 8+, Fedora 22+

4.1 现代系统中的实际关系

在现代RHEL系系统中,yum实际上是dnf的别名,两者最终都指向同一个二进制文件。以下是在Rocky Linux 9.6系统中的实际输出:

# 验证nginx包的完整性
rpm -V nginx
   0 ✓ 19:56:21 soveran@rocky9.6-12,10.0.0.12:/tmp/softs $

# 查看yum命令的实际指向
ll /usr/bin/yum
lrwxrwxrwx. 1 root root 5  5月  4  2025 /usr/bin/yum -> dnf-3
   0 ✓ 20:04:34 soveran@rocky9.6-12,10.0.0.12:/tmp/softs $

# 查看dnf命令的实际指向
ll /usr/bin/dnf
lrwxrwxrwx. 1 root root 5  5月  4  2025 /usr/bin/dnf -> dnf-3
   0 ✓ 20:04:42 soveran@rocky9.6-12,10.0.0.12:/tmp/softs $

这个输出表明:

  1. rpm -V nginx 验证了nginx包的完整性(无输出表示验证通过)
  2. yumdnf 都是指向 dnf-3 二进制文件的符号链接
  3. 在现代系统中,无论使用 yum 还是 dnf 命令,实际上执行的都是相同的程序

5. 高级用法

5.1 软件组管理

# 列出所有软件组
dnf grouplist

# 查看软件组详细信息
dnf groupinfo "Development Tools"

# 安装软件组
dnf groupinstall "Development Tools"

# 更新软件组
dnf groupupdate "Development Tools"

# 移除软件组
dnf groupremove "Development Tools"

5.2 缓存管理

# 查看缓存信息
dnf clean all

# 清除元数据缓存
dnf clean metadata

# 清除软件包缓存
dnf clean packages

# 构建缓存
dnf makecache

5.3 事务管理

# 查看事务历史
dnf history

# 查看特定事务的详细信息
dnf history info 1

# 撤销特定事务
dnf history undo 1

# 重做特定事务
dnf history redo 1

5.4 安全更新

# 列出安全更新
dnf updateinfo list security

# 安装所有安全更新
dnf update --security

# 安装特定类型的安全更新
dnf update --sec-severity=Critical

6. 配置文件详解

6.1 主配置文件

dnf主配置文件: /etc/dnf/dnf.conf

[main]
cachedir=/var/cache/dnf
keepcache=0
debuglevel=2
logfile=/var/log/dnf.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3
autoremove_keep_current=10
best=1

主要配置项说明:

  • cachedir:缓存目录位置
  • keepcache:是否保留下载的包(0=不保留,1=保留)
  • gpgcheck:是否检查GPG签名(0=不检查,1=检查)
  • plugins:是否启用插件(0=禁用,1=启用)
  • installonly_limit:保留多少个内核版本
  • best:是否总是尝试安装最新版本

6.2 仓库配置文件

仓库配置文件位于 /etc/yum.repos.d/ 目录下,通常以 .repo 为扩展名。

示例:EPEL仓库配置

[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/$basearch/
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever

主要配置项说明:

  • name:仓库名称
  • baseurl:仓库的基础URL
  • metalink:仓库的元数据链接(用于自动选择最快的镜像)
  • enabled:是否启用该仓库(0=禁用,1=启用)
  • gpgcheck:是否检查GPG签名
  • gpgkey:GPG密钥文件路径

7. 实用案例

7.1 案例:搭建Web服务器

# 安装Web服务器组件
dnf install nginx php php-fpm php-mysqlnd mysql-server

# 启动并启用服务
systemctl start nginx php-fpm mysqld
systemctl enable nginx php-fpm mysqld

# 查看服务状态
systemctl status nginx php-fpm mysqld

7.2 案例:安装开发环境

# 安装开发工具组
dnf groupinstall "Development Tools"

# 安装额外的开发库
dnf install gcc-c++ make cmake git

# 安装Python开发环境
dnf install python3 python3-devel python3-pip

7.3 案例:从旧版本迁移到dnf

# 在CentOS 7上安装dnfyum install dnf

# 比较yum和dnf的性能
time yum list available > /dev/null
time dnf list available > /dev/null

7.4 案例:解决依赖冲突

# 查看依赖问题
dnf repoquery --requires --resolve nginx

# 使用--allowerasing选项解决冲突
dnf install new-package --allowerasing

# 使用--skip-broken选项跳过损坏的依赖
dnf update --skip-broken

8. 最佳实践

8.1 安全最佳实践

# 定期检查安全更新
dnf updateinfo list security

# 只安装安全更新
dnf update --security

# 启用GPG检查(默认已启用)
gpgcheck=1

# 使用官方仓库和受信任的第三方仓库

8.2 性能优化

# 清理缓存以节省磁盘空间
dnf clean all

# 启用 fastestmirror 插件(自动选择最快的镜像)
# 在 /etc/dnf/dnf.conf 中添加:
plugins=1
fastestmirror=1

# 增加并行下载数量
deltarpm=1
max_parallel_downloads=10

8.3 维护最佳实践

# 定期更新系统
dnf update

# 移除不再需要的软件包
dnf autoremove

# 检查系统中可能存在的问题
dnf check

# 备份重要的配置文件
tar -czvf dnf-config-backup.tar.gz /etc/dnf/ /etc/yum.repos.d/

9. 常见问题与解决方案

9.1 仓库连接失败

问题: Failed to download metadata for repo 'epel': Cannot prepare internal mirrorlist

解决方案:

# 检查网络连接
ping download.fedoraproject.org

# 清理缓存并重新构建
dnf clean all
dnf makecache

# 检查仓库配置
dnf config-manager --dump epel

9.2 依赖冲突

问题: Error: package1 conflicts with package2

解决方案:

# 使用--allowerasing选项
dnf install package --allowerasing

# 手动移除冲突的包
dnf remove conflicting-package
dnf install package

9.3 GPG签名检查失败

问题: GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8"

解决方案:

# 安装缺失的GPG密钥
dnf install fedora-repos-archive

# 手动导入GPG密钥
rpm --import https://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8

10. 总结与未来趋势

10.1 主要知识点回顾

  1. yum和dnf的关系:dnf是yum的下一代替代品,提供更好的性能和功能
  2. 核心功能:软件包的安装、更新、卸载、查询和依赖管理
  3. 仓库管理:配置和管理软件仓库,扩展可用软件源
  4. 高级特性:软件组、缓存管理、事务历史、安全更新
  5. 最佳实践:安全、性能和维护方面的推荐做法

10.2 未来发展趋势

  • 模块化包管理:Fedora已开始采用模块化包管理,允许安装同一软件的多个版本
  • 容器化软件分发:Docker和Podman等容器技术正在改变软件分发方式
  • 扁平化包管理:减少依赖层级,提高系统稳定性
  • 人工智能辅助:使用AI优化依赖解析和包选择过程

通过掌握yum和dnf这两款强大的包管理工具,您可以高效地管理Linux系统中的软件,确保系统安全、稳定地运行。无论是系统管理员还是开发人员,熟练使用包管理工具都是Linux技能体系中不可或缺的一部分。

11. 趣味命令与小技巧

除了常规的系统管理功能,Linux还提供了一些有趣的命令,可以为您的工作增添一些乐趣。以下是一些通过yum/dnf安装和使用的趣味命令示例:

11.1 火车命令 (sl) 和 奶牛说命令 (cowsay)

在Rocky Linux 9中,cowsaysl这两个包默认不在官方的基础仓库中,需要启用EPEL(Extra Packages for Enterprise Linux)仓库才能安装。

解决步骤:

  1. 安装EPEL仓库 EPEL提供了许多企业版Linux额外的常用软件包,执行以下命令安装:
    sudo dnf install epel-release -y
    

    (Rocky Linux推荐使用dnf替代yum,两者功能类似,dnf是更新的包管理器)

  2. 更新仓库缓存
    sudo dnf makecache
    
  3. 安装cowsay和sl
    sudo dnf install cowsay sl -y
    
  4. 验证安装
    • 运行cowsay "Hello World"测试cowsay
    • 运行sl测试小火车动画

11.2 扩展:更多趣味命令

安装fortune和animalsay

# 需要先安装EPEL仓库
sudo dnf install fortune-mod cowsay-animals -y

使用示例:

# 基本使用
cowsay "Hello Linux!"

# 管道使用
fortune | cowsay

# 使用不同的动物
animalsay cat "Meow!"

# 查看可用的动物
ls /usr/share/cowsay/cows/

这些趣味命令虽然没有实际的系统管理功能,但它们展示了Linux系统的灵活性和社区的创造力,也可以在学习和工作中带来一些轻松的时刻。EPEL仓库还包含很多其他实用工具,后续安装其他软件时也可能会用到。

文档信息

Search

    Table of Contents