Ubuntu 16.04上安裝 Swift 3.0及問(wèn)題解答
我們對(duì)“讓 Swift 3.0 在更多的 Linux 系統(tǒng)上運(yùn)行”這件事充滿了熱情,因此我們開(kāi)始在 Ubuntu 16.04,即 Xenial Xerus,X86 系統(tǒng)上構(gòu)建 Swift 3.0。安裝過(guò)程十分簡(jiǎn)單,只需要添加我們的 APT 倉(cāng)庫(kù),并使用 apt-get 就可以了。二進(jìn)制文件會(huì)被安裝到 /opt/swift/swift-3.0 目錄下,所以在安裝 3.0 版本后需要更新 path 路徑。編輯手記:對(duì)于我們?yōu)槭裁词褂?/opt/swift 而不是 /usr/bin/ 目錄,可以在 swift-dev 郵件列表上的這個(gè)帖子里面找到原因。
1. 添加倉(cāng)庫(kù)密鑰
2. 添加 Xenial 倉(cāng)庫(kù)到 source.list 中
bash
echo "deb http://iachievedit-repos.s3.amazonaws.com/ xenial main" | sudo tee --append /etc/apt/sources.list
3. 執(zhí)行 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. 測(cè)試
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
開(kāi)始執(zhí)行!
bash
.build/debug/Dealer
FAQ
Q. 這些二進(jìn)制版本是蘋果官方構(gòu)建的嗎?
A. 并不是,我是在自己的個(gè)人服務(wù)器上構(gòu)建的,構(gòu)建過(guò)程請(qǐng)參考我之前的文章。
Q. 此版本的構(gòu)建包含了哪些 git 的歷史版本?
A. 可以使用 apt-cache show swift-3.0 來(lái)查看這些信息。例如:
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 (support@iachieved.it)
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
每個(gè)構(gòu)建版本的源碼樹(shù) (source tree) 都是未經(jīng)變動(dòng)的。
Q. 你在上傳這些二進(jìn)制之前有進(jìn)行過(guò)測(cè)試嗎?
A. Swift 的構(gòu)建過(guò)程就是對(duì)二進(jìn)制文件的測(cè)試,之后我會(huì)進(jìn)行一些基本的測(cè)試,并且用它來(lái)編譯我自己的應(yīng)用,但是我目前并沒(méi)有單獨(dú)全面的測(cè)試用具。
Q. 你是按一定的日程計(jì)劃來(lái)發(fā)布新的構(gòu)建版本嗎?
A. 并不是,不過(guò)我是盡量與蘋果官方的發(fā)布保持同步的。我的目的就是發(fā)布這些東西,然后使用大家能夠體驗(yàn)并開(kāi)始在 Linux 上面進(jìn)行 Swift 開(kāi)發(fā)。
Q. 安裝后的文件都在哪里?
A. 所有的文件都放在 /opt/swift/swift-3.0/usr 目錄下。
Q. 如何理解包的版本號(hào)?
A. 將版本號(hào)進(jìn)行分解,3.0-0ubuntu10+xenial1 可以理解為:
3.0 是 Swift 打包的版本號(hào)
-0ubuntu10 說(shuō)明這是 Ubuntu 的第二個(gè)包,而開(kāi)頭的 0 代表當(dāng)前的包不是基于上游的 Debain 包進(jìn)行改造的。
+xenial1 表示這個(gè)包是用于 Xenial Xerus 的。
我覺(jué)得我的理解是對(duì)的,但如果你有別的看法,給我留言
我們是如何做這些事的
關(guān)于如何在 Amazon S3 上面部署 Debain 包倉(cāng)庫(kù),我使用的這份超贊的教程。我曾經(jīng)試過(guò)配置 Launchpad PPA,但是坦白講,我對(duì)部署一個(gè)簡(jiǎn)單的包而需要進(jìn)行麻煩復(fù)雜的元數(shù)據(jù)整合感到十分厭倦。我能確定對(duì)于發(fā)行版?zhèn)}庫(kù)的部署,這些步驟是必要的,但是對(duì)于我需要部署的東西,這顯然是殺雞用牛刀了。對(duì)于那些開(kāi)發(fā) fpm 人們,他們也有一些自己的看法。
我們用來(lái)構(gòu)建代碼并且將其上傳到倉(cāng)庫(kù)的打包腳本可以在 Github 上找到。對(duì)于 Swift 3.0,記得切換到 swift-3.0 分支。
相關(guān)文章
swift 錯(cuò)誤處理do catch try try!使用詳解
這篇文章主要介紹了swift 錯(cuò)誤處理do catch try try!使用詳解的相關(guān)資料,需要的朋友可以參考下2023-03-03Swift自定義iOS中的TabBarController并為其添加動(dòng)畫(huà)
這篇文章主要介紹了Swift自定義iOS中的TabBarController并為其添加動(dòng)畫(huà)的方法,即自定義TabBarController中的的TabBar并為自定義的TabBar增加動(dòng)畫(huà)效果,需要的朋友可以參考下2016-04-04Swift用final關(guān)鍵字來(lái)防止重寫(xiě)
final關(guān)鍵字在大多數(shù)的編程語(yǔ)言中都存在,表示不允許對(duì)其修飾的內(nèi)容進(jìn)行繼承或者重新操作。下面通過(guò)實(shí)例代碼給大家介紹swift用final關(guān)鍵字來(lái)防止重寫(xiě)2016-12-12詳解Swift的switch...case語(yǔ)句中break關(guān)鍵字的用法
這篇文章主要介紹了Swift的switch...case語(yǔ)句中break關(guān)鍵字的用法,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-04-04swift 3.0中實(shí)現(xiàn)字符串截取、比較的方法示例
時(shí),為了使用現(xiàn)有的字符串生成一個(gè)新的字符串,我們可以使用截取字符串的方法實(shí)現(xiàn)。下面這篇文章主要給大家介紹了關(guān)于swift 3.0中實(shí)現(xiàn)字符串截取的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒。2017-10-10