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 列出的依赖包是否也已经下载并拷贝过去。如果缺少关键的依赖,安装仍然会失败。
相关推荐
运维行者_21 小时前
Applications Manager中的Redis监控
大数据·服务器·数据库·人工智能·网络协议
xingyuzhisuan1 天前
网络 Token 常见故障原理,基础排查科普
运维·服务器·网络·php
APIshop1 天前
Python 获取 1688 商品采集 API 接口 | 工厂货源自动化对接商品信息 | 无需选品
运维·python·自动化
wljy11 天前
二、进制状态转换
linux·运维·服务器·c语言·c++
handler011 天前
【MySQL】常用命令总结(库与表增删查改)
运维·数据库·mysql·命令·总结
week@eight1 天前
Linux - Doris
linux·运维·数据库·mysql
平行云1 天前
实时云渲染预启动技术解析:UE数字孪生应用的延迟优化机制(二)
linux·unity·ue5·webgl·实时云渲染·云桌面·像素流
看到代码头都是大的1 天前
CentOS环境下手动升级openssl、openssh
linux·运维·centos
浮生若城1 天前
Linux——Ext系列文件系统
linux·运维·服务器
ITyunwei09871 天前
主流 SaaS 工单系统对比
运维·服务器·人工智能