离线安装 - Arch Linux 中文维基

跳转到内容

# 离线安装

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 Offline installation，最近一次同步于 2023-06-18，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

此文提供在无互联网连接时安装 Arch Linux 的指南。要达到此目的，需要另一有互联网连接的系统。

首先，按照安装指南，跳过安装指南-连接到互联网部分，直接跳到安装指南#安装必需的软件包步骤。

警告：从 ISO 解压根文件系统镜像 (`airootfs.sfs`) 或复制 live 环境根文件系统不是受支持的方法。

## 准备本地仓库

从 Pacman/Tips and tricks#Installing packages from a CD/DVD or USB stick 获取有关在单独的主机安装上准备具有必要文件的本地仓库的说明。

至少，对于正常运行的系统，建议使用以下软件包：

    # pacman -Syw --cachedir . --dbpath /tmp/blankdb base base-devel linux linux-firmware mkinitcpio vim

创建您的自定义离线仓库

    # repo-add ./custom.db.tar.gz ./*[^sig]

## 挂载和配置

这篇文章的某些内容需要扩充。

原因：添加：如何在 ISO 内添加自定义仓库的可选指南。 (在 Talk:离线安装 中讨论)

准备好仓库后，将外部媒体连接到新安装，并将其挂载到新创建的根文件系统上：

    # mount --mkdir /dev/sdxy /mnt/repo

编辑您的 archiso `/etc/pacman.conf` 并添加一个新部分：

    /etc/pacman.conf

    [custom]
    SigLevel = Optional
    Server = file:///mnt/repo/

注释掉 `[core]` 和 `[extra]` 以使 pacman 在默认仓库上不失败。

## Pacstrap

您现在可以继续将本地可用的软件包打包到新安装中：

    # pacstrap -K /mnt base base-devel linux linux-firmware mkinitcpio vim

## 软件包的离线安装

### 从文件安装

当离线安装仅是临时的，但需要在可访问互联网前安装自定义的包，参见 pacman#其它命令以了解安装本地包的方法。

Shell 的通配符可用于立即安装：

    # pacman -U /package/folder/*.tar.zst

### 离线缓存

您可以把指定文件置于 `/var/lib/pacman/sync` 以及 `/var/cache/pacman/pkg` 以便 `pacman` 认为其拥有搜索、更新和安装之一切所需。下文方法基于：[1][2]。

步骤：

1. 用可访问互联网的电脑（在线电脑）下载最新包的数据库；
2. 传输至离线电脑（目标电脑）；
3. 生成离线电脑所需更新的包列表；
4. 用在线电脑下载包及其签名；
5. 传输至离线电脑的 pacman 缓存；
6. 安装更新。

提示：若您的默认仓库不是 core，extra 或 multilib，您应检查您的 `/etc/pacman.conf` 文件。

下列脚本会下载最新包数据库，若需要，可修改 `MIRROR` 至镜像状态列表之任一。

    download_databases.sh

    #!/bin/sh

    ARCH="x86_64"
    MIRROR="https://mirrors.kernel.org/archlinux/"

    wget "${MIRROR}/core/os/${ARCH}/core.db"
    wget "${MIRROR}/extra/os/${ARCH}/extra.db"
    wget "${MIRROR}/multilib/os/${ARCH}/multilib.db"

    # and possibly -uncomment- (if customized in /etc/pacman.conf or pacman.conf.d):

    #wget "${MIRROR}/core-testing/os/${ARCH}/core-testing.db"
    #wget "${MIRROR}/extra-testing/os/${ARCH}/extra-testing.db"
    #wget "${MIRROR}/multilib-testing/os/${ARCH}/multilib-testing.db"

    # and -additionaly- debug and staging packages.

转化为可执行文件并运行。您将得到多个 .db 文件。

下列步骤将传输 .db 文件至离线电脑，使您可更新包列表（效果与在线的 `pacman -Sy` 相同），然后生成需更新包的列表。

    # cp *.db /var/lib/pacman/sync/
    # pacman -Sup --noconfirm > pkglist

注意：确保您启用了至少一个 `/etc/pacman.d/mirrorlist` 定义的服务器。否则您将得到一个误导性的错误信息：`error: no database for package: package-name`.

您还需下载相应签名，所以请准备下载签名的列表：

    # sed -e 's/\.zst$/.zst.sig/' ../pkglist > ../siglist

将这两个列表传输至在线电脑，并在空目录里下载列出的包：

    # wget -nv -i ../pkglist
    # wget -nv -i ../siglist

提示：当使用 cygwin 或其他 Windows 环境下载包时，文件名可能会损坏，因为 Windows 默认文件名不许有一些字符，如冒号。若要避免损坏（cygwin 环境下，因为其命名限制不同），使用 `wget --restrict-file-names=unix`.

将所有 `*.pkg.tar.zst` 和 `*.pkg.tar.zst.sig` 文件带回离线电脑，置于 `/var/cache/pacman/pkg` 并最后运行：

    # pacman -Su

### 本地仓库

如果预计新系统将保持离线或物理隔离，应配置为仅期望本地仓库。

#### 完善仓库

在 chroot 到您的新安装后，编辑新 `/etc/pacman.conf` 使之与旧者一致 （但无 `/mnt` 前缀）：

    /etc/pacman.conf

    [custom]
    SigLevel = Optional
    Server = file:///repo/

注释掉其他所有仓库，继续配置新系统。

从此对离线系统的任何更新都可以通过挂载本地仓库的最新副本至 `/repo`，再运行 pacman 命令。

## 另见

- 离线阅读：离线浏览 Arch Wiki.

分类：​

- Live Arch 系统
- 安装过程

离线安装
添加话题