【信创】银河麒麟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包。
拷贝到离线服务器恢复
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麒麟操作
mkdir -p ~/export_zstd_custom
cd ~/export_zstd_custom
# 把你的第三方deb复制到此目录
cp /xxx/zstd‑custom_1.5.5‑kylin_arm64.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。
在离线服务器操作
# 安装仓库构建工具
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
deb [trusted=yes] file:///opt/offline_repo_zstd ./
trusted=yes 关闭gpg签名校验(离线环境必备)
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(最优生产方案)
流程:
全部命令整理成4个一键执行shell脚本:
整理成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






