Предыдущая часть находится тут.
В этой части будет рассмотрена установка различных инструментов разработчика. Я придерживаюсь феншуя Debian, согласно которому размещение приложений (за некоторым исключением) в домашнем каталоге пользователя - моветон. Если приложение распространяется в виде тарбола и не требует сборки из исходников, то ему самое место в каталоге /opt.
К сожалению абсолютно все инструменты разработки я не смогу привести по причине того, что я не все знаю. Если что отсутствует - пишите. Постараюсь добавить.
- + Установка git
sudo aptitude install git - + Установка SDKMan
Скачиваем и устанавливаем:
curl -fL "https://get.sdkman.io" | bashОбновляем переменные среды:
source "$HOME/.sdkman/bin/sdkman-init.sh"Проверяем, что sdkman установился (должна вывестись версия):
sdk versionsdkman может обновлять сам себя. Команда для обновления:
sdk selfupdate - + Установка Java
Обычно разные версии Java нужны для разработки. И среда разработки настраивается на нужную версию Java. Для Java, как среды выполнения Debian, достаточно просто установить Java из репозитория:
sudo aptitude install default-jdkДля сред разработки же установим разные версии Java. Для начала создадим общий каталог для размещения Java:
sudo mkdir /opt/java+ Java 8Последнюю версию смотреть тут.
Создаём каталог jdk8 в директории /opt и скачиваем туда 8 версию Явыsudo mkdir /opt/java/jdk8 && curl -fL https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u422-b05/OpenJDK8U-jdk_x64_linux_hotspot_8u422b05.tar.gz | sudo tar xzvf - -C /opt/java/jdk8 --strip-components 1+ Java 11Последнюю версию смотреть тут.
Создаём каталог jdk11 в директории /opt и скачиваем туда 11 версию Явыsudo mkdir /opt/java/jdk11 && curl -fL https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.24%2B8/OpenJDK11U-jdk_x64_linux_hotspot_11.0.24_8.tar.gz | sudo tar xzvf - -C /opt/java/jdk11 --strip-components 1+ Java 17Последнюю версию смотреть тут.
Создаём каталог jdk17 в директории /opt и скачиваем туда 17 версию Явыsudo mkdir /opt/java/jdk17 && curl -fL https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.17%2B10/OpenJDK17U-jdk_x64_linux_hotspot_17.0.17_10.tar.gz | sudo tar xzvf - -C /opt/java/jdk17 --strip-components 1+ Java 21Последнюю версию смотреть тут.
Создаём каталог jdk21 в директории /opt и скачиваем туда 21 версию Явыsudo mkdir /opt/java/jdk21 && curl -fL https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.9%2B10/OpenJDK21U-jdk_x64_linux_hotspot_21.0.9_10.tar.gz | sudo tar xzvf - -C /opt/java/jdk21 --strip-components 1+ Java 25Последнюю версию смотреть тут.
Создаём каталог jdk21 в директории /opt и скачиваем туда 21 версию Явыsudo mkdir /opt/java/jdk25 && curl -fL https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.4.1%2B1/OpenJDK25U-jdk_x64_linux_hotspot_25.0.4.1_1.tar.gz | sudo tar xzvf - -C /opt/java/jdk25 --strip-components 1 - + Установка Maven
По аналогии с Java создаём верхнеуровневый каталог для установки разных версий Мавен:
sudo mkdir /opt/maven+ maven 3.6.3curl -fL 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
sdk install maven maven-3.6.3 /opt/maven/apache-maven-3.6.3Устанавливаем эту версию по-умолчанию:
sdk default maven maven-3.6.3Обновляем переменные sdk:
source "$HOME/.sdkman/bin/sdkman-init.sh"Проверяем версию Maven:
mvn --versionПроверяем какую переменную sdkman создал для Мавена:
env | grep MAVENПросмотр локально установленных версий мавена
sdk list maven | grep + - + Установка Gradle
По аналогии с Java создаём верхнеуровневый каталог для установки разных версий gradle:
sudo mkdir /opt/gradleВерсии смотреть тут.
+ Gradle 8.10.2Скачиваем и распаковываем в /opt/gradle:
curl -fL -o /tmp/gradle.zip https://services.gradle.org/distributions/gradle-8.10.2-bin.zip && sudo unzip -d /opt/gradle /tmp/gradle.zipДобавляем gradle в sdkman:
sdk install gradle gradle-8.10.2 /opt/gradle/gradle-8.10.2Устанавливаем эту версию по-умолчанию:
sdk default gradle gradle-8.10.2Обновляем переменные sdk:
source "$HOME/.sdkman/bin/sdkman-init.sh"Просмотр текущей версии:
sdk current gradleПросмотр переменных, которые создал sdkman для gradle:
env | grep GRADLE - + Установка protobuf
Установка:
sudo aptitude install protobuf-compilerПроверка:
protoc --version - + Установка NodeJS
Устанавливаем менеджер nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bashОбновляем переменные окружения:
source ~/.bashrcПросмотр доступных для установки версий:
nvm ls-remoteУстановим последнюю 22 версию(Jod):
nvm install lts/jod - + Установка VS Code
Ключ:
curl -fL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /etc/apt/keyrings/microsoft.gpgРепозиторий:
echo -e "Types: deb\nURIs: https://packages.microsoft.com/repos/code\nSuites: stable\nComponents: main\nArchitectures: amd64\nSigned-By: /etc/apt/keyrings/microsoft.gpg" | sudo tee /etc/apt/sources.list.d/vscode.sourcesОбновление кеша:
sudo aptitude updateУстановка:
sudo aptitude install codeПодключение языковых моделей LLM для автодополнения, эмбединга и чата/редактирования кода. Для этого в Расширениях (Extensions) VS Code нужно скачать Continue, которое предоставляет интерфейс для работы с платформами запуска языковых моделей. Далее по руководству представлена установка такой платформы Ollama и скачивание необходимых моделей. Для их подключения к VS Code нужно на левой панели перейти к вкладке скачанного расширения Continue. В правом верхнем углу открывшейся панели нажать на Open Settings (шестерёнка). В появившейся слева подпанели найти иконку листа с загнутым углом (Configs) и нажать. В правой подпанели появится Main Config с шестерёнкой настроек (Open configuration) на которую нужно нажать. В основном окне откроется файл настроек Continue config.yaml. Нужно его дополнить/отредактировать введя следующий код:
name: Main Config version: 1.0.0 schema: v1 models: - name: Qwen 2.5 Coder 7B provider: ollama model: qwen2.5-coder:7b roles: - chat - edit - apply - name: Qwen2.5-Coder 1.5B provider: ollama model: qwen2.5-coder:1.5b roles: - autocomplete - name: Nomic Embed provider: ollama model: nomic-embed-text:latest roles: - embed - + Установка Idea
На данный момент дистрибутив един и для Community версии и для Ultimate.
Скачиваем и устанавливаем:curl -L https://github.com/JetBrains/intellij-community/releases/download/idea%2F2026.1.2/idea-2026.1.2.tar.gz | sudo tar xzvf - -C /optСоздаём симлинк на скрипт запуска:
sudo ln -s /opt/idea-IC-261.24374.151/bin/idea.sh /usr/local/bin/idea - + Установка DBeaver
wget -O /tmp/dbeaver.deb https://dbeaver.io/files/dbeaver-ce_latest_amd64.deb && sudo apt-get install /tmp/dbeaver.deb - + Установка 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/local/bin/postman - + Установка Bruno. Аналог Postman
Скачиваем и устанавливаем
wget -O /tmp/bruno.deb https://github.com/usebruno/bruno/releases/download/v3.2.0/bruno_3.2.0_amd64_linux.deb && sudo apt-get install /tmp/bruno.deb - + Установка Docker
Ключ:
sudo curl -fL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.ascРепозиторий:
echo -e "Types: deb\nURIs: https://download.docker.com/linux/debian\nSuites: trixie\nComponents: stable\nSigned-By: /etc/apt/keyrings/docker.asc" | sudo tee /etc/apt/sources.list.d/docker.sourcesОбновление кеша репозитория:
sudo aptitude updateУстановка:
sudo aptitude install docker-ceДокер стартует автоматически. Проверяем:
sudo systemctl status docker.service sudo systemctl status containerd.serviceТакое поведение нам не нужно. Нужно, чтобы он запускался при необходмости, а не постоянно висел и отжирал ресурсы. Отключаем автоматическую загрузку Докера при старте системы (Docker Desktop сам включит нужные сервисы при запуске):
sudo systemctl disable --now docker.service sudo systemctl disable --now containerd.serviceЧтобы не вызывать каждый раз sudo(например для просмотра процессов docker ps) нужно добавить текущего пользователя в группу docker:
sudo adduser $USER dockerСтавим Docker-Desktop:
wget -O /tmp/docker-desktop.deb https://desktop.docker.com/linux/main/amd64/docker-desktop-amd64.deb && sudo apt-get install /tmp/docker-desktop.debПримечание. docker-compose теперь является плагином для docker. Его запуск осуществляется по аналогии с docker-compose ... только без дефиса - docker compose...
И не забудьте включить виртуализацию в BIOS!
- + Установка PostgreSQL
Запуск через Докер
Версия PostgreSQL на обычном образе:docker run --rm --name docker-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 -v ~/docker-data/postgres13/pgData:/var/lib/postgresql/data postgres:13Версия PostgreSQL на легковесном alpine:
docker run --rm --name docker-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 -v ~/docker-data/postgres13-alpine/pgData:/var/lib/postgresql/data postgres:13-alpine - + Установка YandexDB
Примерно то же самое, что и для PostgreSQL
Создаём каталоги в домашней директории где YDB будет хранить свои данные:mkdir ~/ydbd && cd ~/ydbd && mkdir ydb_data && mkdir ydb_certsЗапускаем образ через Докер из КОРНЯ домашнего каталога:
docker run -d --rm --name ydb-local -h localhost \ --platform linux/amd64 \ -p 2135:2135 -p 2136:2136 -p 8765:8765 -p 9092:9092 \ -v $(pwd)/ydbd/ydb_certs:/ydb_certs -v $(pwd)/ydbd/ydb_data:/ydb_data \ -e GRPC_TLS_PORT=2135 -e GRPC_PORT=2136 -e MON_PORT=8765 \ -e YDB_KAFKA_PROXY_PORT=9092 \ ydbplatform/local-ydb:25.2.1 - + Установка Go
Установка указана для версии 1.25.4. Актуальную версию смотреть тут.
Установка:sudo mkdir /opt/go && curl -fL https://go.dev/dl/go1.25.4.linux-amd64.tar.gz | sudo tar xzvf - -C /opt/go --strip-components 1Симлинк для запуска:
sudo ln -s /opt/go/bin/go /usr/local/bin/go - + Создание соединения типа Мост
Подключение через Мост хоть и не сильно, но увеличивает накладные расходы(процессор, пропускная способность). Поэтому если нет нужды в использовании эмулятора Qemu, создавать не нужно. А в Qemu он нужен исключительно если необходимо видеть виртуальную машину в локальной сети как отдельный компьютер.
Посмотрим какие типы соединений имеются:nmcli conn showОбычно результатом будет что-то типа такого:
Wired connection 1 561f5eb9-c660-46ef-9a50-dba40ebc2646 ethernet enp1s0
где Wired connection 1 это имя соединения, ethernet тип соединения, а enp1s0 название устройства, которое и обеспечивает физическую передачу данных (на реальных устройствах обычно называется eno1)
Аналог просмотра ПКМ иконе сетевого соединения в системном трее -> Параметры соединенияУдалим это соединение:
nmcli con delete 'Wired connection 1'Удалить также можно вручную через ту же иконку соединения
Создаем подключение типа «мост» с именем bridge0 используя интерфейс, который назовём br0:
nmcli con add type bridge con-name bridge0 ifname br0Аналог этой команды, будет ПКМ на соединении и выбор Параметры соединений...
Далее, Добавить новое соединение, Виртуальное типа Мост.Добавляем физический интерфейс (в данном случае enp1s0) в качестве
подчиненного устройства к нашему только что созданному мосту br0:nmcli con add type bridge-slave ifname enp1s0 master br0В итоге появится новое Ethernet соединение типа bridge-slave-enp1s0 с которым будет работать мост bridge0
Аналог этой команды - в сетевых соединения провалиться в Мост bridge0, на вкладке Мост жмём кнопку Добавить и в раскрывающемся списке выбираем Ethernet и заполняем имя соединения и из выпадающего списка выбираем УстройствоОтключаем STP на мосту bridge0:
nmcli con modify bridge0 bridge.stp noНу, либо вручную снимаем галку Включить STP в соединении типа Мост на вкладке Мост
Посмотреть присвоенные IP адреса
ip addr showЕсли всё сделано правильно, то у моста br0 должны быть присвоены ipшники, а у устройства enp1s0 их быть не должно.
- + Установка Qemu
В Линуксе традиционно используется эмулятор Qemu вместо неимоверно отжирающего ресурсы VirtualBox, который ещё и требует выгрузки модулей KVM для своего запуска. Однако VirtualBox умеет сам создавать соединения типа Мост, в то время как Qemu требует создания соединения типа Мост на хосте вручную (предыдущий пункт по установке софта) если его нужно видеть в той же сети, что и хост машина.
Сам Qemu уже установлен, однако ГУИ к нему требует отдельно установки:sudo aptitude install virt-managerДля того, чтобы система не требовала пароля при запуске Менеджера, нужно добавить своего пользователя в группу libvirt:
sudo adduser $USER libvirt - + Установка PhP
Ключ:
curl -fL https://packages.sury.org/php/apt.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/sury-php.gpgРепозиторий:
echo "deb [signed-by=/etc/apt/keyrings/sury-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.listОбновление кеша:
sudo aptitude updateУстановка нужной версии. Например 8.1 и 8.2:
sudo aptitude install php8.1sudo aptitude install php8.2Если нужно включить нужную версию для системы, то это делается командой:
sudo update-alternatives --config phpгде можно выбрать версию по-умолчанию
- + Установка Unity Hub
Ключ:
curl -fL https://hub.unity3d.com/linux/keys/public | sudo gpg --dearmor -o /etc/apt/keyrings/unityhub.gpgРепозиторий:
echo -e "Types: deb\nURIs: https://hub.unity3d.com/linux/repos/deb\nSuites: stable\nComponents: main\nSigned-By: /etc/apt/keyrings/unityhub.gpg" | sudo tee /etc/apt/sources.list.d/unityhub.sourcesОбновление кеша:
sudo aptitude updateУстановка:
sudo aptitude install unityhub - + Установка Sublime
Ключ:
curl -fL https://download.sublimetext.com/sublimehq-pub.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/sublimehq-pub.gpgРепозиторий:
echo -e "Types: deb\nURIs: https://download.sublimetext.com/\nSuites: apt/stable/\nComponents: \nArchitectures: amd64\nSigned-By: /etc/apt/keyrings/sublimehq-pub.gpg" | sudo tee /etc/apt/sources.list.d/sublime.sourcesОбновление кеша:
sudo aptitude updateУстановка:
sudo aptitude install sublime-text
