Alpine 3.13.0 版本发布说明

来自 Alpine Linux

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 需要以下之一

  1. runc v1.0.0-rc93
    1. 如果使用 Docker 的 Debian 仓库,这是 containerd.io 1.4.3-2 的一部分
    2. 如果使用 Windows 或 Mac 的 Docker Desktop,这是 Docker Desktop 3.3.0 的一部分
  2. 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。

  1. 注意并删除所有 nextcloud-* aports
  2. 安装对应的 nextcloud19-* aports
  3. 像任何常规更新一样运行 `occ upgrade`
  4. 验证一切仍然正常工作
  5. 再次删除 nextcloud19-* aports
  6. 再次安装常规的 nextcloud-* aports
  7. 再次运行步骤 3 和 4
  8. 升级现在应该已完成

作为最后一步,您应该访问您的管理员设置概览页面并运行任何缺少的数据库更新,如所示(例如 `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 支持。请改用 pciutilsgrep . /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 中跟踪。