⚠️ Важно: OpenJDK 17 больше не поддерживается в Debian 13. Для Debian 13 рекомендуется использовать более новые версии Java или через ручное добавление репозитория Eclipse Temurin (Второй способ)
OpenJDK 17 — это LTS-версия Java, которая широко используется в enterprise-разработке. На ней работают Spring Boot 3.x, Jakarta EE 10, Jenkins, Gradle и многие другие инструменты. Даже после выхода Java 21 и 25, Java 17 остаётся практичным LTS-базисом для существующих приложений.
В этом руководстве я покажу два способа установки OpenJDK 17 на Debian:
- Из официальных репозиториев Debian (для Debian 12 и 11)
- Из репозитория Eclipse Temurin (Adoptium) (для Debian 12, 11)
| Метод | Источник | Версия | Обновления | Для кого |
|---|---|---|---|---|
| Debian APT | Репозитории Debian | 17.0.x | Через apt upgrade | Debian 12 и 11 |
| Eclipse Temurin | Adoptium репозиторий | 17.0.x | Через apt upgrade | Debian 13 (12/11) |
Предварительные требования
Перед установкой убедитесь, что:
- Вы имеете права
sudo(администратора) - Ваша версия ОС Debian 12, 11
- Для ОС Debian 13 — подойдёт второй способ.
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo apt update
Что делает: sudo apt update — пытается обновить список пакетов с правами суперпользователя.
Зачем: Это не только проверяет наличие прав sudo, но и заодно обновляет список пакетов. Если у пользователя нет прав, команда сразу выдаст ошибку, что нагляднее.
✅ Если обновление прошло успешно — у вас есть права sudo (или вы уже root), можете продолжать.
❌ Если видите ошибку user is not in the sudoers file или may not run sudo — сначала пройдите наше руководство по настройке sudo. Без этого дальнейшие шаги не сработают.
Способ 1: Установка OpenJDK 17 из репозиториев Debian (Debian 12 и 11)
Этот метод работает на Debian 12 (Bookworm) и Debian 11 (Bullseye). Debian 13 не поддерживает этот метод.
Шаг 1: Обновите систему
sudo apt update
sudo apt upgrade
Что делает: Обновляет список пакетов и устанавливает последние обновления.
💡 Если вы уверены в своих действиях и хотите автоматически подтверждать все запросы, можно добавить флаг -y: sudo apt upgrade -y.
Шаг 2: Найдите доступные пакеты OpenJDK 17
apt-cache search '^openjdk-17-'
Что делает: Показывает все пакеты, начинающиеся с openjdk-17-.
Зачем: Чтобы увидеть, какие варианты установки доступны (JDK, JRE, headless и т.д.).
✅ Ожидаемый вывод: Список пакетов (jdk, jre, headless, demo, doc).
Шаг 3: Выберите подходящий пакет
| Пакет | Для чего |
|---|---|
openjdk-17-jdk | Полная разработка (компилятор + runtime) |
openjdk-17-jre | Только запуск приложений (без компилятора) |
openjdk-17-jdk-headless | Разработка на сервере без GUI |
openjdk-17-jre-headless | Запуск на сервере без GUI |
Шаг 4: Установите JDK (или JRE)
sudo apt install openjdk-17-jdk
💡 Если вы уверены в своих действиях и хотите автоматически подтверждать все запросы, можно добавить флаг -y.
Шаг 5: Проверьте установку
java --version
✅ Ожидаемый вывод (Debian 12):
openjdk 17.0.19 2026-04-21
OpenJDK Runtime Environment (build 17.0.19+10-1-deb12u2-Debian)
OpenJDK 64-Bit Server VM (build 17.0.19+10-1-deb12u2-Debian, mixed mode, sharing)
Если установили JDK, проверьте компилятор:
javac --version
✅ Ожидаемый вывод: javac 17.0.19
Способ 2: Установка OpenJDK 17 из репозитория Eclipse Temurin (Debian 13, 12, 11)
Этот метод работает на всех версиях Debian (12, 11) и даёт одинаковую сборку OpenJDK.
Шаг 1: Установите зависимости
sudo apt install ca-certificates curl gpg
💡 Если вы уверены в своих действиях и хотите автоматически подтверждать все запросы, можно добавить флаг -y.
Шаг 2: Добавьте GPG-ключ Adoptium
curl -fsSL https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo gpg --dearmor --yes -o /usr/share/keyrings/adoptium.gpg
Что делает: Скачивает GPG-ключ и сохраняет его в системную директорию.
Шаг 3: Добавьте репозиторий Adoptium
. /etc/os-release
ARCH=$(dpkg --print-architecture)
cat > /etc/apt/sources.list.d/adoptium.sources <<EOF
Types: deb
URIs: https://packages.adoptium.net/artifactory/deb
Suites: $VERSION_CODENAME
Components: main
Architectures: $ARCH
Signed-By: /usr/share/keyrings/adoptium.gpg
EOF
Что делает: Создаёт файл репозитория в формате .sources.
Зачем: Этот формат используется в современных версиях Debian и более надёжен, чем устаревший .list.
Шаг 4: Обновите список пакетов
sudo apt update
Шаг 5: Проверьте, что пакет temurin-17-jdk виден
apt-cache policy temurin-17-jdk
✅ Ожидаемый вывод: в блоке Candidate будет указана версия, а в строке From должно быть https://packages.adoptium.net/artifactory/deb. Это подтвердит, что репозиторий подключён верно. Если всё впорядке, переходите на шаг 6. Если вывода нет читаем ниже!
⚠️ Если вывода нет (Вывод пустой) — вероятнее всего репозиторий не был добавлен и это нужно сделать вручную.
Создайте файл вручную через nano:
sudo nano /etc/apt/sources.list.d/adoptium.sources
В открывшийся файл добавьте следующий код:
Types: deb
URIs: https://packages.adoptium.net/artifactory/deb
Suites: trixie
Components: main
Architectures: amd64
Signed-By: /usr/share/keyrings/adoptium.gpg
Сохраните файл:
Нажмите Ctrl+O
Нажмите Enter
Нажмите Ctrl+X для выхода
Обновите список пакетов:
sudo apt update
Проверьте доступность пакета:
apt-cache policy temurin-17-jdk
После этого ОС должна увидеть пакет!
⚠️ Пояснение!
💡 В чём разница между JRE и JDK?
temurin-17-jre— только среда выполнения. Этого достаточно, чтобы запускать готовые Java-приложения (например, некоторые серверные сервисы или игры).temurin-17-jdk— полный комплект для разработки. Помимо JRE, сюда входят компилятор (javac) и другие инструменты, нужные для написания и сборки Java-кода. Если вы только запускаете программы — берите JRE, если пишете код — JDK.
Шаг 6: Установите Temurin 17 JDK
sudo apt install temurin-17-jdk
💡 Если вы уверены в своих действиях и хотите автоматически подтверждать все запросы, можно добавить флаг -y.
Для JRE (только запуск):
sudo apt install temurin-17-jre
Шаг 7: Проверьте установку
java --version
✅ Ожидаемый вывод:
openjdk 17.0.19 2026-04-21
OpenJDK Runtime Environment Temurin-17.0.19+10 (build 17.0.19+10)
OpenJDK 64-Bit Server VM Temurin-17.0.19+10 (build 17.0.19+10, mixed mode, sharing)
javac --version
✅ Ожидаемый вывод: javac 17.0.19
(Дополнительно!) Настройте JAVA_HOME:
JAVA_HOME_PATH=$(dirname "$(dirname "$(readlink -f "$(command -v java)")")")
echo "export JAVA_HOME=${JAVA_HOME_PATH}" >> ~/.bashrc
source ~/.bashrc
Проверьте переменные окружения:
echo $JAVA_HOME
Протестируйте установку:
Создайте тестовый файл:
cat > HelloJava.java <<EOF
public class HelloJava {
public static void main(String[] args) {
System.out.println("Java 17 работает!");
}
}
EOF
Скомпилируйте и запустите файл:
javac HelloJava.java
java HelloJava
Теперь у вас должна появиться надпись «Java 17 работает!» в терминале.
Если всё работает корректно, значит:
- Репозиторий настроен правильно
- Пакет установлен успешно
- Переменные окружения настроены
- Java готова к использованию
Управление несколькими версиями Java
Если у вас установлено несколько версий Java (например, 11, 17, 21, 25), вы можете переключаться между ними.
Переключение между версиями (java)
sudo update-alternatives --config java
Что делает: Показывает список установленных версий Java. Введите номер нужной и нажмите Enter.
Зачем: update-alternatives управляет симлинками /usr/bin/java и /usr/bin/javac, которые используются системой по умолчанию.
Переключение между версиями компилятора (javac)
sudo update-alternatives --config javac
Обновление OpenJDK 17
Обновление Debian APT-версии
sudo apt update && sudo apt install --only-upgrade openjdk-17-jdk
Обновление Temurin-версии
sudo apt update && sudo apt install --only-upgrade temurin-17-jdk
💡 --only-upgrade обновляет только уже установленные пакеты и не будет ставить новый, если JDK ещё не установлен.
💡 Если вы уверены в своих действиях и хотите автоматически подтверждать все запросы, можно добавить флаг -y.
Решение типичных проблем
8.1 Ошибка: Unable to locate package openjdk-17-jdk на Debian 13
Симптом: sudo apt install openjdk-17-jdk не находит пакет.
Причина: В Debian 13 (Trixie) в официальных репозиториях обычно присутствует одна основная версия JDK. OpenJDK 17 может отсутствовать.
Пошаговое решение:
Используйте метод 2 (Eclipse Temurin).
8.2 Ошибка: Неправильная версия Java активна
Симптом: java --version показывает не Java 17.
Причина: Установлена другая версия Java с более высоким приоритетом.
Пошаговое решение:
Переключитесь на нужную версию через update-alternatives:
sudo update-alternatives --config java
sudo update-alternatives --config javac
8.3 Ошибка: Signed-By conflict с extrepo
Симптом: sudo apt update выдаёт ошибку конфликта Signed-By.
Причина: Раньше вы использовали extrepo для Temurin, а теперь добавляете ручной репозиторий.
Пошаговое решение:
Шаг 1: Удалите старые файлы extrepo (только если вы устанавливали через этот инструмент):
sudo extrepo disable temurin
sudo rm -f /etc/apt/sources.list.d/extrepo_temurin.sources
sudo rm -f /var/lib/extrepo/keys/temurin.asc
Шаг 2: Обновите список пакетов:
sudo apt update
💡 extrepo — это отдельный инструмент, который не установлен по умолчанию в Debian. Этот блок предназначен только для тех, кто ранее использовал extrepo для установки Temurin.
8.4 Ошибка: JAVA_HOME указывает на неверный путь
Симптом: echo $JAVA_HOME показывает старый путь (например, к Java 11 или 25).
Причина: JAVA_HOME не обновился после смены версии.
Пошаговое решение:
Заново определите путь и обновите переменную:
JAVA_HOME_PATH=$(dirname "$(dirname "$(readlink -f "$(command -v java)")")")
sed -i '/^export JAVA_HOME=/d' ~/.bashrc
echo "export JAVA_HOME=${JAVA_HOME_PATH}" >> ~/.bashrc
source ~/.bashrc
8.5 Ошибка: Компилятор использует другую версию
Симптом: java --version показывает 17, а javac --version показывает 11.
Причина: update-alternatives для javac не переключён.
Пошаговое решение:
Переключите компилятор:
sudo update-alternatives --config javac
Выберите нужную версию (Java 17).
Чек-лист: что проверить после установки
- [ ] Java установлена:
java --version→openjdk 17.0.xилиTemurin-17.0.x - [ ] Компилятор установлен (если нужен JDK):
javac --version→javac 17.0.x - [ ]
JAVA_HOMEнастроен:echo $JAVA_HOME→ путь к JDK 17 - [ ]
update-alternativesработает:sudo update-alternatives --config javaпоказывает версию 17 - [ ] Тестовая программа компилируется и запускается:
javacиjavaработают
Удаление OpenJDK 17
Удаление Debian APT-версии
sudo apt remove openjdk-17-jdk openjdk-17-jre openjdk-17-jdk-headless openjdk-17-jre-headless
sudo apt autoremove
💡 Если вы уверены в своих действиях и хотите автоматически подтверждать все запросы, можно добавить флаг -y.
Удаление Temurin-версии
sudo apt remove temurin-17-jdk temurin-17-jre
sudo apt autoremove
Удаление репозитория Adoptium (если больше не нужен)
# Удаление файлов репозитория и ключа (безопасно, если файлы отсутствуют)
sudo rm -f /etc/apt/sources.list.d/adoptium.sources /usr/share/keyrings/adoptium.gpg 2>/dev/null
# Обновление списка пакетов
sudo apt update
Что делает: Флаг -f (force) разрешает удаление даже если файла нет (без ошибки). Перенаправление 2>/dev/null скрывает сообщения «No such file or directory», чтобы вывод был чистым.
Часто задаваемые вопросы (FAQ)
Вопрос: Почему OpenJDK 17 не поддерживается в Debian 13?
Ответ: Debian 13 использует более новые версии Java в своих официальных репозиториях. Для установки Java 17 рекомендуется использовать репозиторий Eclipse Temurin (Второй способ руководства)
Вопрос: Нужно ли устанавливать OpenJDK 17 на Debian 13?
Ответ: Да, если ваше приложение требует именно Java 17. Используйте метод Temurin.
Вопрос: Temurin — это та же Java, что и OpenJDK?
Ответ: Да, Temurin — это сборка OpenJDK, сертифицированная Java TCK.
Вопрос: Как проверить, какая Java активна?
Ответ: java --version покажет версию. update-alternatives --config java покажет все установленные.
Вопрос: Нужно ли удалять старую Java перед установкой новой?
Ответ: Нет, можно установить несколько версий и переключаться через update-alternatives.
⚠️ Но учитывайте место на диске: каждая JDK занимает несколько сотен мегабайт. На серверах с ограниченным пространством старые версии лучше удалять.
При удалении через apt remove обязательно запускайте apt autoremove: он уберёт зависимости, которые больше не нужны.
⚠️ Важно: Не ставьте одновременно JDK из Debian и Temurin без понимания, как работает update-alternatives. Иначе java и javac могут указывать на разные версии, что вызовет путаницу.
💡 Для продвинутых пользователей: Чтобы проверить, что java и javac из одной сборки, выполните:
readlink -f "$(which java)"
readlink -f "$(which javac)"
Если пути ведут в разные папки (например, один в java-17-openjdk, другой в temurin-17-jdk), значит, update-alternatives настроен несогласованно. Исправить это можно командой:
sudo update-alternatives --config java
sudo update-alternatives --config javac
В обоих меню выберите одну и ту же версию JDK.
Заключение
Теперь OpenJDK 17 установлен на вашем Debian. Вы можете разрабатывать и запускать Java-приложения, используя эту стабильную LTS-версию.
Что дальше:
- Установите Apache Maven для управления зависимостями
- Установите Git для контроля версий
- Установите IntelliJ IDEA или VS Code