欢迎光临
我们一直在努力

【信创】银河麒麟V10 arm64|通过可联网终端向隔离服务器安装软件及依赖完整实操手册(全程以 zstd 举例)

【信创】银河麒麟V10 arm64|通过可联网终端向隔离服务器安装软件及依赖完整实操手册(全程以 zstd 举例)

前置硬性规则(三个场景共用)

联网操作主机:和离线服务器完全一致:银河麒麟 V10、相同SP版本、arm64(aarch64),架构/版本不一致,deb无法安装。 最终交付物:deb离线包集合 + 离线本地APT源方案,实现另一台机器直接apt安装。


在这里插入图片描述

文章目录

  • 【信创】银河麒麟V10 arm64|通过可联网终端向隔离服务器安装软件及依赖完整实操手册(全程以 zstd 举例)
  • 场景1:本机**已经装好 zstd**,导出整套可移植安装包
    • 1.1 使用 apt‑clone(官方备份方案,推荐)
      • 联网机操作
      • 拷贝到离线服务器恢复
    • 1.2 简易方案:缓存重新下载全套(apt reinstall)
  • 场景2:从官方源导出 zstd 的**完整递归依赖包(本机装没装都可以)**
    • 联网麒麟arm64操作
    • 拷贝到离线服务器临时批量安装
  • 场景3:第三方独立deb包(举例假设第三方包名叫 `zstd‑custom_1.5.5‑kylin_arm64.deb`)
    • 步骤1:联网同版本arm64麒麟操作
    • 离线服务器临时安装方式
  • 进阶方案:把一堆deb做成**永久本地APT源(一劳永逸)**
    • 在离线服务器操作
    • 使用方式(以后安装只需要这一行)
  • 对比三张场景区别总结(方便记忆)
  • 补充企业精准离线工具 apt‑offline(最优生产方案)
  • 全部命令整理成**4个一键执行shell脚本**:
  • 整理成4个独立可直接运行的sh脚本
  • 银河麒麟V10 arm64 4套一键离线打包脚本
    • 脚本1:export_installed.sh|场景1 —— 本机**已经安装好zstd**,完整备份迁移
      • 使用示例
    • 脚本2:export_official.sh|场景2 —— 官方源全新下载完整依赖链(本机装没装都能用)
      • 使用示例
    • 脚本3:export_custom_deb.sh|场景3 —— 第三方独立deb补齐官方依赖
      • 使用示例
    • 脚本4:build_local_repo.sh|进阶:把deb目录构建成永久离线APT源(离线服务器执行)
      • 使用示例(离线服务器操作)
  • 配套操作说明文档(极简版)
  • 补充说明

场景1:本机已经装好 zstd,导出整套可移植安装包

目标:当前机器zstd已经安装完成,把它本身 + 它运行所依赖的全部deb打包,拷贝到空白离线服务器部署。

1.1 使用 apt‑clone(官方备份方案,推荐)

联网机操作

# 1.安装备份工具
sudo apt update
sudo apt install apt-clone -y

# 2.创建备份目录
mkdir -p ~/export_zstd_installed

# 3.备份zstd以及它全部依赖
apt-clone clone ~/export_zstd_installed/zstd_full.tar.gz –with-deps zstd

执行完成后得到 zstd_full.tar.gz,这个压缩包包含所有需要的deb包。

拷贝到离线服务器恢复

  • U盘把 zstd_full.tar.gz 传到离线服务器
  • 离线服务器执行恢复:
  • sudo apt install apt-clone -y
    apt-clone restore zstd_full.tar.gz

    1.2 简易方案:缓存重新下载全套(apt reinstall)

    如果不想用apt‑clone:

    mkdir -p ~/export_zstd_installed
    # –download-only 只下载不安装,强制重新拉取安装包
    sudo apt reinstall -d zstd
    # 复制缓存内全部deb
    cp /var/cache/apt/archives/*.deb ~/export_zstd_installed/

    缺点:apt reinstall只会下载本机器缺失更新的包,如果本机所有包都是最新完好状态,缓存可能为空;这种情况改用场景2的apt‑rdepends强制递归拉取。


    场景2:从官方源导出 zstd 的完整递归依赖包(本机装没装都可以)

    适合:我要全新给离线服务器部署zstd,不管本机有没有安装,强制下载完整依赖链所有deb。

    联网麒麟arm64操作

    # 1.安装依赖解析工具
    sudo apt update
    sudo apt install apt-rdepends -y

    # 2.建立导出文件夹
    mkdir -p ~/export_zstd_official
    cd ~/export_zstd_official

    # 3.递归获取全部依赖包名,去重
    apt-rdepends zstd | grep -v "^ " | sort -u > pkg_list.txt

    # 4.批量下载每一个deb
    cat pkg_list.txt | xargs apt download

    执行结束,~/export_zstd_official 目录里面就是zstd + 全部依赖arm64安装包。

    apt download:不会安装软件,只会把deb下载到当前目录。

    拷贝到离线服务器临时批量安装

    把整个文件夹复制到离线服务器,进入目录执行:

    sudo dpkg -i *.deb
    # 如果报依赖错误,修复配置
    sudo apt install -f
    sudo dpkg –configure -a


    场景3:第三方独立deb包(举例假设第三方包名叫 zstd‑custom_1.5.5‑kylin_arm64.deb)

    特点:这个deb不在官方apt源,双击/dpkg安装会提示缺少一堆依赖,我们自动补齐所有官方依赖。

    步骤1:联网同版本arm64麒麟操作

  • 将第三方deb放到工作目录
  • mkdir -p ~/export_zstd_custom
    cd ~/export_zstd_custom
    # 把你的第三方deb复制到此目录
    cp /xxx/zstd‑custom_1.5.5‑kylin_arm64.deb ./

  • 读取这个deb的依赖列表
  • # 获取deb内部依赖信息
    dpkg-deb -I zstd‑custom_1.5.5‑kylin_arm64.deb
    # 提取递归依赖,输出到文件
    apt-cache depends –recurse –no-recommends zstd-custom | grep "^\\w" | sort -u > deps_list.txt

  • 批量下载所有来自官方源的依赖
  • cat deps_list.txt | xargs apt download

    此时文件夹内容:

    • 你自己的第三方deb:zstd‑custom_1.5.5‑kylin_arm64.deb
    • apt自动下载出来的全部依赖deb

    ⚠️ 限制:如果某个依赖本身也属于私有第三方包(官方源不存在),apt download会失败,这个包只能手动单独收集。

    离线服务器临时安装方式

    sudo dpkg -i *.deb
    sudo apt install -f


    进阶方案:把一堆deb做成永久本地APT源(一劳永逸)

    上面3种场景导出的deb文件夹,都可以做成离线本地源。做完之后离线服务器可以直接执行: sudo apt install zstd,apt自动解析目录里所有deb依赖,不再需要手动dpkg。

    在离线服务器操作

  • 把整套deb文件夹放到固定路径,示例 /opt/offline_repo_zstd
  • # 安装仓库构建工具
    sudo apt install dpkg-dev apt-utils

    cd /opt/offline_repo_zstd
    # 扫描当前目录所有deb,生成软件包索引
    dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
    apt-ftparchive release . > Release

  • 修改apt源配置文件 /etc/apt/sources.list 注释掉所有外网源,追加一行本地源:
  • deb [trusted=yes] file:///opt/offline_repo_zstd ./

    trusted=yes 关闭gpg签名校验(离线环境必备)

  • 更新本地apt缓存
  • sudo apt update

    使用方式(以后安装只需要这一行)

    sudo apt install zstd

    apt会自动在本地文件夹查找全部依赖完成安装。

    如果后续新增更多deb包到这个仓库目录: 重新执行一遍 dpkg‑scanpackages 刷新索引,再apt update即可。


    对比三张场景区别总结(方便记忆)

    场景需求描述推荐工具
    1 本机已经装好zstd,完整备份迁移 apt‑clone
    2 从官方源全新导出zstd完整依赖链 apt‑rdepends + apt download
    3 私有第三方deb,补齐官方依赖 apt‑cache depends + apt download

    补充企业精准离线工具 apt‑offline(最优生产方案)

    流程:

  • 离线服务器生成缺少依赖的签名文件 xxx.sig
  • sig拷贝到联网arm64机器一键下载精准匹配这台服务器状态的deb包
  • 传回离线服务器一键部署,不会下载服务器已经安装好的包
  • 全部命令整理成4个一键执行shell脚本:

  • 已安装软件备份脚本
  • 官方软件完整依赖下载脚本
  • 第三方deb依赖补齐脚本
  • 离线仓库自动构建脚本
  • 整理成4个独立可直接运行的sh脚本

    银河麒麟V10 arm64 4套一键离线打包脚本

    前置要求:执行脚本的联网主机 = 银河麒麟V10 arm64,版本SP与离线服务器完全一致 使用方式:复制代码保存为 .sh,chmod +x xxx.sh && ./xxx.sh


    脚本1:export_installed.sh|场景1 —— 本机已经安装好zstd,完整备份迁移

    功能:备份指定软件 + 全部依赖,生成可恢复的apt‑clone归档包

    #!/bin/bash
    # export_installed.sh 用法:./export_installed.sh zstd
    set -e
    if [ $# -ne 1 ];then
    echo "使用方法:$0 软件名"
    echo "示例:$0 zstd"
    exit 1
    fi
    PKG="$1"
    OUT_DIR="./backup_${PKG}"
    mkdir -p "${OUT_DIR}"

    sudo apt update
    sudo apt install apt-clone -y

    echo "正在备份软件【${PKG}】及其全部依赖……"
    apt-clone clone "${OUT_DIR}/${PKG}_full.tar.gz" –with-deps "${PKG}"

    echo "====================================="
    echo "备份完成!文件路径:${OUT_DIR}/${PKG}_full.tar.gz"
    echo "离线服务器恢复命令:"
    echo "sudo apt install apt-clone -y"
    echo "apt-clone restore ${PKG}_full.tar.gz"
    echo "====================================="

    使用示例

    chmod +x export_installed.sh
    ./export_installed.sh zstd


    脚本2:export_official.sh|场景2 —— 官方源全新下载完整依赖链(本机装没装都能用)

    功能:递归解析全部依赖,批量下载所有deb,输出独立离线文件夹

    #!/bin/bash
    # export_official.sh 用法:./export_official.sh zstd
    set -e
    if [ $# -ne 1 ];then
    echo "使用方法:$0 软件名"
    echo "示例:$0 zstd"
    exit 1
    fi
    PKG="$1"
    OUT_DIR="./offline_${PKG}_official"
    mkdir -p "${OUT_DIR}"

    sudo apt update
    sudo apt install apt-rdepends -y

    echo "正在递归获取【${PKG}】全部依赖列表……"
    apt-rdepends "${PKG}" | grep -v "^ " | sort -u > "${OUT_DIR}/pkg_list.txt"

    cd "${OUT_DIR}"
    echo "开始批量下载全部deb包……"
    cat pkg_list.txt | xargs apt download 2>/dev/null || true

    echo "====================================="
    echo "下载完成!目录:$(pwd)"
    echo "离线服务器批量安装命令:"
    echo "sudo dpkg -i *.deb"
    echo "sudo apt install -f -y"
    echo "====================================="

    使用示例

    chmod +x export_official.sh
    ./export_official.sh zstd


    脚本3:export_custom_deb.sh|场景3 —— 第三方独立deb补齐官方依赖

    传入本地deb文件路径,自动抓取所有来自官方源的依赖包

    #!/bin/bash
    set -e
    if [ $# -ne 1 ];then
    echo "用法:$0 deb文件路径"
    echo "示例:$0 ./zstd_1.4.8+dfsg-2.1_arm64.deb"
    exit 1
    fi
    DEB_FILE="$1"
    if [ ! -f "${DEB_FILE}" ];then
    echo "错误:文件不存在 ${DEB_FILE}"
    exit 1
    fi

    DEB_NAME=$(basename "${DEB_FILE}")
    PKG_NAME=$(dpkg-deb -f "${DEB_FILE}" Package)
    RAW_DEP=$(dpkg-deb -f "${DEB_FILE}" Depends)

    OUT_DIR="./deps_${PKG_NAME}"
    mkdir -p "${OUT_DIR}"

    sudo apt clean

    echo "原始依赖字段:$RAW_DEP"
    > "${OUT_DIR}/deps_list.txt"
    if [ -n "$RAW_DEP" ];then
    echo "$RAW_DEP" | tr ',' '\\n' | sed 's/(.*)//g' | sed 's/ //g' | sort -u | sed '/^$/d' > "${OUT_DIR}/deps_list.txt"
    fi

    echo "=====依赖列表===="
    cat "${OUT_DIR}/deps_list.txt"
    echo "================="

    while read pkg; do
    if [ -z "$pkg" ];then
    continue
    fi
    echo "强制下载包:$pkg"
    sudo apt-get –reinstall –download-only install "${pkg}" -y || echo "【警告】${pkg} 无法从源获取对应版本"
    done < "${OUT_DIR}/deps_list.txt"

    # 复制缓存的依赖deb,不含主程序deb
    sudo cp /var/cache/apt/archives/*.deb "${OUT_DIR}/"
    sudo chown $USER:$USER "${OUT_DIR}"/*.deb 2>/dev/null

    cd "${OUT_DIR}"
    echo -e "\\n=====依赖包列表(不含主deb)===="
    ls -lh *.deb 2>/dev/null || echo "本次没有下载到额外deb"

    echo ""
    echo "使用说明:"
    echo "1. 将本目录全部依赖deb + 你自己的原始 ${DEB_NAME} 一起拷贝到离线服务器"
    echo "2. 离线服务器执行:sudo dpkg -i *.deb ${DEB_NAME} && sudo apt install -f -y"

    使用示例

    chmod +x export_custom_deb.sh
    ./export_custom_deb.sh ./zstd‑custom_1.5.5‑kylin_arm64.deb

    注意:如果某个依赖不在麒麟官方源,apt download会跳过,这类包只能手动补充。


    脚本4:build_local_repo.sh|进阶:把deb目录构建成永久离线APT源(离线服务器执行)

    放到存放deb的目录运行,一键生成软件仓库索引

    #!/bin/bash
    # build_local_repo.sh 在deb所在目录执行
    set -e
    REPO_PATH=$(pwd)

    sudo apt update
    sudo apt install dpkg-dev apt-utils -y

    echo "正在扫描目录 ${REPO_PATH} 下所有deb包,生成仓库索引……"
    dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
    apt-ftparchive release . > Release

    echo "====================================="
    echo "离线仓库构建完成!"
    echo "请修改 /etc/apt/sources.list 添加:"
    echo "deb [trusted=yes] file://${REPO_PATH} ./"
    echo "然后执行:sudo apt update"
    echo "之后可以直接 apt install zstd"
    echo "====================================="

    使用示例(离线服务器操作)

    # 进入deb存放目录
    cd /opt/offline_zstd
    chmod +x build_local_repo.sh
    sudo ./build_local_repo.sh

    编辑 /etc/apt/sources.list,写入:

    deb [trusted=yes] file:///opt/offline_zstd ./

    刷新缓存:

    sudo apt update
    sudo apt install zstd


    配套操作说明文档(极简版)

  • 联网机执行脚本1/2/3 → 得到deb文件夹/归档包
  • U盘拷贝整个目录到离线银河麒麟V10 arm64服务器
  • 临时安装:sudo dpkg -i *.deb && sudo apt install -f -y
  • 长期复用:执行脚本4构建本地apt源
  • 补充说明

  • apt download 失败 = 该依赖不在当前apt源;
  • 架构不匹配一定会安装失败,联网机必须是同版本arm64麒麟V10;
  • 后续新增deb到本地仓库,重新运行一次 build_local_repo.sh,再apt update即可。
  • 赞(0)
    未经允许不得转载:171主机测评 » 【信创】银河麒麟V10 arm64|通过可联网终端向隔离服务器安装软件及依赖完整实操手册(全程以 zstd 举例)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址