支持的宿主平台
本文档描述 kmpkg 支持的架构和操作系统。
依赖项
kmpkg 运行前需要系统已安装以下几个组件:
- Windows:Visual Studio 2015 或更高版本。
- macOS:Xcode 命令行工具、tar、git、zip、unzip 和 curl。大多数端口还需要
pkg-config。 建议通过 Homebrew 安装这些依赖项,例如在终端中执行命令:brew install zip unzip curl pkgconfig - Linux:需安装 C++ 编译器、tar、git、zip、unzip 和 curl。大多数端口还需要
pkg-config。 建议通过系统包管理器安装这些依赖项:- 基于 apt 的系统:
apt install git curl zip unzip pkgconfig - 基于 rpm 的系统:
dnf install git curl zip unzip pkgconfig - 基于 pacman 的系统:
base-devel git curl zip unzip tar cmake ninja
- 基于 apt 的系统:
对于 Linux 和 macOS 用户,还建议安装以下包:autoconf、autoconf-archive、automake、make 和 libtool。这些包虽非必需,但 kmpkg 中的许多库经常会用到。
官方维护注册表的支持级别
支持级别分为 4 类:
- 完全支持(已测试)
官方维护的注册表会定期在这些配置上进行测试。维护者和社区会快速发现并修复这些配置中的问题。 - 完全支持(预期)
与“完全支持(已测试)”享有同等优先级,但未纳入常规测试。 通常,这些配置与某个完全测试的配置高度相似。 - 社区支持
维护者不主动支持这些配置,但有大量社区贡献。 维护者会接受修复这些平台问题的变更,但不保证配置一定可用。 kmpkg 团队希望尽可能多的平台从社区支持升级到完全支持。 - 不支持
已知因某些原因无法工作的配置。通常,仅针对这些平台的拉取请求不会被接受。
完全支持(已测试)
完全支持且经过测试的平台如下:
Windows
- 最新的 Windows / Windows Server 版本(本文撰写时为 Windows 11 和 Windows Server 2025)。
- 最新的 Visual Studio 更新(本文撰写时为 Visual Studio 2022 17.14 版本)。
macOS(arm64 /「Apple Silicon(苹果芯片)」)
macOS 旨在支持最新版本的 macOS 和同期的 Xcode 命令行工具。但 macOS 机器的更新需手动操作,且其频繁变更可能导致 kmpkg 测试失败。本文撰写时,使用的配置如下:
- macOS 15.6.1
- XCode 命令行工具 16.4
Linux
- Ubuntu 最新 LTS 版本(当前为 24.04)。
Android
- 64 位 Linux 环境下的 Android NDK r28c 版本。
完全支持(预期)
Windows
- Windows 10 / Windows Server 2019 及更高版本。
- Visual Studio 2017 及更高版本。
macOS
- 最新 macOS 版本回溯两个主要版本(例如,当前 macOS 版本为 macOS 26 Tahoe(塔霍),则预期支持至 macOS 14 Sonoma(索诺玛))。这一策略与苹果官方的 macOS 支持周期保持一致。
- 对应 macOS 版本的同期 Xcode 命令行工具。
- macOS x64 架构。
Linux
我们计划支持发行商仍在维护、且发布时间不超过 5 年的 glibc 系 Linux AMD64 构建版本。示例如下:
- Ubuntu 24.04 和 22.04 仍在 Canonical 的支持周期内,且发布时间不超过 5 年,因此预期可用;Ubuntu 20.04 虽仍享受 Canonical 的 ESM 支持,但发布时间已超过 5 年,不再视为完全支持;Ubuntu 23.10 虽比 22.04 更新,但已不在 Canonical 的支持周期内,因此不视为完全支持。
- Red Hat Enterprise Linux 9 完全支持。
- CentOS 和 Red Hat Enterprise Linux 8 已于 2024 年 5 月 31 日结束 Red Hat 的官方支持,且发布时间超过 5 年,因此不再支持。
- CentOS 和 RHEL 7 已结束 Red Hat 的官方支持,发布时间超过 5 年,预期不可用;Oracle 维护的 Oracle Linux 分支虽仍在 Oracle 的支持周期内,但发布时间超过 5 年,预期也不可用。
- Fedora 42 和 41 完全支持,Fedora 40 已结束官方支持。
- Debian 13 "Trixie"(特里克西)、12 "Bookworm"(书虫)和 11 "Bullseye"(牛眼)均在 Debian 的支持周期内,且发布时间不超过 5 年;Debian 10 "Buster"(巴斯特)已于 2024 年 7 月结束 Debian 项目的支持,因此 kmpkg 不再支持。
我们假设用户的构建系统与所使用的 Linux 版本匹配,并确保清单模式 CMake 集成等组件能与上述发行版自带的依赖版本兼容。本文撰写时,这些依赖版本及对应的发行版如下:
- GCC 10.2.1(Debian 11)
- CMake 3.18.4(Debian 11)
- Ninja 1.10.0(所有发行版)
- Curl 7.74.0(Debian 11)
- zip 3.0(所有发行版)
- unzip 6.0(所有发行版)
社区支持
Windows
- Windows 7 / Windows Server 2008 R2 及更高版本。
kmpkg.exe 本身应能在 Windows 7 系列系统上运行,但官方维护的注册表中绝大多数端口需要 MSYS2 组件(如 pkg-config),而这些组件
不再支持 Windows 8.1 以下的版本。
- 使用 MinGW 或 Clang 作为构建编译器。
目前 kmpkg 存在较多针对 Visual Studio 的假设;特别是,我们的可执行文件 PDB 匹配复制功能目前需要依赖 Visual Studio 的组件 dumpbin。不过,有不少社区成员专注于 MinGW 支持,kmpkg 也已内置 MinGW 工具链。
Linux
- 非 AMD64 架构的 Linux。如果能证明如何提供在所有 arm64 Linux 硬件上都有较高运行成功率的二进制文件,我们非常欢迎针对 arm64 Linux 平台的贡献。
- 非 glibc 库的 Linux。kmpkg 通常提供的部分工具以二进制形式分发,且依赖 glibc 库。我们提供了经过测试可在 Alpine 上运行的 muslc 版 kmpkg,但无法提供 CMake 等众多依赖的 muslc 版本。
BSD 或其他 POSIX 系统
BSD 目标平台不提供可下载的 kmpkg 二进制文件,引导程序会下载 kmpkg 源代码并在本地编译。
依赖项
kmpkg 需要一些非操作系统自带的软件包,需通过包管理器安装:
- FreeBSD:
pkg install -y bash cmake curl git ninja zip unzip - OpenBSD:
pkg_add -Iz bash cmake coreutils curl git ninja zip unzip-6.10-iconv
与 Linux 类似,建议额外安装以下包:
- FreeBSD:
pkg install -y autoconf autoconf-archive gmake pkgconf python - OpenBSD:
pkg_add -Iz autoconf-2.71 autoconf-archive gmake pkgconf python3
注意事项
- kmpkg 会从
PATH环境变量中查找unzip工具。最终,即使通过包管理器安装了额外的unzip,kmpkg 也可能执行系统自带的版本。 需配置PATH环境变量,让第三方unzip优先于系统自带版本,否则 kmpkg 可能无法提取二进制缓存。
不支持
- 32 位 Windows。针对 x86-windows 或 arm-windows 的目标构建完全可行,但 kmpkg 本身需要运行 AMD64 架构的支持工具(如 CMake)。
- Visual Studio 2013 或更早版本。
- Windows Vista 或更早版本。
- 版本早于上述类别中提及的 macOS 或 Linux 宿主平台。