离线安装
airootfs.sfs
) 或复制 Live 环境的根文件系统不是受支持的安装方法。 airootfs.sfs
包含自定义配置,不适合或不安全用于已安装的系统。本文介绍了在没有互联网连接的系统上安装 Arch Linux 的说明。为此,需要另一台具有工作互联网连接的系统。
首先,按照安装指南,跳过需要互联网连接的步骤(例如安装指南#连接到互联网),然后继续阅读本指南,而不是按照安装指南#安装基本软件包。
准备本地仓库
按照 Pacman/技巧和窍门#从 CD/DVD 或 USB 驱动器安装软件包 中的说明,在单独的主机安装上准备包含必要文件的本地仓库。
至少,为了使系统正常运行,建议使用以下软件包
# pacman -Syw --cachedir . --dbpath /tmp/blankdb base linux linux-firmware
创建您的自定义离线仓库
# repo-add ./custom.db.tar.zst ./*[^sig]
挂载和配置
仓库准备好后,将外部介质连接到新安装的系统,并将其挂载到新创建的根文件系统
# 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 将本地可用的软件包安装到新系统中
# pacstrap -K /mnt base linux linux-firmware
软件包的离线安装
从文件安装
如果离线安装过程只是暂时的,但在能够访问网络之前需要手动安装一些软件包,请参阅pacman#其他命令以了解如何安装本地软件包。
# pacman -U /package/folder/*.tar.zst
离线缓存
您可以将所需的文件放入 /var/lib/pacman/sync
和 /var/cache/pacman/pkg
中,以便 pacman 认为它拥有执行搜索、更新和安装所需的一切。以下方法基于两个论坛帖子:[1][2]。
步骤如下:
- 在具有互联网访问权限的计算机上下载最新的软件包数据库,
- 将它们传输到离线计算机,
- 从离线计算机生成更新所需的软件包列表,
- 在具有互联网访问权限的计算机上下载它们及其签名,
- 将它们传输到离线计算机的 pacman 缓存中,
- 安装更新。
/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 -additionally- debug and staging packages.
使脚本可执行并运行它。您将获得多个 .db 文件。
以下步骤是将 .db 文件传输到离线 PC,使其像运行 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
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 命令来完成。
参见
- Help:Browsing#离线浏览:用于离线浏览 ArchWiki。