Используемый термин: Gradle .
В нашем примере будет выполнена сборка пакетов RPM и Deb с помощью Gradle. Мы рассмотрим:
Данную инструкцию можно использовать для базового ознакомления с процессом сборки RPM и Deb при помощи Gradle. В ней рассмотрена примитивная сборка пакета, в который будет входить небольшой скрипт, написанный на bash.
Предварительная подготовка
Установка Gradle и настройка среды
Выполнение сборки пакетов
Тестовая установка собранных пакетов
Другие материалы по теме сборки пакетов
Для установки Gradle в нашей системе должны быть установлены java и дополнительные пакеты. Рассмотрим эти процессы по отдельности.
Gradle разработан на Java и для его работы нужно установить соответствующее программное обеспечение (open-java). В зависимости от системы, в которой мы будем работать действия немного отличаются.
а) Для Debian / Ubuntu:
apt update
apt install default-jdk
б) Для Rocky Linux / CentOS:
yum install java-11-openjdk-devel
Open-java установлен.
Для теста выполним команду:
java -version
Мы должны увидеть что-то на подобие:
openjdk version «11.0.15» 2022-04-19
…
Для работы нам понадобятся пакеты:
Для разных систем команды будут различаться.
а) В Debian / Ubuntu:
apt install wget unzip
б) В Rocky Linux / CentOS:
yum install wget unzip which
Мы готовы перейти к установке Gradle.
Для установки Gradle мы должны скачать архив со скомпилированными файлами и распаковать их в рабочий каталог (в нашем примере будет /opt).
И так, переходим на страницу загрузки и кликаем по ссылке для скачивания архива:
Мы окажемся на другой странице, где браузер начнет загрузку. Нам это не нужно — прерываем скачивание архива и копируем ссылку для его загрузки:
Переходим на Linux, где нужно установить gradle, и скачиваем архив с помощью скопированной ссылки:
wget https://services.gradle.org/distributions/gradle-7.4.2-all.zip
Распакуем архив:
unzip gradle-*.zip
Переместим его содержимое в каталог /opt:
mv gradle-*/ /opt/gradle
Открываем профиль пользователя, под которым мы будем заниматься сборкой пакетов:
vi ~/.profile
Добавим:
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
export PATH=$PATH:/opt/gradle/bin
* где:
Применяем настройки, добавленные в файл профиля:
source ~/.profile
Пробуем запустить gradle:
gradle -v
Мы должны получить что-то на подобие:
Welcome to Gradle 7.4.2!
…
Gradle установлен.
Создадим наше приложение. Это будет просто скрипт, выводящий на экран Hello, World .
Для начала создаем каталог, куда поместим данный скрипт, например:
mkdir -p /opt/mypkg/hello
Теперь создадим сам скрипт:
vi /opt/mypkg/hello/start.sh
#!/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
echo «Hello, World»
В каталоге на уровень выше создаем файл build.gradle с описанием процесса сборки:
vi /opt/mypkg/build.gradle
plugins {
id «nebula.info» version «7.1.3»
id ‘nebula.ospackage’ version ‘8.5.6’ apply false
}
apply plugin: ‘nebula.ospackage’
ospackage {
packageName = ‘hello’
version = ‘1.0.0’
release = ‘1’
arch = NOARCH
os = LINUX
requires(‘bash’)
into ‘/opt/hello’
user ‘root’
from(‘hello/start.sh’) {
into ‘/opt/hello/bin’
fileMode = 0770
}
}
buildRpm {
link(‘/usr/local/bin/hello’, ‘/opt/hello/bin/start.sh’)
}
buildDeb {
link(‘/usr/local/bin/hello’, ‘/opt/hello/bin/start.sh’)
}
* где:
* обратите внимание, что в конкретном случае мы можем и не использовать buildRpm и buildDeb , а их содержимое вынести в ospackage . Важно понять, что в ospackage лучше вынести общие настройки, а в buildRpm и buildDeb только то, что характерно для rmp и deb соответственно.
Создадим файл с настройками сборки:
vi /opt/mypkg/settings.gradle
include ‘:hello’
rootProject.name = ‘hello’
project(‘:hello’).name = ‘hello’
* мы задали 3 параметра:
Теперь перейдем в каталог, где у нас создан build.gradle:
cd /opt/mypkg
Сборку рекомендуется выполнять с помощью Gradle Wrapper ( gradlew ) — скрипта, который вызывает объявленную версию Gradle, загружая ее заранее, если это необходимо. Для формирования wrapper-скрипта выполним:
gradle wrapper —warning-mode all
Мы должны увидеть что-то на подобие:
BUILD SUCCESSFUL in 19s
1 actionable task: 1 executed
Начинаем сборку командой:
./gradlew buildRpm buildDeb
Мы должны увидеть:
………..10%………..20%………..30%………..40%………..50%………..60%………..70%………..80%………..90%………..100%
BUILD SUCCESSFUL in 13s
2 actionable tasks: 2 executed
Готово. Сформированные пакеты мы можем увидеть в каталоге build/distributions :
ls build/distributions/
В нашем примере мы увидим:
hello-1.0.0-1.noarch.rpm hello_1.0.0-1_noarch.changes hello_1.0.0-1_noarch.deb
Для проверки нашего пакета, перенесем установочные файлы на конечные компьютеры.
Выполняем установку. Для каждого типа системы будет своя команда.
а) Для RPM-систем:
yum install /tmp/hello-1.0.0-1.noarch.rpm
б) Для Deb-систем:
apt install /tmp/hello_1.0.0-1_noarch.deb
* обратите внимание, в данном примере предполагается, что мы скопировали наши установочные файлы в каталог /tmp .
Установка нашего приложения не должны занять много времени.
После выполняем команду:
hello
В консоли мы должны увидеть:
Hello, World
Наша сборка работает.
Обратите внимание на другие способы сборки пакетов:
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…