Alpine 3.13.0 版本发布说明
aports
musl 1.2
musl 已升级到 1.2 版本。此版本更改了 32 位系统上 `time_t` 的定义。有关更多详细信息,请参阅 musl time64 版本发布说明。
time64 要求
以下重要信息适用于 x86、armv7 和 armhf(当前支持的 32 位架构)的用户,包括 64 位主机上的 32 位 Docker 容器。
所有自编译的软件包在升级后必须手动重建,即使没有遇到重定位/SONAME 错误。
musl 1.2 使用了新的 time64 兼容的系统调用。由于 runc 问题 2151,当在 Docker 或 libseccomp 版本早于其发布版本的情况下调用这些系统调用时,它们会错误地返回 EPERM 而不是 ENOSYS。因此,Alpine Linux 3.13.0 需要以下之一
- runc v1.0.0-rc93
- 如果使用 Docker 的 Debian 仓库,这是 containerd.io 1.4.3-2 的一部分
- 如果使用 Windows 或 Mac 的 Docker Desktop,这是 Docker Desktop 3.3.0 的一部分
- Docker 19.03.9(包含回溯移植的 moby commit 89fabf0)或更高版本,并且 libseccomp 2.4.2(包含回溯移植的 libseccomp commit bf747eb)或更高版本。在这种情况下,要检查您的主机 libseccomp 是否与 time64 兼容,请为 x86 容器调用 `scmp_sys_resolver -a x86 clock_gettime64`,或为 armhf 或 armv7 容器调用 `scmp_sys_resolver -a arm clock_gettime64`。如果返回 403,则表示支持 time64。如果返回 -1,则表示不支持 time64。请注意,如果 runc 版本低于 v1.0.0-rc93,则无论此命令的结果如何,Docker 仍必须至少为 19.03.9 版本。
为了在旧版本的 Docker 或 libseccomp 下运行,应下载 moby 默认 seccomp 配置文件,并在第 2 行将 `defaultAction` 更改为 `SCMP_ACT_TRACE`,然后可以将 `--seccomp-profile=default.json` 传递给 dockerd,或者将 `--security-opt=seccomp=default.json` 传递给 `docker create` 或 `docker run`。这将导致系统调用返回 ENOSYS 而不是 EPERM,从而允许容器回退到 32 位时间系统调用。在这种情况下,容器将与 2038 年之后的日期不兼容。
或者,可以传递 `--security-opt=seccomp=unconfined`,而无需 `default.json`,但请注意,这将降低主机抵御容器中恶意代码的安全性。
弃用 Berkeley DB (BDB)
Oracle 已将 BDB 的许可证更改为 AGPL-3.0,使其不适合链接到与 GPL 不兼容许可证的软件包。由于旧版本不再维护,因此 `db` 软件包现已弃用。Alpine Linux 软件包正在过渡到替代方案,或者在没有替代方案的情况下,将完全删除。
已删除对 Postfix `hash` 和 `btree` 数据库的支持。`lmdb` 是推荐的替代方案。在升级之前,必须将 `/etc/postfix/main.cf` 中使用 `hash` 和 `btree` 的所有表更改为受支持的替代方案。有关更多信息,请参阅 Postfix 查找表文档。
cyrus sasldb 现在使用 `gdbm` 而不是 `db`。升级到 Alpine Linux 3.13 后,必须从头开始创建数据库或手动迁移数据库。
从 busybox ifupdown 切换到 ifupdown-ng
默认的 ifupdown 实现已从 busybox 切换到 ifupdown-ng。ifupdown-ng 旨在与 debian ifupdown 和 busybox ifupdown 兼容,但 `/etc/network/interfaces` 的所有用户在升级之前都应阅读 ifupdown-ng 自述文件和 ifupdown-ng 管理员指南。
ifupdown-ng 具有原生的 vlan 支持,因此不再需要 `vlan` 软件包,可以卸载。`bridge` 和 `bond` 软件包仍然是必需的。
GCC 10
GCC 已升级到版本 10。GCC 10 默认设置 `-fno-common` 选项。所有 Alpine Linux 软件包都已修复,但在 Alpine Linux 上编译其他软件的用户可能需要对其代码进行更改。有关更多信息,请参阅 GCC 10 移植指南。
PHP 8.0
具有常用扩展的 PHP 8.0 现在以 `php8` 提供。PHP 7.4 (`php7`) 仍然是默认版本。
xorg-server 已移动到 community 仓库
xorg-server 和相关软件包已从 main 移动到 community 仓库。要安装它,请确保 `/etc/apk/repositories` 包含 community 仓库。
运行 `setup-xorg-base` 将在安装 xorg-server 之前自动启用 community 仓库。
nextcloud 20
Nextcloud 已更新到版本 20。由于 nextcloud 不支持从 18 直接升级到 20,因此必须临时安装 Nextcloud 19。
- 注意并删除所有 nextcloud-* aports
- 安装对应的 nextcloud19-* aports
- 像任何常规更新一样运行 `occ upgrade`
- 验证一切仍然正常工作
- 再次删除 nextcloud19-* aports
- 再次安装常规的 nextcloud-* aports
- 再次运行步骤 3 和 4
- 升级现在应该已完成
作为最后一步,您应该访问您的管理员设置概览页面并运行任何缺少的数据库更新,如所示(例如 `db:add-missing-indices db:add-missing-primary-keys db:add-missing-columns db:convert-filecache-bigint`)
spamassassin
`/etc/conf.d/spamd` 已从 `spamassassin` 移动到 `spamassassin-openrc` 软件包。
WireGuard 已上游
WireGuard 自 5.6 版本起已包含在标准 Linux 内核中,因此 `wireguard-lts` 和 `wireguard-virt` 软件包已被删除。
QEMU 软件包拆分
以前在标准 qemu 软件包中的几个功能已拆分为子软件包,包括 qemu-audio-*、qemu-block-*、qemu-hw-display-* 和 qemu-ui-*。元软件包 qemu-modules 安装所有这些。
busybox
移除的 applets
以下 applets 已被移除
- hdparm:缺少许多功能。请改用
hdparm
。 - fdformat:很少使用。请改用
util-linux
。 - readprofile:很少使用。请考虑使用
perf
或改用util-linux
。 - lspci:缺少许多功能,例如 hwdb 支持。请改用
pciutils
或grep . /sys/bus/pci/devices/*/*
。 - conspy:很少使用。
- smemcap:很少使用。
- dumpleases:很少使用。
由于缺乏兴趣,目前没有打包 conspy、smemcap 和 dumpleases 的替代方案。如果您需要这些程序,请在 Alpine GitLab 上提交 issue。
变更
以下 applets 现在支持长选项
- gzip
- install
- ipcalc
apk-tools
手册页
apk-tools 现在有了一个官方手册页:`apk-tools-docs`。如果安装了 `docs` 软件包,则将自动为所有已安装的软件包安装和更新手册页。
已知问题
LVM 启动扫描
一些用户报告了 Alpine Linux 3.13 中的一个回归问题,其中 nlplug-findfs 无法在启动时检测到 LVM PV。目前的解决方法是暂时从 Alpine Linux 3.12 降级到 Linux 5.4。此问题正在 aports issue 12325 中跟踪。