我們對“讓 Swift 3.0 在更多的 Linux 系統上運行”這件事充滿了熱情,因此我們開始在 Ubuntu 16.04,即 Xenial Xerus,X86 系統上構建 Swift 3.0。安裝過程十分簡單,只需要添加我們的 APT 倉庫,并使用 apt-get 就可以了。二進制文件會被安裝到 /opt/swift/swift-3.0 目錄下,所以在安裝 3.0 版本后需要更新 path 路徑。編輯手記:對于我們為什么使用 /opt/swift 而不是 /usr/bin/ 目錄,可以在 swift-dev 郵件列表上的這個帖子里面找到原因。
1. 添加倉庫密鑰
2. 添加 Xenial 倉庫到 source.list 中
bash
echo "deb
http://iachievedit-repos.s3.amazonaws.com/ xenial main" | sudo tee --append /etc/apt/sources.list
3. 執行 apt-get update
bash
sudo apt-get update
4. 安裝 swift-3.0!
bash
sudo apt-get install swift-3.0
5. 更新 PATH 路徑!
bash
export PATH=/opt/swift/swift-3.0/usr/bin:$PATH
6. 測試
bash
git clone
https://github.com/apple/example-package-dealer cd example-packager-dealer
swift build
Compiling Swift Module 'FisherYates' (1 sources)
Linking Library: .build/debug/FisherYates.a
Compiling Swift Module 'PlayingCard' (3 sources)
Linking Library: .build/debug/PlayingCard.a
Compiling Swift Module 'DeckOfPlayingCards' (1 sources)
Linking Library: .build/debug/DeckOfPlayingCards.a
Compiling Swift Module 'Dealer' (1 sources)
Linking Executable: .build/debug/Dealer
開始執行!
bash
.build/debug/Dealer
FAQ
Q. 這些二進制版本是蘋果官方構建的嗎?
A. 并不是,我是在自己的個人服務器上構建的,構建過程請參考我之前的文章。
Q. 此版本的構建包含了哪些 git 的歷史版本?
A. 可以使用 apt-cache show swift-3.0 來查看這些信息。例如:
bash
# apt-cache show swift-3.0
Package: swift-3.0
Conflicts: swift-2.2
Version: 1:3.0-0ubuntu10+xenial1
Architecture: amd64
Installed-Size: 370463
Maintainer: iachievedit (
[email protected])
Depends: clang (>= 3.6), libicu-dev
Homepage:
http://dev.iachieved.it/iachievedit/swift Priority: optional
Section: development
Filename: pool/main/s/swift-3.0/swift-3.0_3.0-0ubuntu10+xenial1_amd64.deb
Size: 72513864
SHA256: b1bf548f353466ea72696089a8b666956a2603edb467eb0517e858eb1ba86511
SHA1: 5dd02b14d21f2e821040de3bb1052561653fcfcd
MD5sum: f2c3d3b9517a303cc86558b6c560a8d6
Description: Open Source Swift
This is a packaged version of Open Source Swift 3.0 built from
the following git revisions of the Apple Github repositories:
Clang: 460d629e85
LLVM: 8d0086ac3e
Swift: 1abe85ab41
Foundation: 4c15543f82
Description-md5: a6b1dd247c7584b61692a101d9d0e5fa
每個構建版本的源碼樹 (source tree) 都是未經變動的。
Q. 你在上傳這些二進制之前有進行過測試嗎?
A. Swift 的構建過程就是對二進制文件的測試,之后我會進行一些基本的測試,并且用它來編譯我自己的應用,但是我目前并沒有單獨全面的測試用具。
Q. 你是按一定的日程計劃來發布新的構建版本嗎?
A. 并不是,不過我是盡量與蘋果官方的發布保持同步的。我的目的就是發布這些東西,然后使用大家能夠體驗并開始在 Linux 上面進行 Swift 開發。
Q. 安裝后的文件都在哪里?
A. 所有的文件都放在 /opt/swift/swift-3.0/usr 目錄下。
Q. 如何理解包的版本號?
A. 將版本號進行分解,3.0-0ubuntu10+xenial1 可以理解為:
3.0 是 Swift 打包的版本號
-0ubuntu10 說明這是 Ubuntu 的第二個包,而開頭的 0 代表當前的包不是基于上游的 Debain 包進行改造的。
+xenial1 表示這個包是用于 Xenial Xerus 的。
我覺得我的理解是對的,但如果你有別的看法,給我留言
我們是如何做這些事的
關于如何在 Amazon S3 上面部署 Debain 包倉庫,我使用的這份超贊的教程。我曾經試過配置 Launchpad PPA,但是坦白講,我對部署一個簡單的包而需要進行麻煩復雜的元數據整合感到十分厭倦。我能確定對于發行版倉庫的部署,這些步驟是必要的,但是對于我需要部署的東西,這顯然是殺雞用牛刀了。對于那些開發 fpm 人們,他們也有一些自己的看法。
我們用來構建代碼并且將其上傳到倉庫的打包腳本可以在 Github 上找到。對于 Swift 3.0,記得切換到 swift-3.0 分支。
注:相關教程知識閱讀請移步到swift教程頻道。