在服务器上安装了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