Ubuntu에 Swift 설치하기!

우분투에 Swift를 깔아보자.

우선 Swift 홈페이지에 접속해서 해당 프로세스를 그대로 사용하는 방법이 있지만, 편한 설치를 위해 마련된 Swiftenv를 이용해 설치할거다.

해당 GitHub Repository에 기재된 Installation 문서를 따라 설치를 진행하려 한다.

Swiftenv 설치하기

문서에 업데이트 되어있는 스크립트를 복사하여 터미널에 붙여넣는다. 필자의 경우는 다음과 같았다.

$ git clone https://github.com/kylef/swiftenv.git ~/.swiftenv

다 받았으면, 환경변수를 .bashrc에 등록한다.

$ echo 'export SWIFTENV_ROOT="$HOME/.swiftenv"' >> ~/.bashrc
$ echo 'export PATH="$SWIFTENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(swiftenv init -)"' >> ~/.bashrc
$ source ~/.bashrc # 적용한 환경변수를 사용하기 시작한다. 다음 Bash 실행부턴 다음 적용.
# 또는 터미널을 재시작해도 된다.사이트에는 그렇게 게재되어 있음.

Swift 설치하기

문서에 따르면, swiftenv install 명령어를 통해 설치가 가능하다고 나와있다. Swift 홈페이지에서 릴리즈 된 최신버전을 기억해두면 좋다.

필자의 경우 4.0.3 버전이 최신 릴리즈였다.

$ swiftenv install 4.0.3
Downloading https://swift.org/builds/swift-4.0.3-release/ubuntu1604/swift-4.0.3-RELEASE/swift-4.0.3-RELEASE-ubuntu16.04.tar.gz
/tmp/swiftenv-4.0.3-cenox ~
** Resuming transfer from byte position 138579968
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 27.3M  100 27.3M    0     0  2113k      0  0:00:13  0:00:13 --:--:-- 4515k
~
4.0.3 has been installed.

설치가 완료되면, swiftenv versions를 입력해 설치된 Swift를 확인한다.

$ swiftenv versions
* 4.0.3 (set by /home/cenox/.swiftenv/version)

Swift를 실행하여 작동하는지 확인한다.

$ swift
Welcome to Swift version 4.0.3 (swift-4.0.3-RELEASE). Type :help for assistance.
  1> print("Hello swift!")
Hello swift!

Swift의 설치가 완료되었다.


설치 이후 error: could not build C module ‘CoreFoundation’ 오류를 겪을 때

Clang header 들이 Swift에 연결되지 않아서 그렇다.

swift -I ~/.swiftenv/versions/4.0.3/usr/lib/swift/clang/include/ 해당 명령어로 Swift를 실행하게되면 작동한다.

뭔가 알아서 Import 시킬 수 있는 방법이 있는지 찾아봐야겠다. 임시방편으로는

$ cd ~/
$ echo "swift -I ~/.swiftenv/versions/4.0.3/usr/lib/swift/clang/include/" > launchSwift.sh
$ chmod a+x launchSwift.sh

$ ./launchSwift.sh #다음부턴 얘만쳐도 실행됨.

로 하여금 실행하게 만들었다.

설치 중 Building Swift failed 오류가 날 경우

(18년 4월 27일 업데이트)

Swift 4.1 설치 중 발생한 문제인데, Swift 버전에 따른 문제는 아닌 듯.

Check out the logfile for more information: /home/cenox/.swiftenv/tmp/swiftenv-build-4.1/swiftenv-build.20180427035736.8117.log
You can inspect or delete the working tree at: /home/cenox/.swiftenv/tmp/swiftenv-build-4.1

로그를 살펴보니,

$ cat /home/cenox/.swiftenv/tmp/swiftenv-build-4.1/swiftenv-build.20180427035736.8117.log
./utils/build-script: fatal error: can't find clang (please install clang-3.5 or a later version)

필요한 dependency를 설치하지 않아 발생한 문제인 것 같아서 clang을 설치해보았으나, cmake 오류가 발생했다. cmake도 설치했는데 이번엔 ninja와 관련된 오류가 떴다.

그래서 검색했더니, ninja 오류와 관련된 Issue를 Github에서 찾았다. 해당 포스트에 있는 애들을 전부 설치해봤다.

$ sudo apt-get install git cmake ninja-build clang python uuid-dev libicu-dev icu-devtools libbsd-dev libedit-dev libxml2-dev libsqlite3-dev swig libpython-dev libncurses5-dev pkg-config

다시 설치를 진행해본다.

$ swiftenv install 4.1
Found swift, skipping download
Found llvm, skipping download
Found clang, skipping download
Found lldb, skipping download
Found cmark, skipping download
Found llbuild, skipping download
Found swiftpm, skipping download
Found compiler-rt, skipping download
Found swift-corelibs-xctest, skipping download
Found swift-corelibs-foundation, skipping download
Found swift-corelibs-libdispatch, skipping download
Building Swift
This may take a very long time...
4.1 has been installed.

음 설치는 됐는데, 18.04에선 아직 안돌아가보다.

$ swift
<unknown>:0: error: unable to load standard library for target 'x86_64-unknown-linux-gnu'