本地 APK 缓存

来自 Alpine Linux

Alpine Package Keeper(APK) 可以将已安装软件包的缓存保存在本地磁盘上。

无盘安装中,由于这些软件包在启动期间可用,因此可以在启动时从本地介质自动(重新)安装软件包到 RAM 中,而无需网络连接,甚至在建立网络连接之前即可进行安装。缓存可以存储在任何可写介质上,也可以存储在与 本地备份实用程序 lbu 的 .apkovl 文件相同的位置。

HDD 或 sys 模式 安装不需要 apk 缓存来维护其状态,但它仍然允许通过网络提供软件包,例如供其他本地计算机安装。

启用本地缓存

执行脚本 setup-apkcache 将协助启用本地缓存。该脚本创建一个名为 /etc/apk/cache 的符号链接,指向缓存目录。

setup-apkcache

也可以手动启用缓存,方法是创建一个缓存目录,然后将其符号链接到 /etc/apk/cache

mkdir -p /var/cache/apk ln -s /var/cache/apk /etc/apk/cache

无盘安装中,为了使缓存目录所在的磁盘在启动时自动挂载,请在缓存目录内创建一个空文件 .boot_repository

在重启时自动清理缓存

要自动尝试在重启时验证您的缓存,您可以将上述命令添加到 /etc/local.d/*.stop 文件中

/etc/local.d/cache.stop 的内容

#!/bin/sh # verify the local cache on shutdown apk cache -v sync # We should always return 0 return 0
提示:通常,您需要重启的唯一时间是当事情变得非常糟糕时;因此,这是一种“尽力而为”的方式来弥补忘记同步缓存的情况; 最好在添加或升级软件包后立即运行 sync

tmpfs 卷上的本地缓存

在某些情况下,将缓存驻留在 tmpfs 上可能很有用,例如,如果您只希望它在系统启动期间存在。

注意:apk 被编码为忽略 tmpfs 缓存,这在大多数情况下是正确的行为。如果安装大量软件包,使用 tmpfs 作为软件包缓存可能会消耗大量系统内存,可能导致系统崩溃。您可以通过将缓存大小限制为较小的数量(在下面的示例中为 128M)来限制这种情况。

要做到这一点,您需要创建一个镜像,您的缓存可以存在于其中。我们通过创建一个镜像文件,使用 ext2 格式化它,并将其挂载到 /etc/apk/cache 来完成此操作。

apk add e2fsprogs dd if=/dev/zero of=/apkcache.img bs=1M count=128 mkfs.ext2 -F /apkcache.img mkdir -p /etc/apk/cache mount -t ext2 /apkcache.img /etc/apk/cache apk update

和往常一样,如果您想将当前安装的软件包下载到缓存中,请使用 apk cache sync

参见