5 Linux apt下载软件包

0 简介

Linux中使用apt下载ARM 架构软件包


1 在 x86 的 Ubuntu 系统上为 ARM 架构下载 .deb

1.1 🎯 方案一:直接使用 apt 命令下载

直接在当前 x86 系统里,就能把 ARM 的 .deb 包连同依赖一起下载下来。

  1. 启用 ARM64 架构支持

    首先,告诉 apt 增加对 arm64 架构的支持。这个操作不会 改变你当前系统的任何设置,只是让 apt "认识"了另一个架构。

    bash 复制代码
    sudo dpkg --add-architecture arm64
    sudo apt update
  2. 添加 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

    完成后,更新你的软件包列表:

    bash 复制代码
    sudo apt update

    当更新完成后,你就可以像之前那样,使用 apt download 顺利地下载 arm64 架构的软件包了。

  3. 下载主包

    假设你要下载 flameshot 这个软件,使用 apt download 命令,并通过 :arm64 明确指定架构。下载的文件会直接保存在你当前的工作目录下。

    bash 复制代码
    apt download flameshot:arm64
  4. 处理依赖关系

    这是最关键的一步。仅下载主包往往不够,还需要它的所有依赖才能顺利安装。

    • 查看依赖 :先用下面的命令来看看需要哪些依赖。

      bash 复制代码
      apt depends flameshot:arm64
    • 下载依赖 :可以手动下载,也可以用一个脚本批量下载。下面这个脚本非常实用,能递归地找出所有依赖并下载:

      bash 复制代码
      apt-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 文件和依赖。我查到的资料中有一个比较清晰的说明。

  1. 安装 apt-offline

    bash 复制代码
    sudo apt install apt-offline
  2. 在"下载机"上生成需求签名

    你需要了解那台 ARM 目标机需要的具体软件包。假设你需要安装 build-essential

    bash 复制代码
    # 生成一个签名文件,它会包含所有依赖信息
    sudo apt-offline set --install-packages build-essential --arch=arm64 build-essential.sig
  3. 下载所有软件包

    使用刚刚生成的签名文件,apt-offline 会自动为你准备好包含所有 .deb 的压缩包。

    bash 复制代码
    apt-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 虚拟环境。

  1. 安装 QEMU 用户态模拟器

    QEMU 用户态模拟器能让 x86 系统直接运行 ARM 的二进制程序。

    bash 复制代码
    sudo apt install qemu-user-static binfmt-support
  2. 下载并解压一个基础 ARM 文件系统

    从 Ubuntu 官网下载一个最小的 ARM64 根文件系统(rootfs)。

    bash 复制代码
    wget 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
  3. 配置并进入模拟环境

    把刚才安装的 QEMU 模拟器复制到新的根目录中,并准备好网络配置,就可以用 chroot 切换进去了。此后在这个环境里执行的 apt install 等命令,就都会下载 ARM 架构的 .deb 包了。

    bash 复制代码
    sudo 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 列出的依赖包是否也已经下载并拷贝过去。如果缺少关键的依赖,安装仍然会失败。
相关推荐
坚持就完事了1 小时前
Linux中的tr命令
linux·运维·服务器
xingyuzhisuan1 小时前
影视动画渲染租用RTX4090 GPU服务器的优势及选型指南
运维·服务器·ai编程·gpu算力
TG_yunshuguoji1 小时前
阿里云代理商:DeepSeek V4 API接入全攻略 + 云服务器部署指南
运维·阿里云·云计算·ai智能体·deepseek-v4
很懒的程序员雄1 小时前
eNSP企业级复杂拓扑
运维·服务器·网络
zhuxiaohai681 小时前
ubuntu24.04安装docker(国内加速方法)
运维·docker·容器
xhbh6661 小时前
Java端口转发完全教程:从Socket基础到Netty高并发实战
运维·服务器·网络·流量端口转发·netsh 端口转发
普通young man1 小时前
谈Linux下编译和动静态链接
linux·运维·服务器
leoZ2311 小时前
项目改造为 Docker 容器使用指南
运维·docker·容器
初願致夕霞1 小时前
Linux编程_应用层_HTTP与HTTPS协议
linux·c++·http·https