Swift — это компилируемый, типобезопасный язык программирования, разработанный компанией Apple. Он используется для разработки приложений под iOS, macOS, а также для серверных приложений и инструментов командной строки на Linux. Swift включает встроенную поддержку конкурентности, современный менеджер пакетов (Swift Package Manager) и отладчик LLDB.
В этом руководстве я покажу три способа установки Swift на Debian:
- APT — из официальных репозиториев Debian (только Debian 13)
- Swiftly — официальный менеджер инструментариев (только Debian 12)
- Tarball — ручная установка (Debian 12 и 13)
| Метод | Версия | Обновления | Для кого |
|---|---|---|---|
| APT (Debian 13) | 6.0.x | Через apt upgrade | Debian 13 — системный, стабильный |
| Swiftly (Debian 12) | 6.2.x | swiftly update | Debian 12 — последние версии, переключение между версиями |
| Tarball (Debian 12/13) | 6.2.x | Вручную (скрипт-помощник) | Debian 12/13 — автономная установка |
⚠️ Важно: Debian 11 (Bullseye) не поддерживается ни одним из методов, так как требует glibc 2.34+ (в Debian 11 — 2.31).
Предварительные требования
Перед установкой убедитесь, что:
- У вас Debian 13, Debian 12 или Debian 11 (только через обновление до 12/13)
- Вы имеете права
sudo(администратора)
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
Что делает: sudo — выполняет команду от имени суперпользователя; whoami — показывает имя текущего пользователя.
✅ Ожидаемый вывод в терминале:
root
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.
Способ 1: Установка Swift через APT (только Debian 13)
Debian 13 включает пакет swiftlang, который содержит компилятор Swift, менеджер пакетов, отладчик LLDB и SourceKit-LSP.
Шаг 1: Обновите систему
sudo apt update && sudo apt upgrade -y
Шаг 2: Установите Swift
sudo apt install -y swiftlang
Шаг 3: Проверьте установку
swift --version
✅ Ожидаемый вывод:
Swift version 6.0.3 (swift-6.0.3-RELEASE)
Target: x86_64-pc-linux-gnu
Способ 2: Установка Swift через Swiftly (Debian 12)
Swiftly — это официальный менеджер инструментариев Swift для Linux. Он скачивает сборки с swift.org, не добавляет APT-репозитории и позволяет переключаться между версиями.
⚠️ Swiftly поддерживает только Debian 12. На Debian 13 он пока не работает.
Шаг 1: Установите зависимости
sudo apt install -y binutils gcc git pkg-config uuid-dev libcurl4-openssl-dev libedit-dev libicu-dev libncurses-dev libpython3-dev libsqlite3-dev libstdc++-12-dev libxml2-dev
Шаг 2: Скачайте Swiftly
curl -O "https://download.swift.org/swiftly/linux/swiftly-1.1.1-$(uname -m).tar.gz"
tar -zxf "swiftly-1.1.1-$(uname -m).tar.gz"
Шаг 3: Установите Swiftly
./swiftly init
Что делает: Устанавливает swiftly в ~/.local/share/swiftly/bin/, настраивает окружение и скачивает последний стабильный Swift (~960 МБ).
Шаг 4: Загрузите окружение
. "${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh"
hash -r
Шаг 5: Проверьте установку
swift --version
✅ Ожидаемый вывод:
Swift version 6.2.4 (swift-6.2.4-RELEASE)
Target: x86_64-unknown-linux-gnu
Шаг 6: Очистите временные файлы
rm -f ~/swiftly ~/swiftly-1.1.1-*.tar.gz
Способ 3: Установка Swift через Tarball (Debian 12/13)
Этот способ подходит для Debian 12 и 13, когда нужна последняя версия без Swiftly.
Шаг 1: Установите зависимости
Для Debian 13 (замените libstdc++-12-dev на libstdc++-14-dev):
sudo apt install -y binutils git gnupg2 libc6-dev libcurl4-openssl-dev libedit2 libpython3-dev libsqlite3-0 libstdc++-14-dev libxml2-dev libz3-dev pkg-config tzdata unzip zlib1g-dev
Для Debian 12:
sudo apt install -y binutils git gnupg2 libc6-dev libcurl4-openssl-dev libedit2 libpython3-dev libsqlite3-0 libstdc++-12-dev libxml2-dev libz3-dev pkg-config tzdata unzip zlib1g-dev
Шаг 2: Определите последнюю версию Swift
SWIFT_VERSION=$(curl -fsSL https://api.github.com/repos/swiftlang/swift/releases/latest \
| grep -oP '"tag_name": "swift-\K[0-9]+\.[0-9]+(\.[0-9]+)?(?=-RELEASE)')
echo "Latest Swift version: $SWIFT_VERSION"
Шаг 3: Скачайте архив и подпись
curl -fsSLO "https://download.swift.org/swift-${SWIFT_VERSION}-release/debian12/swift-${SWIFT_VERSION}-RELEASE/swift-${SWIFT_VERSION}-RELEASE-debian12.tar.gz"
curl -fsSLO "https://download.swift.org/swift-${SWIFT_VERSION}-release/debian12/swift-${SWIFT_VERSION}-RELEASE/swift-${SWIFT_VERSION}-RELEASE-debian12.tar.gz.sig"
Шаг 4: Импортируйте GPG-ключи Swift и проверьте подпись
curl -fsSL https://swift.org/keys/all-keys.asc | gpg --import -
gpg --verify "swift-${SWIFT_VERSION}-RELEASE-debian12.tar.gz.sig" "swift-${SWIFT_VERSION}-RELEASE-debian12.tar.gz"
✅ Ожидаемый вывод: Good signature from "Swift Automatic Signing Key"
Шаг 5: Распакуйте архив
sudo mkdir -p "/opt/swift-${SWIFT_VERSION}"
sudo tar xzf "swift-${SWIFT_VERSION}-RELEASE-debian12.tar.gz" -C "/opt/swift-${SWIFT_VERSION}" --strip-components=1
Шаг 6: Создайте символическую ссылку
sudo ln -sfn "/opt/swift-${SWIFT_VERSION}" /opt/swift
Шаг 7: Добавьте Swift в PATH
Вариант A (один пользователь, Bash):
echo 'export PATH=/opt/swift/usr/bin:"$PATH"' >> ~/.profile
source ~/.profile
Вариант B (системно, все пользователи):
echo 'export PATH=/opt/swift/usr/bin:"$PATH"' | sudo tee /etc/profile.d/swift.sh
sudo chmod +x /etc/profile.d/swift.sh
source /etc/profile.d/swift.sh
Шаг 8: Проверьте установку
swift --version
which swift
✅ Ожидаемый вывод: /opt/swift/usr/bin/swift и версия 6.2.x.
Шаг 9: Очистите временные файлы
rm -f "swift-${SWIFT_VERSION}-RELEASE-debian12.tar.gz" "swift-${SWIFT_VERSION}-RELEASE-debian12.tar.gz.sig"
Создание тестового проекта
Шаг 1: Создайте директорию и проект
mkdir ~/HelloSwift && cd ~/HelloSwift
swift package init --name HelloSwift --type executable
Шаг 2: Запустите проект
swift run HelloSwift
✅ Ожидаемый вывод:
Building for debugging...
Build of product 'HelloSwift' complete!
Hello, world!
Управление версиями Swift
Swiftly (Debian 12)
Установить дополнительную версию:
swiftly install 5.10
Переключиться на другую версию:
swiftly use 5.10
Список установленных версий:
swiftly list
Tarball (Debian 12/13)
Добавить ещё одну версию:
# Скачайте и распакуйте другую версию, например, 5.10
sudo mkdir -p /opt/swift-5.10.1
sudo tar xzf swift-5.10.1-RELEASE-debian12.tar.gz -C /opt/swift-5.10.1 --strip-components=1
Переключиться между версиями:
sudo ln -sfn /opt/swift-5.10.1 /opt/swift
swift --version
Вернуться к последней версии:
sudo ln -sfn "/opt/swift-${SWIFT_VERSION}" /opt/swift
Обновление Swift
Обновление APT-версии (Debian 13)
sudo apt update && sudo apt install --only-upgrade swiftlang -y
Обновление Swiftly (Debian 12)
swiftly update # обновить инструментарий
swiftly self-update # обновить сам Swiftly
Обновление Tarball (Debian 12/13)
Создайте скрипт для автоматического обновления:
cat << 'SCRIPT' > ~/update-swift.sh
#!/bin/bash
set -e
INSTALL_BASE="/opt"
SWIFT_LINK="${INSTALL_BASE}/swift"
SWIFT_BIN="${SWIFT_LINK}/usr/bin/swift"
if [ "$(id -u)" -eq 0 ]; then
echo "Run this script as a regular user, not root."
exit 1
fi
for cmd in curl gpg tar; do
if ! command -v "$cmd" >/dev/null 2>&1; then
echo "Error: $cmd is required but not installed."
exit 1
fi
done
if [ ! -L "$SWIFT_LINK" ] || [ ! -x "$SWIFT_BIN" ]; then
echo "Error: no tarball installation found at $SWIFT_LINK."
exit 1
fi
echo "Checking GitHub for the latest stable Swift release..."
TAG=$(curl -fsSL "https://api.github.com/repos/swiftlang/swift/releases/latest" \
| grep -oP '"tag_name": "\Kswift-[0-9]+\.[0-9]+(\.[0-9]+)?-RELEASE')
if [ -z "$TAG" ]; then
echo "Error: could not detect the latest Swift version."
exit 1
fi
LATEST_VERSION=$(echo "$TAG" | grep -oP '[0-9]+\.[0-9]+(\.[0-9]+)?')
CURRENT_VERSION=$("$SWIFT_BIN" --version 2>/dev/null \
| grep -oP 'Swift version \K[0-9]+\.[0-9]+(\.[0-9]+)?' \
| head -n 1)
echo "Installed: Swift $CURRENT_VERSION"
echo "Latest: Swift $LATEST_VERSION"
if [ "$CURRENT_VERSION" = "$LATEST_VERSION" ]; then
echo "Already up to date."
exit 0
fi
TARBALL="swift-${LATEST_VERSION}-RELEASE-debian12.tar.gz"
BASE_URL="https://download.swift.org/swift-${LATEST_VERSION}-release/debian12/swift-${LATEST_VERSION}-RELEASE"
echo ""
echo "Downloading Swift $LATEST_VERSION..."
curl -fSLO --progress-bar "${BASE_URL}/${TARBALL}"
curl -fsSLO "${BASE_URL}/${TARBALL}.sig"
echo "Importing Swift PGP keys and verifying signature..."
curl -fsSL https://swift.org/keys/all-keys.asc | gpg --import - 2>/dev/null
if ! gpg --verify "${TARBALL}.sig" "$TARBALL" 2>&1 | grep -q "Good signature"; then
echo "Error: PGP signature verification failed."
rm -f "$TARBALL" "${TARBALL}.sig"
exit 1
fi
echo "Signature verified."
INSTALL_DIR="${INSTALL_BASE}/swift-${LATEST_VERSION}"
echo "Extracting to $INSTALL_DIR..."
sudo mkdir -p "$INSTALL_DIR"
sudo tar xzf "$TARBALL" -C "$INSTALL_DIR" --strip-components=1
echo "Updating symlink $SWIFT_LINK -> $INSTALL_DIR"
sudo ln -sfn "$INSTALL_DIR" "$SWIFT_LINK"
rm -f "$TARBALL" "${TARBALL}.sig"
VERIFY=$("$SWIFT_BIN" --version 2>/dev/null \
| grep -oP 'Swift version \K[0-9]+\.[0-9]+(\.[0-9]+)?' \
| head -n 1)
echo ""
echo "Swift updated from $CURRENT_VERSION to $VERIFY"
echo "The previous directory /opt/swift-${CURRENT_VERSION} is still on disk."
echo "Remove it with: sudo rm -rf /opt/swift-${CURRENT_VERSION}"
SCRIPT
chmod +x ~/update-swift.sh
Запустите обновление:
~/update-swift.sh
Решение типичных проблем
8.1 Ошибка: Swiftly shows «Unsupported Linux platform» на Debian 13
Симптом: Swiftly не работает на Debian 13.
Причина: Swiftly 1.1.1 не поддерживает Debian 13.
Пошаговое решение:
Используйте APT (Debian 13) или Tarball.
8.2 Ошибка: Swift tarball не запускается на Debian 11
Симптом: swift: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.34' not found
Причина: Debian 11 использует glibc 2.31, а Swift требует 2.34+.
Пошаговое решение:
Обновитесь до Debian 12 или 13. Debian 11 не поддерживается.
8.3 Ошибка: GPG signature verification failed
Симптом: Проверка подписи не проходит.
Причина: Неправильно импортированы ключи или повреждён архив.
Пошаговое решение:
Шаг 1: Удалите старые ключи и импортируйте заново:
gpg --delete-key "Swift Automatic Signing Key"
curl -fsSL https://swift.org/keys/all-keys.asc | gpg --import -
Шаг 2: Проверьте подпись снова.
Шаг 3: Если не помогло — скачайте архив заново.
8.4 Ошибка: swift: command not found после установки
Симптом: Команда swift не найдена.
Причина: Путь к Swift не добавлен в PATH.
Пошаговое решение:
Для Tarball: выполните шаг 7 из раздела «Tarball» (добавление в PATH).
Для Swiftly: перезагрузите окружение:
. "${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh"
hash -r
8.5 Ошибка: Не хватает места на диске при установке
Симптом: Ошибка No space left on device при скачивании или распаковке.
Причина: Swift занимает около 1 ГБ.
Пошаговое решение:
Проверьте свободное место:
df -h /opt ~/.local
Если места мало — очистите диск или установите Swift в другую директорию.
Чек-лист: что проверить после установки
- [ ] Swift установлен:
swift --versionпоказывает версию - [ ] Компилятор работает:
swiftc --version - [ ] Менеджер пакетов работает:
swift package --version - [ ] Тестовый проект компилируется и запускается:
swift run HelloSwift - [ ] Для Tarball:
which swift→/opt/swift/usr/bin/swift - [ ] Для Swiftly:
swiftly listпоказывает установленные версии
Удаление Swift
Удаление APT-версии
sudo apt remove swiftlang
sudo apt autoremove
Удаление Swiftly
swiftly uninstall all
rm -rf ~/.local/share/swiftly
sed -i '/# Added by swiftly/d; /\.local\/share\/swiftly\/env\.sh/d' ~/.profile
source ~/.profile
Удаление Tarball
sudo rm -f /opt/swift
sudo rm -rf /opt/swift-*
rm -f ~/update-swift.sh
sed -i '/\/opt\/swift\/usr\/bin/d' ~/.profile ~/.bashrc 2>/dev/null
source ~/.profile
Часто задаваемые вопросы (FAQ)
Вопрос: Какой метод установки выбрать?
Ответ: Debian 13 → APT (просто). Debian 12 → Swiftly (удобно переключать версии) или Tarball (автономно).
Вопрос: Поддерживает ли Swiftly Debian 13?
Ответ: Пока нет. Используйте APT или Tarball.
Вопрос: Можно ли установить Swift на Debian 11?
Ответ: Нет. glibc слишком старый. Обновитесь до Debian 12/13.
Вопрос: Как переключиться между версиями Swift?
Ответ: Swiftly: swiftly use версия. Tarball: перенаправить символическую ссылку /opt/swift.
Вопрос: Нужно ли устанавливать Git?
Ответ: Swift Package Manager требует Git. Он уже установлен как зависимость в Swiftly и Tarball. Для APT установите отдельно: sudo apt install git.
Заключение
Теперь Swift установлен на вашем Debian. Вы можете разрабатывать серверные приложения, командные инструменты и использовать современные возможности языка.
Что дальше?
- Установите Visual Studio Code с расширением Swift
- Установите Git для контроля версий
- Изучите официальную документацию Swift