You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在隔离网络中通过代理或镜像使用APT为Ubuntu 16.04更新

在隔离网络中为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

火山引擎 最新活动