Fedora 命令速查(F45 适配)
一页纸的命令速查。全部按 F45 / dnf5 5.4 的实际参数形态整理——dnf5 与 dnf4 在若干子命令上并不兼容,几条常见的”照抄就报错”已在末尾列出。
一、身份与版本
Section titled “一、身份与版本”cat /etc/os-release # 版本与变体rpm -q rpm dnf5 kernel # 关键组件版本uname -r # 内核hostnamectl # 主机概览F45 上 rpm -q rpm 应为 rpm-6.1.x;如果还是 6.0.x,说明你还在 F44。
二、装包与查询
Section titled “二、装包与查询”| 目的 | 命令 |
|---|---|
| 安装 | sudo dnf install <pkg> |
| 搜索 | dnf search <关键词> |
| 按文件反查包 | dnf provides '*/libssl.so.3' |
| 看包详情 | dnf info <pkg> |
| 列出已装 | dnf list --installed |
| 删除 | sudo dnf remove <pkg> |
| 装本地文件 | sudo dnf install ./x.rpm(仅告警,见签名页) |
| 装源码构建依赖 | sudo dnf builddep x.spec |
| 标记为手动/依赖 | sudo dnf mark install <pkg> |
| 组 | sudo dnf group install '<组名>' |
| 换包(同名替换) | sudo dnf swap <旧> <新> |
dnf repolist # 已启用dnf repolist --all # 含已禁用(抄仓库 ID 用这个)dnf repoinfo <id> # 单仓库的 enabled / gpgcheck 实际值sudo dnf --enablerepo=<id> install <pkg> # 临时启用sudo dnf config-manager setopt <id>.enabled=0 # 持久关闭sudo dnf config-manager addrepo --from-repofile=<url>sudo dnf clean all && sudo dnf makecacheF45 的位置变化(最容易踩):
| 内容 | F44 及更早 | F45 |
|---|---|---|
| 自带仓库 | /etc/yum.repos.d | /usr/share/dnf5/repos.d |
| GPG 公钥 | /etc/pki/rpm-gpg | /usr/share/pki/rpm-gpg |
| 自定义仓库 | /etc/yum.repos.d | 不变 |
| 覆盖文件 | — | /etc/dnf/repos.override.d/99-config_manager.repo |
ls /usr/share/dnf5/repos.d/rpm -qf /usr/share/dnf5/repos.d/fedora.repo # 有包名就别手改详见仓库配置迁到 /usr。
四、更新与安全
Section titled “四、更新与安全”sudo dnf upgrade --refresh # 刷新元数据并升级sudo dnf updateinfo list --updates # 待装的安全/缺陷更新sudo dnf needs-restarting # 是否需要重启sudo dnf distro-sync # 对齐到当前仓库版本dnf history list # 事务历史sudo dnf history undo <id> # 回滚某个事务needs-restarting 的实测输出:
No core libraries or services have been updated since boot-up.Reboot should not be necessary.rpm -K pkg.rpm # 检查签名与摘要rpm -qpi pkg.rpm | head -10 # 包信息sudo rpm --import RPM-GPG-KEY-fedora # 导入公钥rpm --addsign pkg.rpm # 给包签名sudo rpm -i --nosignature pkg.rpm # 放行单个未签名包F45 起 rpm 6.1 强制验签:rpm -i 拒绝未签名包,dnf 仓库安装同样拒绝,dnf install ./x.rpm 只告警。详见强制签名校验。
六、版本升级
Section titled “六、版本升级”sudo dnf upgrade --refresh # 先升到当前版本最新sudo dnf system-upgrade download --releasever=45 # 下载新版本包sudo dnf system-upgrade reboot # 重启进入离线事务sudo dnf system-upgrade clean # 清理下载缓存升级失败的处置见升级失败排障,版本特定步骤见升级到 Fedora 45。
七、容器与隔离
Section titled “七、容器与隔离”sudo dnf install toolbox # Cloud/Server 需手动装toolbox create [名字] # 建容器toolbox enter [名字] # 进入toolbox run <cmd> # 不进入直接执行toolbox list # 列出toolbox rm <名字> # 删除podman version && podman info # 版本与后端podman ps -a # 含已停止podman imagespodman run --rm -it fedora:45 bashflatpak remotes # 已接应用源flatpak list --app八、排障入口
Section titled “八、排障入口”systemctl status <unit> --no-pagerjournalctl -b -u <unit> --no-pager | tail -50journalctl -p err -b --no-pager | tail -30lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTSdf -h / /var /bootcat /sys/class/vtconsole/*/name # 控制台后端报错原文怎么对,见报错速查。
九、dnf5 与 dnf4 的差异(照抄会报错的那几条)
Section titled “九、dnf5 与 dnf4 的差异(照抄会报错的那几条)”| dnf4 写法 | dnf5 上的结果 | 用什么代替 |
|---|---|---|
dnf updateinfo --summary | Unknown argument | updateinfo list --updates |
dnf updateinfo --list | Unknown argument | updateinfo list |
dnf config-manager --add-repo | 参数不存在 | config-manager addrepo --from-repofile= |
dnf repoquery --requires | 可用但输出格式不同 | 先 --help 确认 |
dnf groupinstall | 不存在 | dnf group install |
十、服务与 systemd
Section titled “十、服务与 systemd”systemctl status <unit> --no-pager # 单服务状态systemctl list-units --failed # 本次启动失败的服务systemctl list-unit-files | grep <关键词> # 单元是否存在sudo systemctl enable --now <unit> # 开机自启并立即启动sudo systemctl disable --now <unit> # 取消自启并停止sudo systemctl mask <unit> # 彻底屏蔽(比 disable 强)sudo systemctl unmask <unit>systemctl cat <unit> # 看单元文件原文systemctl show <unit> -p LoadState -p ActiveStatesystemctl list-timers --all # 定时任务(替代 cron)journalctl -b -1 -p err --no-pager | tail -30 # 上一次启动的错误十一、存储与文件系统
Section titled “十一、存储与文件系统”lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,UUIDdf -h / /var /bootdf -i /var # inode 用尽也会报"没空间"du -xh --max-depth=1 /var | sort -h | tail -10findmnt # 全部挂载关系sudo mount -o remount,rw / # 只读根临时转可写sudo fsck -n <设备> # 只读检查十二、网络与 DNS
Section titled “十二、网络与 DNS”ip -br addr # 地址一览ip route # 路由表nmcli dev status # 设备与连接状态nmcli con show # 连接名(区分大小写)nmcli con up <名字>getent hosts <域名> # 只测解析,不测连通cat /etc/resolv.confss -tlnp # 监听端口与进程sudo firewall-cmd --state # 装了 firewalld 才有sudo firewall-cmd --list-allping -c1 <IP> # 先测 IP 再测域名十三、容器与 Toolbox(补充)
Section titled “十三、容器与 Toolbox(补充)”podman ps -a # 含已停止podman logs <容器>podman exec -it <容器> bashpodman inspect <容器> | head -20podman system df # 镜像/容器占了多少空间podman system prune -a # 清理(慎用)systemctl --user daemon-reload # Quadlet 改完必须systemctl --user list-unit-files "*.service" | grep generatedloginctl enable-linger $USER # 退出登录后容器继续跑十四、用户、权限与 SELinux
Section titled “十四、用户、权限与 SELinux”id # 自己的 uid/gid 与组getent passwd <用户>sudo useradd -m -G wheel <用户>sudo passwd <用户>sudo usermod -aG wheel <用户> # 追加组,别漏 -asudo -l # 当前用户能做什么ls -lZ <路径> # 权限 + SELinux 标签getenforce # Enforcing / Permissivesudo ausearch -m AVC -ts recent # 最近的拒绝记录sudo restorecon -Rv <路径> # 恢复默认标签十五、日志与排障
Section titled “十五、日志与排障”journalctl -b --no-pager | tail -50journalctl -p err -b --no-pager | tail -30journalctl -u <unit> -f # 跟一个服务journalctl --disk-usagesudo journalctl --vacuum-size=500Mjournalctl -k -b | tail -30 # 只看内核dmesg -T | tail -30 # 带人类可读时间cat /sys/class/vtconsole/*/name # 控制台后端是谁十六、给机器做一份”体检快照”
Section titled “十六、给机器做一份”体检快照””升级前后各跑一次,diff 出来就是”这次到底动了什么”:
#!/bin/bashecho "== $(grep VERSION_ID /etc/os-release)"echo "kernel: $(uname -r)"for p in systemd glibc python3 openssl dnf5 rpm podman kmscon; do printf "%-10s %s\n" "$p" "$(rpm -q --qf '%{VERSION}-%{RELEASE}' "$p" 2>/dev/null || echo '-')"doneecho "repos: /usr=$(ls /usr/share/dnf5/repos.d/*.repo 2>/dev/null | wc -l) /etc=$(ls /etc/yum.repos.d/*.repo 2>/dev/null | wc -l)"echo "failed units: $(systemctl --failed --no-legend | wc -l)"完整对照见版本矩阵。
- 用户与权限 — 账户与 sudo
- SSH 与密钥 — sshd 配置与密钥
- systemd 服务与定时器 — service/timer 写法与失败排查
- 防火墙 firewalld — 区域与放行
- SELinux — 模式、上下文、布尔值
- 网络与 nmcli — 地址、路由、DNS
- 存储与 btrfs — 子卷与容量
- 版本矩阵 — F44 与 F45 的组件与行为差异
- 报错速查 — 报错原文 → 原因 → 处置
- Fedora 仓库与 dnf5 — 仓库的完整操作
- 从 dnf 迁到 dnf5 的实操差异 — 迁移细节
- 强制签名校验 — 签名三条路径
- Fedora 45:变化、下载与升级入口 — 版本总览