Настройка Debian 11. Часть третья - инструменты разработки. [Черновик]

Автор lionet, 05 ноября 2022, 19:26:06

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

lionet

Черновик.
Предыдущая часть тут.

В этой части будет рассмотрена установка различных инструментов разработчика. Я придерживаюсь феншуя Debian, согласно которому размещение приложений (за некоторым исключением) в домашнем каталоге пользователя - моветон. Если приложение распространяется в виде тарбола и не требует сборки из исходников, то ему самое место в каталоге /opt

  • Установка Java
    В одной из предыдущих частей был показан лёгкий способ установки для новичков через утилиту sdkman. Недостаток этого способа - размещение так называемых "кандидатов" приложений в домашнем каталоге пользователя, что делает невозможным их переиспользование для других пользователей(хотя в большинстве случаев этого и не требуется). Поэтому устанавливать будем в предназначенный для этого каталог /opt
    Итак, для разработки нужны 8я и 11 версия Java. Для runtime 19 версия.
    Создаём корневой каталог для разных версий Java:
    sudo mkdir /opt/javaСтавим 8 версию Java:
    sudo mkdir /opt/java/jdk8 && curl -L https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u352-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u352b08.tar.gz | sudo tar xzvf - -C /opt/java/jdk8 --strip-components 1Ставим 11 версию Java:
    sudo mkdir /opt/java/jdk11 && curl -L https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.17%2B8/OpenJDK11U-jdk_x64_linux_hotspot_11.0.17_8.tar.gz | sudo tar xzvf - -C /opt/java/jdk11 --strip-components 1Ставим 19 версию Java:
    sudo mkdir /opt/java/jdk19 && curl -L https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19.0.1%2B10/OpenJDK19U-jdk_x64_linux_hotspot_19.0.1_10.tar.gz | sudo tar xzvf - -C /opt/java/jdk19 --strip-components 1Раньше, после установки начинались пляски в виде заведения домашнего каталога JAVA_HOME, добавления альтернатив в список а-ля sudo update-alternatives --install /usr/bin/java java /opt/java/jdk11/bin/java 1
    Но теперь у нас есть sdkman, который может управлять даже той Java, которая была установлена не через него!
    Итак, добавляем установленные Java в sdkman:
    sdk install java jdk8 /opt/java/jdk8sdk install java jdk11 /opt/java/jdk11sdk install java jdk19 /opt/java/jdk19Проверяем какая Java используется сейчас по-умолчанию:
    sdk current javaУ меня осталась 17 версия из предыдущего руководства. Изменим на 19 версию Java:
    sdk default java jdk19Ещё несколько команд для работы с sdkman.
    Посмотреть только установленные версии Java, которые были установлены через sdkman. Локально установленные нами версии в этом списке отображаться не будут:
    sdk list java | grep installedПросмотр локально установленных версий Java, которыми управляет sdkman:
    sdk list java | grep localНу и давайте удалим 17 версию Java, которая осталась от установки из руководства для новичков:
    sdk uninstall java 17.0.4.1-temУбедимся, что sdkman автоматически установил переменную JAVA_HOME:
    env | grep JAVA
  • Установка Maven
    Создаём каталог для хранения разных версий Maven:
    sudo mkdir /opt/mavenСкачиваем версию Maven 3.6.3 и распаковываем в /opt/maven/apache-maven-3.6.3:
    curl -L https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz | sudo tar xzvf - -C /opt/mavenИдём по тому же пути управления через sdkman. Добавляем Maven под его управление:
    sdk install maven maven-3.6.3 /opt/maven/apache-maven-3.6.3Устанавливаем эту версию по-умолчанию:
    sdk default maven maven-3.6.3Проверяем версию Maven (может потребоваться перезагрузка терминала):
    mvn --versionПроверяем какую переменную sdkman создал для Maven:
    env | grep MAVENДля просмотра легенды по Maven можно использовать команду без grep, т.к лист короткий:
    sdk list mavenПросмотр локально установленных версий Maven:
    sdk list maven | grep +Просмотрет всех установленных стандартных sdk версий Maven:
    sdk list maven | grep \*Настраиваем локальный репозиторий Maven на /opt/.m2 чтобы не дублировать артефакты в локальном репозитории для разных пользователей. Даём полный доступ для всех, чтобы Maven мог скачивать артефакты из-под учётной записи любого пользователя:
    sudo mkdir /opt/.m2 && sudo mkdir /opt/.m2/repository && sudo chmod -R 777 /opt/.m2Настраиваем глобальное местоположение локального репозитория. Редактируем файл настроек Maven:
    sudo nano /opt/maven/apache-maven-3.6.3/conf/settings.xmlВставляем строчку местоположения локального репозитория:
    <localRepository>/opt/.m2/repository</localRepository>
  • Установка Gradle
    Следуем по той же схеме, что и выше.
    Скачиваем Gradle с официального сайта.
    Создаём корневой каталог для хранения разных версий Gradle:
    sudo mkdir /opt/gradleРаспаковываем скачанный файл в /opt/gradle:
    sudo unzip -d /opt/gradle downloads/gradle-6.9.3-bin.zipДобавляем Gradle в sdkman:
    sdk install gradle gradle-6.9.3 /opt/gradle/gradle-6.9.3Устанавливаем скачанную версию по-умолчанию:
    sdk default gradle gradle-6.9.3Смотрим текущую версию Gradle (потребуется перезагрузка терминала):
    sdk current gradleСмотрим локальные версии Gradle, которые управляются sdkman:
    sdk list gradle | grep +Смотрим стандартные версии Gradle, которые устанавливались с помощью sdkman:
    sdk list gradle | grep \*
  • Устанавливаем NodeJS
    NVM это менеджер, который управляет локально установленными версиями NodeJS.
    Скачиваем и устанавливаем последнюю версию:
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bashСмотрим доступные версии nodejs:
    nvm ls-remoteУстанавливаем последнюю версию 16.х:
    nvm install lts/galliumУстанавливаем последнюю доступную версию:
    nvm install --ltsУстанавливаем по-умолчанию последнюю доступную версию:
    nvm use --ltsУстанавливаем по-умолчанию последнюю 16.х версию (gallium):
    nvm use lts/galliumПросмотр списка всего установленного:
    nvm lsЦвета ужасные, установим получше для тёмного фона терминала:
    nvm set-colors cgYmWУстанавливаем yarn:
    npm install --global yarn
  • Устанавливаем Eclipse
    Устанавливать будем с помощью установщика для Eclipse, который скачивается с официального сайта. https://www.eclipse.org/downloads/
    Распаковываем установщик в /opt/eclipse:
    sudo mkdir /opt/eclipse && sudo tar xzvf downloads/eclipse-inst-jre-linux64.tar.gz -C /opt/eclipseСоздаём каталог для bundle:
    sudo mkdir /opt/.p2Запускаем установщик Eclipse первый раз без sudo, чтобы обновить его:
    /opt/eclipse/eclipse-installer/eclipse-instВ открывшемся окне жмём в правом верхнем углу на бутерброд (три горизонтальные полоски) с горящим восклицательным знаком, выбираем пункт меню Update, соглашаемся со всем и затем закрываем установщик.
    Второй раз запускаем из-под sudo, чтобы установить в /opt:
    sudo /opt/eclipse/eclipse-installer/eclipse-instПереключаемся в продвинутый режим (Advanced mode).
    Выбираем Eclipse IDE for Enterprise Java and Web Developers.
    Bundle pools (общие компоненты для всех пользователей) выбираем недавно созданный каталог /opt/.p2 (/pool добавится сам)
    через кнопку Mange Bundle pool->New Agent. Pool для root удаляем.
    Жмём два раза Next.
    Значение для поля Root install folder: /opt
    Значение для поля Installation folder name: eclipse
    Жмём Next и затем Finish.
    Принимаем все лицензии и сертификаты и заканчиваем установку но Eclipse не запускаем, т.к. он запущен из-под root.
    Выходим из установщика.
    Создаём симлинк для запуска Eclipse:
    sudo ln -s /opt/eclipse/eclipse/eclipse /usr/bin/eclipseЗапускаем Eclipse из-под обычного пользователя. Соглашаемся с созданием каталога рабочего пространства (eclipse-workspace) в каталоге текущего пользователя.
  • Устанавливаем VSCode
    Устанавливаем ключ:
    curl -s https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /usr/share/keyrings/microsoft-archive-keyring.gpgДобавляем репозиторий:
    sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'Обновляем репозиторий:
    sudo aptitude updateСтавим VS Code:
    sudo aptitude install code
  • Ставим Idea
    Скачиваем с сайта Community Edition.
    Распаковываем в /opt:
    sudo tar xzvf downloads/ideaIC-2022.2.3.tar.gz -C /optСоздаём симлинк на скрипт запуска:
    sudo ln -s /opt/idea-IC-222.4345.14/bin/idea.sh /usr/bin/idea
  • Устанавливаем DBeaver
    Скачиваем и устанавливаем бобра:
    wget -O /tmp/dbeaver.deb https://dbeaver.io/files/dbeaver-ce_latest_amd64.deb && sudo apt-get install /tmp/dbeaver.debМожно пользоваться.
  • Устанавливаем VirtualBox
    Устанавливаем ключ:
    curl https://www.virtualbox.org/download/oracle_vbox_2016.asc| gpg --dearmor | sudo tee /usr/share/keyrings/virtualbox-archive-keyring.gpgДобавляем репозиторий:
    sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/virtualbox-archive-keyring.gpg] https://download.virtualbox.org/virtualbox/debian bullseye contrib" > /etc/apt/sources.list.d/virtualbox-stable.list'Обновляем репозиторий:
    sudo aptitude updateУстанавливаем VirtualBox:
    sudo aptitude install virtualbox-7.0
  • Устанавливаем Postman
    Скачиваем и устанавливаем postman:
    sudo mkdir /opt/postman && wget -O- https://dl.pstmn.io/download/latest/linux64 | sudo tar xzvf - -C /opt/postman --strip-components 1Создаём симлинк на запуск:
    sudo ln -s /opt/postman/Postman /usr/bin/postman
  • Устанавливаем Docker
    На мой взгляд Docker для разработчика удобнее, чем Podman, из-за наличия GUI Docker Desktop. Однако для девопсов будет удобнее Podman.
    Устанавливаем ключ:
    Цитироватьcurl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/docker-archive-keyring.gpg
    Добавляем репозиторий:
    sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian bullseye stable" > /etc/apt/sources.list.d/docker.list'Обновляем информацию о репозиториях:
    sudo aptitude updateУстанавливаем Docker:
    sudo aptitude install docker-ce docker-composeСервисы Докера стартуют автоматически. Проверяем статус:
    sudo systemctl status docker.service
    sudo systemctl status containerd.service
    Если сервисы Докера не нужны постоянно включёнными, то их автоматическую загрузку можно выключить, т.к. при запуске Docker Desktop он сервисы включит автоматически:
    sudo systemctl disable docker.service
    sudo systemctl disable containerd.service
    Чтобы не вызывать каждый раз sudo, нужно добавить текущего пользователя в группу docker:
    sudo adduser $USER docker
    Ставим Docker Desktop
    wget -O /tmp/docker-desktop.deb https://desktop.docker.com/linux/main/amd64/docker-desktop-4.14.1-amd64.deb && sudo apt-get install /tmp/docker-desktop.debЗапускаем Docker Desktop и после того как он загрузится(запускается очень медленно по сравнению с Виндой, на виртуалке может вообще не запуститься) проверяем его работоспособность:
    docker run hello-worldДолжен скачаться образ hello-world, запуститься и в консоль вывести:
    Hello from Docker!
    Заходим в пункт Containers, там должен быть неактивный, отработавший контейнер созданный из образа hello-world:latest. Жмём на иконку корзины чтобы удалить контейнер.
  • Устанавливаем Podman
    Podman имеется в стандартном репозитории Debian, поэтому просто устанавливаем его:
    sudo aptitude install podman
  • Устанавливаем PostgreSQL
    Пока не было контейнеров, установка баз данных была крайне геморройной. Однако теперь, благодаря Docker установка и/или запуск БД делаются одной строчкой.
    Запускаем Docker Desktop. Ждём пока запустится. Далее устанавливаем PostgreSQL одним из двух способов. Первый способ подразумевает хранение данных в домашнем каталоге пользователя:
    docker run --rm --name docker-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -d -v $HOME/docker/volumes/postgres/data:/var/lib/postgresql/data -p 5432:5432 postgres:13Запустится PostgreSQL с именем контейнера docker-postgres, переменными окружения для логина и пароля postgres:postgres, на порту 5432, данные самой БД будут храниться по адресу ~/docker/volumes/postgres/data, будет скачана 13 версия postgreSQL.
    Второй способ подразумевает храниние БД там, где Линукс хранит свои изменяемые данные (базы данных, сайты для апача и т.д.).
    Сначала создаём постоянный каталог для хранения данных:
    docker volume create postgres-dataВыводим информацию по этому каталогу:
    docker volume inspect postgres-data Теперь устанавливаем и/или запускаем postgreSQL:
    docker run --rm --name docker-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -d -v postgres-data:/var/lib/postgresql/data -p 5432:5432 postgres:13Теперь можно запускать Бобра и подключаться к БД.

Debian 11 xfce4

ogost

jdk11, jdk17, gradle 4.4.1, maven 3.6.3 ставятся из стандартных реп и работают нормально. Если нет особых причин гнаться за последними версиями, то проще поставить из реп.

lionet

А чьи дистрибутивы jdk11 и jdk17 в стандартной репе? Хотя, какая разница, всё равно стандартный репозиторий не даст выбрать ту версию дистрибутива которую хочется. Тут же - полная свобода выбора.
Ну и по-моему, проще, когда вся java лежит в одном месте, а не когда размазаны по всей файловой системе (jdk8 в одном месте, остальные в другом).

maven-3.6.3 ставится просто потому, что это последняя версия, которая может тянуть артефакты с http. А остальные версии maven и gradle обычно зависят от проектов, поэтому я не стал расписывать их установку, но она аналогична вышеуказанной.
Debian 11 xfce4