清理软件包缓存不影响已安装软件运行;apt clean和dnf clean all会删除重装所需文件,而apt autoclean、dnf clean expire-cache更保守,误用可能拖慢升级或导致降级失败。

清理软件包缓存不会影响已安装软件的运行,但不同发行版的命令行为差异很大——apt clean 和 dnf clean all 都会删掉重装所需文件,而 apt autoclean 或 dnf clean expire-cache 则更保守;误用可能拖慢后续升级或导致降级失败。
APT 缓存(Debian/Ubuntu):别直接 clean,先看 autoclean 是否够用
APT 默认把所有下载过的 .deb 包存在 /var/cache/apt/archives/,包括旧版本和当前已安装版本。长期不清理可能占数 GB 空间。
-
sudo apt autoclean:只删那些“已失效”的包(比如源里已下架、无法再下载的旧版),保留当前可用版本——适合想留降级选项又不想手动管理的人 -
sudo apt clean:清空整个archives/目录,连当前系统刚装的包也删掉——下次重装或回滚就得重新下载,网络差时很卡 - 执行前建议先看占用:
sudo du -sh /var/cache/apt/archives;如果不到 100MB,autoclean足够 - 注意:
autoclean不处理dpkg数据库里的rc状态残留包,那是另一类问题,得用dpkg -l | grep '^rc' | awk '{print $2}' | sudo xargs dpkg -P
DNF/YUM 缓存(RHEL/Fedora/CentOS):clean all 是双刃剑
DNF 缓存包含三类内容:元数据(metadata)、软件包(packages)、数据库缓存(dbcache)。clean all 全部清除,下次 dnf update 会变慢,因为要重新下载并解析所有元数据。
- 日常维护推荐:
sudo dnf clean expire-cache—— 只刷新过期标记,不删 RPM 文件,下次运行速度几乎不受影响 - 真要腾空间且确认网络稳定:
sudo dnf clean packages单独删 RPM,比clean all更精准 - 查缓存大小别只信
du -sh /var/cache/dnf,有些子目录(如temp/)可能含临时失败下载,需find /var/cache/dnf -type f -name "*.rpm" -size +50M -ls 2>/dev/null辅助定位 -
dnf makecache不是必须跟在clean后执行——DNF 会在需要时自动重建,手动触发反而可能中断后台更新
Pacman 缓存(Arch/Manjaro):paccache 比 pacman -Sc 更可控
Pacman 默认不缓存包,但启用 CacheDir 后会存到 /var/cache/pacman/pkg/。这里容易堆积多个版本的同一软件,比如 firefox-124.0.1-1-x86_64.pkg.tar.zst 和 firefox-123.0-1-x86_64.pkg.tar.zst 并存。
-
sudo paccache -r:删所有未被任何已安装包引用的缓存包——最安全的日常清理方式 -
sudo paccache -k3:每个软件最多留 3 个历史版本,兼顾降级灵活性与磁盘控制——比-r多留一层缓冲 -
sudo pacman -Sc:只删未安装的包,但会跳过已安装包的旧版本——实际效果常不如paccache彻底 - 别忽略
/var/lib/pacman/sync/:这是元数据缓存,pacman -Syy会强制刷新,但频繁执行会加重镜像服务器压力,非必要不加y
清理前必须做的两件事:诊断空间来源 & 避开日志陷阱
盲目清理缓存常收效甚微,真正吃空间的往往是日志或旧内核。尤其 /var/log/journal/ 和 /boot 分区,比包缓存更容易撑爆磁盘。
- 先跑这句快速定位:
sudo du -sh /* 2>/dev/null | sort -hr | head -5—— 如果/var排第一,再进/var查:sudo du -sh /var/* 2>/dev/null | sort -hr | head -5 - systemd 日志膨胀极快:
journalctl --disk-usage查体积,sudo journalctl --vacuum-size=200M限制总大小——比删包缓存见效更快 -
/boot满了会导致系统无法升级内核甚至无法启动,清理前务必确认当前内核:uname -r,再删旧的linux-image-*和linux-headers-*,别只盯着/var/cache - 用户级缓存(
~/.cache)虽不属“系统缓存”,但浏览器、IDE 等常占数 GB,rm -rf ~/.cache/*前建议先ls -Sh ~/.cache | head -5看哪些目录最大
缓存路径固定但行为不固定:APT 的 autoclean 和 DNF 的 expire-cache 名似实异,Pacman 的 paccache 又完全独立于 pacman 主命令。最易被忽略的是——清理完不检查 /boot 和 /var/log/journal,结果腾出几百 MB 缓存,却因日志暴涨又告警。











