Linux

dnf 软件源与 tar

RHEL 9 配置 yum/dnf 仓库、安装与查询软件包,以及 tar 归档、gzip/bzip2/xz 压缩与解压的完整流程。

Linux 装软件不是「下载 exe 一路下一步」,而是:先有软件源(仓库),再用 dnf/yum 去装。归档与压缩则是备份日志、传材料、交作业的日常操作。本篇把「配源 → 装包 → 打包」收成一条可复现路径。

系列:从 RHCSA 到 RHCE · 第 5 / 17 篇 上一篇:VIM 三模式 下一篇:用户与基础权限 总目录:系列索引

环境说明

  • 系统:RHEL 9 / Rocky 9 / AlmaLinux 9
  • 身份:root(dnf install 需要特权)
  • 网络:能访问题面/环境提供的仓库;公网实验可用发行版官方或国内镜像
  • 前置:会用 VIM 写文本文件

软件从哪来:仓库模型

可以把仓库想成「应用商店」:

  1. 某台 HTTP/HTTPS 服务器上放着 .rpm 包和索引
  2. 本机在 /etc/yum.repos.d/*.repo 里写清「去哪找」
  3. dnf 读这些 repo 文件,解析依赖,下载并安装

RHEL 9 常见两个仓库:

名称(示例)内容
BaseOS核心系统组件
AppStream应用与部分运行时(含 module 流)

考试:考场通常已提供内网仓库地址,按题面写 repo 即可;不要假设有公网。

写一个 repo 文件

目录固定:

ls /etc/yum.repos.d/

在该目录下新建任意文件名、扩展名为 .repo 的文件。下面用 VIM:

vim /etc/yum.repos.d/el9.repo

示例(把 URL 换成你的环境):

[baseos]
name=BaseOS
baseurl=http://192.168.56.1/rhel9/BaseOS
enabled=1
gpgcheck=0

[appstream]
name=AppStream
baseurl=http://192.168.56.1/rhel9/AppStream
enabled=1
gpgcheck=0
字段含义
[id]仓库 ID,任意且唯一
name描述名,任意
baseurl软件包所在网址
enabled1 启用 / 0 禁用
gpgcheck是否校验包签名
gpgkey校验用的密钥 URL/路径(gpgcheck=1 时常见)

启用校验时:

[baseos]
name=BaseOS
baseurl=http://192.168.56.1/rhel9/BaseOS
enabled=1
gpgcheck=1
gpgkey=http://192.168.56.1/rhel9/RPM-GPG-KEY-redhat-release

易错:baseurl 打错、多空格、协议写错,后面 dnf 会报找不到仓库。 易错:repo 文件扩展名不是 .repo,dnf 不会读。 考点:配置目录是 /etc/yum.repos.d/,不能自定义到别处。

验证仓库

dnf repoinfo
# 或
yum repoinfo
dnf repolist

能看到 BaseOS / AppStream 且状态可用,再装包。清缓存有时能救「改了 repo 仍不行」:

dnf clean all
dnf makecache

安装 / 卸载 / 更新

RHEL 9 上 dnf 是正主;yum 多为兼容入口,参数几乎一样。系列后文统一写 dnf。

dnf -y install tar
dnf install tar          # 会问 y/N
dnf -y install bzip2 xz
动作命令
安装dnf -y install 包名
卸载dnf -y remove 包名
更新dnf -y update 或 dnf -y upgrade
搜索dnf search 关键词
列出已装dnf list installed
文件是谁装的dnf provides /etc/passwd
命令来自哪个包dnf provides ifconfig

-y 表示自动应答 yes,脚本和考试里常用。

provides 实用场景

dnf provides ifconfig
# 若无匹配,可再试:
dnf provides '*/ifconfig'

可能提示来自 net-tools,再:

dnf -y install net-tools

排障「命令不存在」时,先 dnf provides /usr/sbin/命令名 或 dnf provides 命令名,比瞎猜包名快。

组包

一组软件可以一起装:

dnf grouplist
dnf -y groupinstall "RPM Development Tools"
  • Available Groups:可装
  • Installed Groups:已装

考试若点名某 group,用 grouplist 确认精确名称(空格、大小写要对)。

归档:tar

tar 负责打包(把多个文件收成一个归档),本身不等于压缩。压缩是 gzip/bzip2/xz 的事;tar 可以调用它们。

选项含义
-c创建 create
-x解包 extract
-t列出内容 list
-f指定归档文件名(file)——几乎总要
-C解包到指定目录
-z调用 gzip(.tar.gz / .tgz)
-j调用 bzip2(.tar.bz2)
-J调用 xz(.tar.xz)
-v显示过程(可选)

记忆:f 后面紧跟文件名;考试里 -cf、-xf、-tf 最高频。

打包

cd /tmp
tar -cf backup.tar /etc/hostname /etc/hosts
tar -cf /tmp/logs.tar /var/log
ls -lh /tmp/logs.tar

查看

tar -tf /tmp/logs.tar
tar -tf /tmp/logs.tar | head

解包

tar -xf backup.tar                 # 解到当前目录
tar -xf /tmp/logs.tar -C /opt      # 解到 /opt
ls /opt/var/log

易错:-C 目标目录必须已存在。 易错:归档里往往带着原路径结构(如 var/log/...),解压后不要在错误目录找文件。

压缩:gzip / bzip2 / xz

单独压缩文件(不是目录):

dnf -y install gzip bzip2 xz

ls -lh /etc/services
gzip /etc/services          # 变成 services.gz,原文件被替换
ls -lh /etc/services.gz
gzip -d /etc/services.gz    # 解压

bzip2 /etc/services
bzip2 -d /etc/services.bz2

xz /etc/services
xz -d /etc/services.xz
工具后缀特点(相对)
gzip.gz快,压缩比一般
bzip2.bz2更慢,压缩比更高
xz.xz通常最慢,压缩比常最高

注意:gzip 文件 默认删掉原文件只留 .gz。要保留原文件:gzip -k 文件。

归档 + 压缩一步到位

tar -czf etc.tar.gz /etc
tar -cjf etc.tar.bz2 /etc
tar -cJf etc.tar.xz /etc

解压时 tar 会自动识别常见格式,或继续显式写选项:

tar -xf etc.tar.gz
tar -xf etc.tar.bz2 -C /tmp
tar -xf etc.tar.xz -C /opt

实用组合(备份日志目录):

tar -czvf /tmp/varlog-$(date +%F).tar.gz /var/log
tar -tf /tmp/varlog-$(date +%F).tar.gz | head

推荐实验(约 20 分钟)

# 1) 确认仓库(URL 换成你的)
dnf repoinfo

# 2) 装压缩工具
dnf -y install tar gzip bzip2 xz

# 3) 打包日志并查看
cd /tmp
tar -czf lab-logs.tar.gz /var/log
tar -tf lab-logs.tar.gz | head

# 4) 解到指定目录
mkdir -p /tmp/extract
tar -xf lab-logs.tar.gz -C /tmp/extract
ls /tmp/extract/var/log | head

# 5) provides 练习(若无结果可试 dnf provides '*/ifconfig')
dnf provides ifconfig

期望

  • dnf repoinfo 不报「no enabled repos」
  • /tmp/lab-logs.tar.gz 存在且 tar -tf 能列出 /var/log/...
  • /tmp/extract/var/log/ 下能看到日志文件名

速查表

目标命令
配置仓库vim /etc/yum.repos.d/xx.repo
看仓库dnf repoinfo / dnf repolist
装/卸/更dnf -y install/remove/update
查文件来源dnf provides 路径
打包tar -cf xx.tar 路径
打包并 gziptar -czf xx.tar.gz 路径
列出tar -tf xx.tar
解包tar -xf xx.tar -C 目标目录

考点与易错

考点:按题面写出可用的 .repo(baseurl、gpgcheck/gpgkey),并 dnf 装上指定包。 考点:tar -czf / tar -xf -C 的选项顺序与含义。 易错:repo 文件放错目录或扩展名不对。 易错:gpgcheck=1 却没给可用 gpgkey。 易错:对目录只用 gzip 不 tar;应先 tar 再压,或 tar -z。 易错:tar -xf 忘记 -C,解压到错误的当前目录。 练习环境:课堂仓库若是 http://server1.lab0.example.com/rhel9/...,步骤相同,只换 URL。

小结

  1. 装软件先有仓库:/etc/yum.repos.d/*.repo 写清 baseurl,再 dnf install。
  2. 查命令/文件来源用 dnf provides;批量自动应答加 -y。
  3. tar 负责归档:-c 建、-x 解、-t 看、-f 文件名、-C 目标目录。
  4. 压缩用 -z/-j/-J 对应 gzip/bzip2/xz;日常备份优先 tar -czf。

下一篇进入用户与组:useradd、/etc/passwd 七列、chmod 数字权限——和软件、网络一起构成 RHCSA 主干。


系列导航:总目录 · 上一篇:VIM 三模式 · 下一篇:用户与基础权限

相关阅读

全部文章 →
← 返回列表更多「Linux」