如何禁用Ubuntu 22.04的自动更新以实现无网络环境下Node.js应用正常运行
如何禁用Ubuntu 22.04的自动更新以实现无网络环境下Node.js应用正常运行
看起来你的Node.js应用在无网络时无法运行,大概率是Ubuntu默认开启的自动更新服务在后台尝试联网拉取更新,导致阻塞或者触发了错误。下面是一步步禁用这些自动更新机制的方法,确保离线时系统不会因为更新请求卡住:
禁用无人值守自动更新(unattended-upgrades)
这是Ubuntu默认负责后台自动更新的核心组件,先把它彻底关掉:- 编辑自动更新配置文件:
sudo nano /etc/apt/apt.conf.d/20auto-upgrades - 将文件内的两个配置值修改为
0,彻底关闭自动更新检查和升级:APT::Periodic::Update-Package-Lists "0"; APT::Periodic::Unattended-Upgrade "0"; - 保存并退出编辑器(按
Ctrl+O确认保存,回车后按Ctrl+X退出) - 停止、禁用并锁定该服务,防止它被意外启动:
sudo systemctl stop unattended-upgrades sudo systemctl disable unattended-upgrades sudo systemctl mask unattended-upgrades
- 编辑自动更新配置文件:
禁用APT每日更新定时服务
Ubuntu还有两个定时服务apt-daily和apt-daily-upgrade,会定期触发更新检查,同样需要禁用:# 停止并禁用定时任务 sudo systemctl stop apt-daily.timer apt-daily-upgrade.timer sudo systemctl disable apt-daily.timer apt-daily-upgrade.timer sudo systemctl mask apt-daily.timer apt-daily-upgrade.timer # 停止并禁用对应的服务单元 sudo systemctl stop apt-daily.service apt-daily-upgrade.service sudo systemctl disable apt-daily.service apt-daily-upgrade.service sudo systemctl mask apt-daily.service apt-daily-upgrade.service禁用Snap自动更新(若使用Snap包)
如果你的Node.js或其他依赖是通过Snap安装的,Snap默认也会后台自动更新,需要额外禁用:- 创建Snap服务的自定义配置文件:
sudo nano /etc/systemd/system/snapd.service.d/disable-autostart.conf - 若文件不存在则直接新建,添加以下内容:
[Service] ExecStart= ExecStart=/usr/lib/snapd/snapd --disable-autoupdate - 重新加载systemd配置并重启Snap服务:
sudo systemctl daemon-reload && sudo systemctl restart snapd
- 创建Snap服务的自定义配置文件:
验证自动更新是否完全禁用
执行以下命令,检查相关服务的状态,确认它们都处于masked或disabled状态:systemctl list-unit-files | grep -E 'unattended-upgrades|apt-daily|snapd'
完成以上操作后,你的Ubuntu容器在无网络环境下就不会再主动发起更新请求了,Node.js应用应该能正常运行。如果之后需要更新系统,只需手动执行apt update && apt upgrade(联网时),或者临时重新启用相关服务即可。
备注:内容来源于stack exchange,提问作者dave_ag




