config.vm.provision "shell", inline: <<-SHELL ## shells SHELL
在一对 <<-SHELL 和 SHELL 中,就是我们要运行的配置脚本了,首先我们运行:
sudo apt-get --assume-yes install clang
这个命令,来安装 clang 编译器,这个是苹果公司提供的 C 编译器,是 Swift 必需的一个组件。
接下来通过 curl 命令来下载 Swift 包:
curl -O https://swift.org/builds/ubuntu1404/swift-2.2-SNAPSHOT-2015-12-01-b/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz
我们脚本中得 Swift 包下载地址来自 https://swift.org/download 这个页面,也可以根据你自己的需求配置需要下载的包。
接下来的 tar 命令,用于将下载完成的 Swift 包解压出来:
tar zxf swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz
最后,将 Swift 的 bin 目录写入环境变量,这样系统就可以找到我们要执行的命令了:
echo "export PATH=/home/vagrant/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04/usr/bin:\"${PATH}\"" >> .profile
安装配置完成后,我们输入如下命令进入 Ubuntu 的命令行:
vagrant ssh
进入命令行后,可以输入 swift --version 命令验证 Swift 是否安装成功。
如果安装成功,我们就可以收到类似这样的输出:
Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c)
开始使用 Linux 平台上的 Swift好了, Swift 安装成功了,我们可以开始创建我们的第一个程序了,按照惯例,自然是 Hello World 程序。
使用 vim helloworld.swift 命令创建一个源文件。
然后在 Vim 中输入 i 进入插入模式,在源文件中输入:
print("Hello, world")
代码写完啦,我们按下 Esc 进入操作模式,然后输入 :wq 保存退出。
源文件创建好之后,我们可以使用 swiftc 命令编译我们的代码。
swiftc helloworld.swift
编译好之后,我们使用 ls 命令查看一下当前目录的内容,除了 helloworld.swift 文件,编译器为我们生成了一个 helloworld 可执行文件。我们可以运行这个文件:
./helloworld Hello, world
运行成功了, 一个完整的程序,从代码到编译成功如此的简单,有没有很爽的感觉~,Swift 程序不需要导入很多基础的库,也不需要写任何的 main 函数,默认会将外层语句作为程序的入口,这些都融入了现代化的开发思维。
当然,Swift 能做的事情远远不止 Hello World 这么简单,Swift 开源的意义不只是能让我们在 Linux 开发和编译 Swift 程序,也不是能让我们看到 Swift 的源代码。开源的意义更多在于它提供的社区化功能,能让我们充分共享每个人的开发成果。就像是 NodeJS 社区一样,相信使用过 NodeJS 的开发者都会有这样���感觉 - 比如你的项目需要一个图片处理功能,去 NodeJS 的包管理社区 npmjs.com 上面找一下,马上就能找到相应的第三方库解决这个问题。而且这些第三方库几乎是和你的项目无缝集成的,这才是开源社区给予我们最大的力量。
使用 Swift 包管理同样,开源的 Swift 也提供了包管理平台,相信今后无论你使用 Swift 开发一款 iOS APP, 甚至是一个 Linux 服务端程序,你都能够很快的在包管理平台上找到快速解决问题的第三方库。
下面我们就来看看如何使用 Swift 的包管理系统。Swift 开源社区在 Github 上提供了一个例子说明了这个问题,首先我们在 Ubuntu 上面安装 git 命令工具:
sudo apt-get --assume-yes install git
安装成功后,将 Swift 包管理的示例从 Github 上面复制出来:
git clone https://github.com/apple/example-package-dealer.git
复制成功后,我们用 ls 命令看到这个包里面有 4 个文件:
CONTRIBUTING.md Package.swift README.md main.swift
其中 main.swift 是程序的代码文件,而 Package.swift 就是包管理文件,我们来看一下 Package.swift 的内容: