ubuntu 开启/关闭大版本升级
在服务器上安装了ubuntu24.04 结果没一会儿 它自己要升级,不小心确认后同意后升级到了26.04 ,很多安装软件联合包还没有适配,只能手动安装。为了避免它自动升级,写了个shell脚本。
自己保存为sh,然后 chmod+x 执行,按提示操作就行。
#!/bin/bash
# 管理 Ubuntu 大版本升级开关(允许系统内软件包正常升级)
set -e
CONF="/etc/update-manager/release-upgrades"
show_status() {
echo "----------------------------------------"
echo "当前状态:"
if [ -f "$CONF" ]; then
grep -i '^Prompt' "$CONF" || echo "Prompt 未设置"
else
echo "配置文件不存在"
fi
if dpkg -l ubuntu-release-upgrader-core 2>/dev/null | grep -q '^hi'; then
echo "ubuntu-release-upgrader-core:已锁定(hold)"
else
echo "ubuntu-release-upgrader-core:未锁定"
fi
echo "----------------------------------------"
}
disable_upgrade() {
echo "[1/3] 禁止大版本升级提示..."
if [ -f "$CONF" ]; then
sudo sed -i 's/^Prompt=.*/Prompt=never/' "$CONF"
else
echo "Prompt=never" | sudo tee "$CONF" >/dev/null
fi
echo "[2/3] 锁定 release-upgrader,防止误触发..."
sudo apt-mark hold ubuntu-release-upgrader-core >/dev/null 2>&1 || true
echo "[3/3] 完成。"
show_status
echo "普通软件包仍可通过 sudo apt update && sudo apt upgrade 正常升级。"
}
enable_upgrade() {
echo "[1/3] 恢复大版本升级提示..."
if [ -f "$CONF" ]; then
sudo sed -i 's/^Prompt=.*/Prompt=lts/' "$CONF"
else
echo "Prompt=lts" | sudo tee "$CONF" >/dev/null
fi
echo "[2/3] 解除 release-upgrader 锁定..."
sudo apt-mark unhold ubuntu-release-upgrader-core >/dev/null 2>&1 || true
echo "[3/3] 完成。"
show_status
echo "系统将在下一个 LTS 版本可用时提示升级(Prompt=lts)。"
}
echo "请选择操作:"
echo " 1) 关闭大版本升级(推荐,锁定当前系统)"
echo " 2) 开启大版本升级(恢复 LTS 升级提示)"
echo " 3) 仅查看当前状态"
read -rp "输入选项 [1/2/3]: " choice
case "$choice" in
1) disable_upgrade ;;
2) enable_upgrade ;;
3) show_status ;;
*) echo "无效选项,退出。"; exit 1 ;;
esac