温馨提示×

Ubuntu如何彻底清理旧版本软件

小樊
42
2026-01-07 19:26:43
栏目: 智能运维

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

# 0) 确认以 sudo 运行
if [ "$EUID" -ne 0 ]; then
  echo "请使用 sudo 运行此脚本。"
  exit 1
fi

# 1) APT 缓存
apt-get autoclean -y
apt-get clean -y

# 2) 无用依赖与旧配置
apt-get autoremove --purge -y
dpkg -l | awk '$1=="rc"{print $2}' | xargs -r dpkg -P

# 3) 旧内核:保留当前与最近2个
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/加密/特殊引导,请额外谨慎。

0