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 列出的依赖包是否也已经下载并拷贝过去。如果缺少关键的依赖,安装仍然会失败。
相关推荐
AlfredZhao1 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao16 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
小宇宙Zz2 天前
Maven依赖冲突
java·服务器·maven