Ubuntu彻底清理旧版本软件
一 核心清理步骤
- 清理 APT 缓存(旧版本安装包)
- 仅删“过时版本”的安装包:sudo apt-get autoclean
- 清空全部安装包缓存:sudo apt-get clean
- 缓存目录位置:/var/cache/apt/archives 与 /var/cache/apt/archives/partial
- 移除不再需要的依赖与旧内核
- 自动移除无用依赖:sudo apt-get autoremove --purge
- 查看当前内核:uname -r
- 列出已安装内核:dpkg --get-selections | grep linux
- 删除指定旧内核(示例):sudo apt-get purge linux-image-VERSION linux-headers-VERSION
- 删除已卸载软件的残留配置
- 一键清理“已卸载但残留配置”的包:dpkg -l | grep ^rc | awk ‘{print $2}’ | xargs sudo dpkg -P
- 清理缩略图与用户缓存(可选)
- 查看缩略图缓存大小:du -sh ~/.cache/thumbnails
- 清空缩略图缓存:rm -rf ~/.cache/thumbnails/*
- 清理系统日志(可选)
- 查看日志占用:journalctl --disk-usage
- 保留最近3天:sudo journalctl --vacuum-time=3d
- 保留最近一周:sudo journalctl --vacuum-time=1w
- 限制总大小:sudo journalctl --vacuum-size=500M
- 清理临时文件(可选)
- 清理系统临时目录:sudo rm -rf /tmp/*(系统重启后也会自动清理)
二 进阶清理
- 查找并删除孤立包(无被依赖的库等)
- 安装工具:sudo apt-get install deborphan -y
- 查找孤立库:deborphan
- 交互删除:sudo deborphan | xargs sudo apt-get purge -y
- 图形界面方式清理残留配置
- 使用 Synaptic 包管理器:在状态栏选择 Not installed (residual config),批量移除残留配置。
三 安全删除旧内核的推荐做法
- 确认当前运行内核:uname -r(务必保留)
- 列出所有内核包:dpkg --get-selections | grep linux
- 谨慎删除旧版本(示例):sudo apt-get purge linux-image-OLDVERSION linux-headers-OLDVERSION
- 更新引导:sudo update-grub
- 建议保留至少1–2个旧内核,便于回滚;删除前可重启一次确认新内核稳定。
四 一键脚本示例
- 作用:自动清理 APT 缓存、无用依赖、残留配置,并按“保留当前与最近2个内核”的策略删除旧内核
- 使用:保存为 clean_old_pkgs.sh,执行:bash clean_old_pkgs.sh
#!/usr/bin/env bash
set -e
if [ "$EUID" -ne 0 ]; then
echo "请使用 sudo 运行此脚本。"
exit 1
fi
apt-get autoclean -y
apt-get clean -y
apt-get autoremove --purge -y
dpkg -l | awk '$1=="rc"{print $2}' | xargs -r dpkg -P
current="$(uname -r)"
keep=2
kernels_to_rm=$( dpkg -l | awk '$1=="ii" && $2 ~ /^linux-image-[0-9]/ {print $2}' \
| sort -V \
| grep -v "$current" \
| tail -n +$((keep+1)) )
if [ -n "$kernels_to_rm" ]; then
echo "待删除旧内核:"
echo "$kernels_to_rm"
apt-get purge -y $kernels_to_rm
update-grub
else
echo "无需删除旧内核。"
fi
echo "清理完成。"
- 风险提示:内核删除有回滚风险,请先确认新内核可正常启动;如使用了 LVM/加密/特殊引导,请额外谨慎。