Proxmox VE 9.0 解决 apt update 报错与移除订阅弹窗
本文已更新,适用于 Proxmox VE 9.1 及以上版本
Proxmox VE(PVE)是一款功能强大的开源虚拟化平台,但初次部署时,许多用户会遇到两个常见问题:apt update 更新失败(错误代码 100) 以及 登录 Web 界面时出现的“没有有效订阅”弹窗。本文将详细介绍这两个问题的原因与解决方法,帮助你的虚拟化环境顺畅运行。
问题一:apt-get update 失败(错误代码 100)
🔍 错误现象
执行 apt update 或相关操作时,会遇到类似以下错误:
bash
TASK ERROR: command 'apt-get update' failed: exit code 100在详细日志中,通常能看到核心错误信息:
bash
401 Unauthorized [IP: 66.70.154.82 443]
The repository 'https://enterprise.proxmox.com/... InRelease' is not signed.⚠ 原因分析
PVE 默认配置启用了需要付费订阅的企业源(enterprise.proxmox.com)。对于未购买订阅的用户,访问该源会被拒绝(401 Unauthorized),导致整个 apt update 过程失败。
✅ 解决方法:切换到免费公共源(pve-no-subscription)
只需执行以下几个命令:
移除无效的企业源配置:
bash
rm -f /etc/apt/sources.list.d/*enterprise* rm -f /etc/apt/sources.list.d/*ceph* # 通常也需要移除关联的 Ceph 企业源 rm -f /etc/apt/sources.list.d/*pve*.list # 移除默认的 PVE 源文件(通常包含企业源指向)配置 Debian Bookworm 官方源:
bash
cat > /etc/apt/sources.list <<'EOF' deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware EOF添加 Proxmox VE 免费公共源:
bash
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list导入 Proxmox GPG 密钥(验证软件包):
bash
wget -qO - https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg更新软件包列表:
bash
apt update
📌 验证:执行此命令后应该不再报错,能够正常获取软件包列表。
问题二:Web 界面“没有有效订阅”弹窗
🔍 错误现象
每次登录 PVE Web 管理界面,都会弹出以下提示:
您没有此服务器的有效订阅。请访问 www.proxmox.com 获取可用选项列表。
虽然不影响核心功能,但每次登录都出现,十分影响体验。
✅ 解决方法:修改状态检查逻辑(适用于 PVE 9.1 及以上)
在 PVE 9.1 之后,前端代码有所调整。以下是新的修改方法:
备份原始文件(建议操作):
bash
cp /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js.bak定位并修改状态判断条件:
bash
line_num=$(grep -n "res.data.status.toLowerCase() !== 'active'" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js | head -1 | cut -d: -f1) sed -i "${line_num}s/!==/===/" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js说明:
这行代码会将原来判断订阅状态“不等于 active”的逻辑改为“等于 active”,从而绕过弹窗提示。重启 PVE Web 代理服务:
bash
systemctl restart pveproxy刷新浏览器:
按
Ctrl + Shift + R(Windows/Linux)或Cmd + Shift + R(Mac)强制刷新页面缓存。或使用浏览器的无痕/隐私模式重新访问 PVE。
重新登录后,烦人的订阅弹窗应该就消失了!
📝 总结与注意事项
通过上述步骤,你可以轻松解决 PVE 9.x 部署初期最常见的两个障碍:
修复 apt update 失败:通过移除企业订阅源,切换到免费的
pve-no-subscription公共源和 Debian 官方源,确保系统能够正常更新和安装软件包。移除订阅弹窗(适用于 9.1+):通过修改前端 JS 文件中的状态判断条件,屏蔽登录时的“没有有效订阅”提示。
⚠ 重要提示:
升级或重装:如果你将来升级 PVE 主版本或重新安装系统,上述两个问题的解决方法都需要重新执行一次,因为升级或安装过程会覆盖你的修改。
自动化脚本:建议将上述步骤保存为 Shell 脚本,便于升级后快速恢复配置。
免费使用:Proxmox VE 的核心功能对于个人和测试使用是完全免费的。移除订阅提示只是为了改善体验,并不影响功能使用。