0 简介
Linux中使用apt下载ARM 架构软件包
1 在 x86 的 Ubuntu 系统上为 ARM 架构下载 .deb 包
1.1 🎯 方案一:直接使用 apt 命令下载
直接在当前 x86 系统里,就能把 ARM 的 .deb 包连同依赖一起下载下来。
-
启用 ARM64 架构支持
首先,告诉
apt增加对arm64架构的支持。这个操作不会 改变你当前系统的任何设置,只是让apt"认识"了另一个架构。bashsudo dpkg --add-architecture arm64 sudo apt update -
添加 Ubuntu Ports 软件源
作用 :这是最关键的一步,为apt添加官方的 ARM 软件包源。bash# 首先备份你当前的软件源列表 (一个好习惯) sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 然后,将 Ubuntu Ports 源添加到你的 sources.list 文件末尾 # 下面的命令是针对 Ubuntu 18.04 的,如果你使用的是其他版本,需要将 'bionic' 替换成你的版本代号 (如 'focal', 'jammy') # echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list echo "deb [arch=arm64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list完成后,更新你的软件包列表:
bashsudo apt update当更新完成后,你就可以像之前那样,使用
apt download顺利地下载arm64架构的软件包了。 -
下载主包
假设你要下载
flameshot这个软件,使用apt download命令,并通过:arm64明确指定架构。下载的文件会直接保存在你当前的工作目录下。bashapt download flameshot:arm64 -
处理依赖关系
这是最关键的一步。仅下载主包往往不够,还需要它的所有依赖才能顺利安装。
-
查看依赖 :先用下面的命令来看看需要哪些依赖。
bashapt depends flameshot:arm64 -
下载依赖 :可以手动下载,也可以用一个脚本批量下载。下面这个脚本非常实用,能递归地找出所有依赖并下载:
bashapt-cache depends flameshot:arm64 | grep Depends | awk '{print $2}' | xargs apt download 2>/dev/null安全提示 :下载的
.deb包来自官方源,通常是安全的。但为保险起见,建议在安装前用dpkg -I快速检查一下包信息。
-
1.2 📦 方案二:处理大批量软件包 (使用 apt-offline)
如果你的目标是下载大量的 ARM 软件包或完整的系统环境,手动处理依赖会很繁琐。这时可以使用 apt-offline 工具。
它能在有网的 x86 机器上"模拟"出 ARM 机器的需求,并打包好所有需要的 .deb 文件和依赖。我查到的资料中有一个比较清晰的说明。
-
安装
apt-offlinebashsudo apt install apt-offline -
在"下载机"上生成需求签名
你需要了解那台 ARM 目标机需要的具体软件包。假设你需要安装
build-essential:bash# 生成一个签名文件,它会包含所有依赖信息 sudo apt-offline set --install-packages build-essential --arch=arm64 build-essential.sig -
下载所有软件包
使用刚刚生成的签名文件,
apt-offline会自动为你准备好包含所有.deb的压缩包。bashapt-offline get build-essential.sig --bundle build-essential-bundle.zip之后,将这个
.zip文件传到 ARM 机器上,解压后运行sudo dpkg -i *.deb即可安装。
1.3 🐳 方案三:模拟 ARM 环境 (通过 Chroot / Docker)
这种方法适合需要运行 ARM 程序、编译 ARM 软件等更复杂的场景。它会在你的 x86 系统里,用 qemu-user-static 打造一个轻量级的 ARM 虚拟环境。
-
安装 QEMU 用户态模拟器
QEMU 用户态模拟器能让 x86 系统直接运行 ARM 的二进制程序。
bashsudo apt install qemu-user-static binfmt-support -
下载并解压一个基础 ARM 文件系统
从 Ubuntu 官网下载一个最小的 ARM64 根文件系统(rootfs)。
bashwget http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04.6-base-arm64.tar.gz mkdir ubuntu-arm-rootfs sudo tar -xzf ubuntu-base-20.04.6-base-arm64.tar.gz -C ubuntu-arm-rootfs -
配置并进入模拟环境
把刚才安装的 QEMU 模拟器复制到新的根目录中,并准备好网络配置,就可以用
chroot切换进去了。此后在这个环境里执行的apt install等命令,就都会下载 ARM 架构的.deb包了。bashsudo cp /usr/bin/qemu-aarch64-static ubuntu-arm-rootfs/usr/bin/ sudo cp /etc/resolv.conf ubuntu-arm-rootfs/etc/ sudo chroot ubuntu-arm-rootfs
2 🛠️ 离线安装
💡 下载后,离线安装或将包拷贝到ARM目标机
在 x86 机器上成功下载 .deb 包后,你可以将这些包传输到 ARM 机器上进行离线安装。
在 ARM 目标机器上,进入存放 .deb 文件的目录,然后使用 dpkg 命令进行安装:
bash
sudo dpkg -i *.deb
如果安装过程中提示存在依赖问题,不要担心,在联网的机器上运行以下命令即可自动修复:
bash
sudo apt-get install -f
⚠️ 常见问题排查
- Ubuntu版本代号不匹配 :
sources.list中的bionic(18.04代号)必须换成你的系统版本代号。不确定的话,可以用lsb_release -c命令来查看。 - 下载的 .deb 包无法在 ARM 机器上安装 :注意检查
apt depends列出的依赖包是否也已经下载并拷贝过去。如果缺少关键的依赖,安装仍然会失败。