Обо мне
2 заметки с тегом

swift

Установка Swift на Ubuntu — подводные камни

Руководство по установке Swift на Ubuntu, которое поможет вам обойти стороной неприятные нюансы.

Поскольку разработчики Swift официально поддерживает LTS-версии Ubuntu— большой сложности с установкой нет, но есть пара нюансов.

Первая распространенная ошибка — распаковка архива в корневую директорию. Способ рабочий, но, если потребуется начисто удалить SDK, одной строкой в консоли не обойтись. Кроме того, данный способ установки мешает переключаться между несколькими версиями Toolchain, в чем у вас, как разработчика, может возникнуть потребность.

Посмотрим на разумный способ установки Swift на ваш компьютер с ОС Ubuntu.

Первым делом нужно определиться с директорией, в которой вам удобно держать подкаталоги с несколькими версиями Swift. Для меня наиболее удобным вариантом является /opt, но вы вольны выбрать другой путь.

Забегая вперед, скажу, что если планируете работать с приложениями, написанными на Swift, лучше
устанавливать Toolchain за пределами домашней директории пользователя. О причине читайте далее в статье.

Итак, следуя руководству официального сайта устанавливаем необходимые зависимости:

$ sudo apt update

# Возможны конфликты LLDB 6 со Swift Toolchain,
# удаляем lldb-6.0, если установлен.
$ sudo apt remove lldb-6.0 
$ sudo apt install -y clang libicu-dev wget gpg

Получаем публичный ключ для верификации дистрибутива:

$ wget -q -O - https://swift.org/keys/all-keys.asc | \
  gpg --import -

Страница загрузки Swift (https://swift.org/download/#releases).

Проверяем целостность и источник архива:

$ cd ~/Downloads
$ gpg --verify swift-5.2.1-RELEASE-ubuntu18.04.tar.gz.sig

gpg: assuming signed data in 'swift-5.2.1-RELEASE-ubuntu18.04.tar.gz'
gpg: Signature made Пн 30 мар 2020 23:19:13 MSK
gpg:                using RSA key 925CC1CCED3D1561
gpg: Good signature from "Swift 5.x Release Signing Key <swift-infrastructure@swift.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: A62A E125 BBBF BB96 A6E0  42EC 925C C1CC ED3D 1561

Полученный с официального сайта дистрибутив мы распакуем в директорию /opt:

$ cd /opt
$ sudo tar -xzf swift-5.2.1-RELEASE-ubuntu18.04.tar.gz

# Создаем символическую ссылку на текущую версию Toolchain:
$ sudo ln -s swift-5.2.1-RELEASE-ubuntu18.04 swift

В итоге мы должны получить следующее содержимое в /opt:

lrwxrwxrwx  1 root root   31 апр 13 21:40 swift -> swift-5.2.1-RELEASE-ubuntu18.04
drwxr-xr-x  3 root root 4096 апр 13 21:38 swift-5.2.1-RELEASE-ubuntu18.04

Как вы уже догадались, мы сможем перебрасывать символическую ссылку /opt/swift между несколькими релизами Toolchain.

Осталось всего два шага и мы у цели. Добавляем путь /opt/swift/usr/bin в PATH, если вы работаете с bash:

$ echo 'PATH="$PATH:/opt/swift/usr/bin"' >> ~/.profile

Чтобы обеспечить работу приложений, написанных на Swift, пропишем путь к Swift Runtime в ldconfig:

$ sudo bash -c "echo '/opt/swift/usr/lib' > /etc/ld.so.conf.d/swift.conf"
$ sudo ldconfig

# Проверим:
$ ldconfig -p | grep swift
	libswiftDemangle.so (libc6,x86-64) => /opt/swift/usr/lib/libswiftDemangle.so
	libsourcekitdInProc.so (libc6,x86-64) => /opt/swift/usr/lib/libsourcekitdInProc.so
	liblldb.so.7svn (libc6,x86-64) => /opt/swift/usr/lib/liblldb.so.7svn
	liblldb.so (libc6,x86-64) => /opt/swift/usr/lib/liblldb.so
	libdispatch.so (libc6,x86-64) => /opt/swift/usr/lib/libdispatch.so
	libIndexStore.so.7svn (libc6,x86-64) => /opt/swift/usr/lib/libIndexStore.so.7svn
	libIndexStore.so (libc6,x86-64) => /opt/swift/usr/lib/libIndexStore.so
	libBlocksRuntime.so (libc6,x86-64) => /opt/swift/usr/lib/libBlocksRuntime.so

$ swift --version
Swift version 5.2.1 (swift-5.2.1-RELEASE)
Target: x86_64-unknown-linux-gnu

Именно для обеспечения доступности Swift Runtime в самом начале я рекомендовал устанавливать Swift за пределами домашней директории пользователя.

На этом все, хорошего кода!

оригинал статьи https://engineering.lit.group/swift-installation-on-ubuntu/

Как собрать Swift 5 на Ubuntu 19.04

Привет всем эту статью про сборку Swift 5 на Ubuntu 19.04 написал мой друг, ссылка на его
блог

Разработчики Swift обещают совместимость с последней версией Ubuntu, однако бинарные пакеты на сайте swift.org можно скачать только для LTS-версий ОС. В этой статье мы пройдёмся по сборке Swift 5.0.2 под Ubuntu 19.04 из исходного кода.

Поехали
Устанавливаем зависимости

sudo apt update && \
sudo apt install -y \
    git cmake ninja-build clang python \
    uuid-dev libicu-dev icu-devtools \
    libedit-dev libxml2-dev libsqlite3-dev \
    swig libpython-dev libncurses5-dev \
    pkg-config libcurl4-openssl-dev \
    systemtap-sdt-dev tzdata rsync

Получаем исходники
Сперва создаем пустую директорию, в нее будут склонированы несколько репозиториев, необходимых для сборки Swift Toolchain:

mkdir swift-source
cd swift-source

Теперь, находясь в каталоге swift-source, клонируем основной репозиторий:

git clone https://github.com/apple/swift.git

Нас интересует релиз 5.0.2, так что переключимся на тег swift-5.0.2-RELEASE:

cd swift
git checkout tags/swift-5.0.2-RELEASE
cd ..

Обратите внимание, что мы снова вернулись в директорию swift-source! Далее команды будут выполняться в
контексте данной директории.

Получаем репозитории с зависимостями и переключаем их на нужную версию:

./swift/utils/update-checkout --clone
./swift/utils/update-checkout --tag swift-5.0.2-RELEASE
./
../
clang/
clang-tools-extra/
cmark/
compiler-rt/
icu/
libcxx/
llbuild/
lldb/
llvm/
ninja/
swift/
swift-corelibs-foundation/
swift-corelibs-libdispatch/
swift-corelibs-xctest/
swift-integration-tests/
swift-stress-tester/
swift-syntax/
swift-xcode-playground-support/
swiftpm/

Содержимое swift-source после команды ./swift/utils/update-checkout —clone

Собираем и тестируем

./swift/utils/build-toolchain $BUNDLE_PREFIX --test

Вместо $BUNDLE_PREFIX подставьте любой идентификатор сборки, например com.example или обратную запись домена вашей компании

Пока PC работает, можно сварить кофе ☕️...

Готово!
В директории swift-source вы найдёте архив вида swift-LOCAL-YYYY-MM-DD-a-osx.tar.gz, содержащий Swift Toolchain (не обращайте внимание на суффикс «osx» в названии, мелкий недочёт сборочного скрипта).

Всем хорошего кода!

 Нет комментариев    120   2019   apple   it   linux   manual   osx   pc   swift   ubuntu   инструкция