離線安裝 - 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 系統
- 安裝過程

離線安裝
新增話題