離線安裝

出自 Arch Linux 中文维基

此文提供在無互聯網連接時安裝 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 命令。

另見[編輯 | 編輯原始碼]