如何在隔离网络中通过代理或镜像使用APT为Ubuntu 16.04更新
我之前帮不少用户解决过隔离网络里Ubuntu系统的更新问题,针对你这种只能通过VPN访问内部网络、完全没外网的场景,有两个靠谱的方案,一个是用专门的离线更新工具批量处理,另一个是手动下载特定内核包安装,下面给你一步步讲清楚:
一、使用apt-offline工具批量处理系统更新(推荐)
这个工具专门为离线环境设计,能精准获取所有需要的更新包,包括内核更新,非常适合多台机器的场景。
步骤1:在联网的同架构Ubuntu 16.04机器上准备
因为Ubuntu 16.04已经停止官方支持,首先得把系统源换成旧版本镜像站,否则会找不到包:
sudo sed -i 's/archive.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list sudo apt update
接着安装apt-offline工具:
sudo apt install apt-offline
生成更新需求清单(这个文件会记录当前系统需要的所有更新元数据):
apt-offline set --update --upgrade /tmp/update-request.zip
然后根据清单下载所有对应的deb包:
apt-offline get /tmp/update-request.zip --bundle /tmp/update-packages.zip
等待下载完成后,/tmp/update-packages.zip就是包含所有更新包(包括新内核)的压缩包。
步骤2:传输到隔离网络的机器上并应用更新
通过VPN把update-packages.zip传到目标机器(比如用scp,前提是VPN能打通文件传输)。如果目标机器还没装apt-offline,需要先单独下载该工具的deb包传到目标机,用dpkg安装:
sudo dpkg -i apt-offline_*.deb
然后应用更新:
apt-offline install /tmp/update-packages.zip
最后执行以下命令确保依赖完全处理:
sudo dpkg --configure -a sudo apt-get -f install
更新完成后重启机器,新内核就会生效。
二、手动下载并安装特定内核更新(仅需内核升级时用)
如果不需要全系统更新,只需要安装新内核,可以用这个更轻量化的方法:
步骤1:在联网机器上查找并下载内核包
在联网的同版本Ubuntu机器上,先查看可用的内核版本:
apt-cache search linux-image-generic | grep xenial
找到你需要的版本(比如linux-image-generic-4.4.0-210),然后下载对应的三个核心包:
- 内核镜像包:
linux-image-<版本号>-generic - 内核头文件包:
linux-headers-<版本号>-generic - 内核模块包:
linux-modules-<版本号>-generic
用apt download命令一次性下载:
apt download linux-image-4.4.0-210-generic linux-headers-4.4.0-210-generic linux-modules-4.4.0-210-generic
下载完成后会得到三个对应的.deb文件。
步骤2:传输到隔离机器并安装
把这三个deb包传到目标机器,然后执行安装命令:
sudo dpkg -i linux-image-*.deb linux-headers-*.deb linux-modules-*.deb
如果出现依赖问题,需要在联网机器上用apt-rdepends <包名>查看依赖,下载对应的依赖包后再传到目标机,最后用sudo apt-get -f install修复依赖。
安装完成后重启机器,用uname -r命令检查内核版本是否更新成功。
三、后续维护建议
- 定期在联网机器上生成更新包,通过VPN同步到隔离网络的机器,保证系统安全
- 如果机器数量较多,可以在隔离网络内搭建一个本地APT镜像源,把下载好的包放到镜像源里,所有机器都可以从这个本地源更新,能大幅提升效率
内容的提问来源于stack exchange,提问作者millinon




