夜雨聆风学习资料网

ARTICLE · 1101475

在断网的银河麒麟系统上装个软件,真的很难?

在断网的银河麒麟系统上装个软件,真的很难?

我们将介绍如何使用Apt-offline工具对基于Debian的离线系统进行全面更新和升级。与之前的方法不同,这种方法不会只更新或升级单个软件包,而是整个系统。当您的网络速度较慢或完全无法连接互联网时,这种操作方式会非常有用。

想象一下这样的场景:你在工作时使用一台系统(Windows 或 Linux),并拥有高速互联网连接,而你家中的 Debian 或任何基于 Debian 的系统则没有网络连接,或者网络连接非常缓慢。

你想升级你的离线家庭系统,你会怎么做?购买高速互联网连接?其实并不必要!即使没有网络,你仍然可以更新或升级基于 Debian 的离线系统。这时 Apt-Offline 就派上用场了。

什么是apt-offline?

apt-offline 是 Debian/Ubuntu/ 银河麒麟 等 APT 系系统的离线包管理工具,实现断网机器更新系统、安装软件。Apt-offline 是一款使用 Python 编程语言编写的跨平台工具,提供命令行界面和图形界面。

核心流程三步:离线机生成签名文件 sig → 联网机根据 sig 下载全部依赖 → 拷回离线机执行安装

Requirements

  • 一个连接互联网的系统,我们称之为“在线系统”。

  • “离线系统”(Debian 及其衍生系统)。

  • U盘或外接硬盘,需有足够的空间存放所有更新后的软件包。

    ⚠️ 重要前提:联网机和离线机必须是相同系统版本、相同 CPU 架构(x86_64/arm64),sources.list 源保持一致,否则包版本、架构不匹配会安装失败。

    一、安装 apt-offline

    离线机和联网机都需要安装(离线机如果还没装 apt-offline,只能手动 dpkg 先装上)

    sudo apt updatesudo apt install apt-offline -y

    升级离线 Debian 系统包括以下步骤:

    1. 进入离线系统,创建一个目录(例如 PkgUpdates),并生成更新所需文件的数据库。

    2. 将 PkgUpdates 目录复制到在线系统,并根据数据库文件下载所有软件包更新。

    3. 最后,通过USB传输下载的更新,或使用任何文件传输工具将它们复制到离线系统中,并安装这些更新。

    二、三大核心子命令

    1. apt-offline set(离线机器:生成签名文件 *.sig)

    作用:扫描本机当前 APT 数据库,生成需求清单(sig 文件),记录需要更新 / 安装的包 + 依赖信息

    语法:

    sudo apt-offline set 签名文件.sig [选项]

    常用选项:

    参数

    说明

    --update

    等效 apt update,只下载源索引包列表

    --upgrade

    等效 apt upgrade,系统全量升级

    --install-packages pkg1 pkg2

    指定要离线安装的软件包,自动包含全部依赖

    --release jammy

    指定系统发行版代号(如 jammy=Ubuntu22.04)

    --simulate

    模拟运行,不生成文件,仅测试

    --verbose

    详细输出调试

    示例:

    # 场景1:生成系统更新+升级的sig(update + upgrade)

    sudo apt-offline set upgrade.sig --update --upgrade

    # 场景2:只安装指定软件(例如安装nginx)

    sudo apt-offline set nginx.sig --install-packages nginx

    # 场景3:仅更新源列表(只做apt update)

    sudo apt-offline set update.sig --update

    2. apt-offline get(联网机器:读取 sig,下载所有 deb 包)

    把离线机生成的 .sig 文件拷贝到联网电脑,执行下载,两种输出方式:

    • --bundle xxx.zip:打包成单个 zip 压缩包,U 盘传输最方便

    • -d /path/folder:下载到目录,不打包,支持断点续传

    语法:

    sudo apt-offline get 签名文件.sig [选项]

    常用选项:

    参数

    说明

    --bundle out.zip

    打包为 zip 压缩包

    -d /data/pkgs

    下载到指定目录

    --threads N

    多线程并发下载,加速

    --bug-reports

    额外下载软件 bug 报告(一般不用)

    --no-checksum

    跳过校验(不推荐,有安全风险)

    示例:

    # 下载并打包成zipsudo apt-offline get upgrade.sig --bundle upgrade.zip --threads 4# 下载到文件夹,不打包sudo apt-offline get nginx.sig -d ~/nginx_pkgs --threads 4

    3. apt-offline install(回到离线机器:导入包并安装)

    把下载好的 zip 包 / 整个目录拷贝回离线内网机器执行安装。

    可以直接接收 zip 包 或者 存放 deb 的目录

    # 用zip包安装sudo apt-offline install upgrade.zip# 用文件夹安装sudo apt-offline install /media/usb/nginx_pkgs

    内部会自动:更新 apt 缓存 + 安装所有 deb 包,自动处理依赖,等效联网apt upgrade / apt install

    三、完整实操流程示例(离线升级系统)

    1. 离线机

    sudo apt-offline set upgrade.sig --update --upgrade

    拷贝 upgrade.sig 到 U 盘

    1. 联网同版本同架构机器

    sudo apt-offline get upgrade.sig --bundle upgrade.zip --threads 4

    拷贝 upgrade.zip 回离线机

    1. 离线机执行安装

    sudo apt-offline install upgrade.zip

    四、辅助命令

    apt-offline -h # 帮助apt-offline --version # 查看版本

    五、常见坑与注意事项

    1. sources.list 必须一致:离线机 /etc/apt/sources.list 和联网机完全相同,否则会找不到包或者版本不一致。

    1. 架构匹配 x86_64 离线机,联网机也必须 x86_64;arm64 对应 arm64。

    1. 大版本跨版本升级(如 20.04→22.04)不建议用 apt-offline,容易依赖断裂。

    1. apt-offline set 需要 root,必须加sudo;get/install 同样需要 sudo 权限。

    1. 磁盘空间:下载的所有 deb 包体积较大,预留足够 U 盘 / 磁盘空间。

    1. 如果中途失败,可以重新执行apt-offline get,支持断点续下。

    六、适用场景

    • 物理隔离内网、空气隔离(air-gap)服务器(银河麒麟、Ubuntu 服务器)

    • 无外网工控机、嵌入式 Debian 系统

    • 安全环境不允许主机直接访问互联网

    七、和 dpkg + apt download 的区别

    • apt download:只能手动下载单个包,不会自动完整解析整套依赖链,容易缺依赖

    • apt-offline:基于本机 apt 数据库自动计算完整依赖,一步导出全部需要的包,更适合大批量离线升级

    Resource:

    • Apt-Offline GitHub repositoryApt-Offline GitHub 仓库

    扩展阅读:

    银河麒麟桌面操作系统下载单个deb软件包

    基于 DEB 的系统中,本地下载带依赖的软件包

    银河麒麟桌面操作系统下载某个软件包的递归依赖项(依赖项的依赖项)

    创作不易,辛苦发财的小手

    一键三连

    点点关注、收藏、点赞 ~

    再次感谢各位小主~

    相关学习资料