Alpine Linux安装Swfit
概述
备注
本文方案我暂时没有实践,仅仅是我整理的可能方案以供今后参考。
目前来看,苹果的Swift是针对标准发行版glibc构建的Swift toolchain,这导致无法直接在Alpine Linux上运行。现有方案都是一种曲折的替代方案:
通过
debianbootstrap来构建一个chroot环境,以便获得标准的glibc运行环境: 就像在一个 Docker 中运行 Debian镜像(tini进程管理器) 标准Linux运行 Swift 和 swift开发的程序Swift 6开始支持编译完全静态Linux二进制程序,这样就能够使用
musl作为标准C库来运行Swift程序甚至Swift开发环境( 苹果提供了 Swift SDK Bundles 实现静态二进制构建,详情参考 Getting Started with the Static Linux SDK )
方案一实际上是容器化运行,所以真不如不要使用Alpine Linux,而采用在Alpine Linux Host主机上,采用 Docker 来运行一个 Debian 容器,在容器中来运行Swift开发环境和Swift开发的程序
方案二是苹果官方提供的跨平台方法,理论上是可行的,但是首先要从源代码编译Swift开发工具链,需要先安装 Linux Static SDK 来编译Swift。此外使用静态编译的Swift开发的程序,二进制包会急剧膨胀,原本动态连接库只需要几百K到1M的二进制执行程序,会增加到100+MB以上
我感觉除非苹果官方支持musl来构建Swift,否则通过变通方法在Alpine Linux上运行Swift程序意义不大,不如直接采用 Debian 这样标准的linux发行版 Docker 容器来运行。