在服务器上安全使用 APT
四个命令不是一回事
sudo apt update
sudo apt upgrade
sudo apt full-upgrade
sudo apt autoremove
update:下载软件源索引,不安装升级。upgrade:安装可升级包;不会为了满足升级而主动删除已安装包。full-upgrade:允许安装或移除依赖以完成整体升级,影响范围更大。autoremove:删除被判断为“不再需要”的自动依赖;内核、驱动或人工依赖判断错误时可能产生风险。
推荐的查看流程
sudo apt update
apt list --upgradable
sudo apt upgrade --dry-run
重点关注:linux-image、libc6、openssl、systemd、openssh-server、nginx、mysql-server、redis-server、Docker 和运行时。必要时阅读:
apt changelog nginx
apt-cache policy nginx
为什么不默认加 -y
-y 自动回答确认,但升级中仍可能出现配置文件选择、服务重启或错误。新人应该先看到升级数量、下载量、删除项和关键包;自动化升级则需要经过设计、监控和回滚,而不是简单附加 -y。
只升级指定包与临时锁定
sudo apt install --only-upgrade nginx
sudo apt-mark hold mysql-server
apt-mark showhold
sudo apt-mark unhold mysql-server
锁定只是延后升级,不应永久逃避安全更新。记录原因、负责人和解除条件。
升级后检查
systemctl --failed
test -f /var/run/reboot-required && cat /var/run/reboot-required.pkgs
grep -E ' upgrade | install | remove ' /var/log/dpkg.log
随后验证 Nginx、PM2、数据库、磁盘、日志和真实业务入口。内核更新通常在重启后才生效;重启也必须安排窗口。
配置文件提示
APT 可能询问保留本地配置还是采用维护者版本。不要盲选:先查看差异,保留当前可用配置并在测试环境合并新模板通常更稳妥。