You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sd...@apache.org on 2022/10/11 11:35:19 UTC

[ignite-3] branch main updated: IGNITE-15957: DEB and RPM initial commit (#1136)

This is an automated email from the ASF dual-hosted git repository.

sdanilov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new a19712017a IGNITE-15957: DEB and RPM initial commit (#1136)
a19712017a is described below

commit a19712017acf50260ff789030991ef9be8558305
Author: Mikhail <Po...@users.noreply.github.com>
AuthorDate: Tue Oct 11 14:35:14 2022 +0300

    IGNITE-15957: DEB and RPM initial commit (#1136)
---
 .gitattributes                                     |   4 +
 NOTICE                                             |   2 +-
 gradle/libs.versions.toml                          |   1 +
 modules/runner/build.gradle                        |   8 +
 packaging/build.gradle                             |  98 ++++++++-
 .../config/ignite.java.util.logging.properties     |  12 +-
 packaging/deb/changelog                            |   5 -
 packaging/deb/control                              |  14 --
 packaging/deb/copyright                            |  11 -
 packaging/deb/rules                                |  36 ----
 packaging/linux/common.sh                          |  79 +++++++
 .../{deb/build.sh => linux/deb/postUninstall.sh}   |  25 +--
 .../{deb/build.sh => linux/deb/preUninstall.sh}    |  19 +-
 packaging/linux/postInstall.sh                     |  56 +++++
 packaging/{deb/build.sh => linux/preInstall.sh}    |  19 +-
 .../{deb/build.sh => linux/rpm/postUninstall.sh}   |  23 +-
 .../{deb/build.sh => linux/rpm/preUninstall.sh}    |  21 +-
 .../{deb/build.sh => linux/service/ignite3db.conf} |  28 +--
 .../build.sh => linux/service/ignite3db.service}   |  30 +--
 packaging/{deb/build.sh => linux/service/vars.env} |  30 ++-
 packaging/linux/start.sh                           |  43 ++++
 packaging/rpm/.gitignore                           |   2 -
 packaging/rpm/Dockerfile                           |  42 ----
 packaging/rpm/README.md                            |  48 -----
 packaging/rpm/apache-ignite.spec                   | 235 ---------------------
 packaging/rpm/build.sh                             |  39 ----
 packaging/scripts/bootstrap-config                 |  10 -
 packaging/{deb/build.sh => zip/bootstrap-config}   |  23 +-
 packaging/zip/start.sh                             |  60 ++++++
 packaging/{deb/build.sh => zip/stop.sh}            |   0
 30 files changed, 428 insertions(+), 595 deletions(-)

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000000..3c8fe05b09
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,4 @@
+*.sh text eol=lf
+*.env text eol=lf
+*.service text eol=lf
+*.conf text eol=lf
diff --git a/NOTICE b/NOTICE
index 1dd5ce4aa0..1aae3088f2 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,5 +1,5 @@
 Apache Ignite
-Copyright 2021 The Apache Software Foundation
+Copyright 2022 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index c614f5e7ea..ffe7701339 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -83,6 +83,7 @@ javacc = "com.intershop.gradle.javacc:4.0.1"
 shadow = "com.github.johnrengelman.shadow:7.1.2"
 cmake = "net.freudasoft.gradle-cmake-plugin:0.0.4"
 modernizer = "com.github.andygoossens.modernizer:1.6.2"
+nebula = "nebula.ospackage:9.1.1"
 docker = "com.palantir.docker:0.34.0"
 
 [libraries]
diff --git a/modules/runner/build.gradle b/modules/runner/build.gradle
index fa34548711..8f0c743de5 100644
--- a/modules/runner/build.gradle
+++ b/modules/runner/build.gradle
@@ -99,3 +99,11 @@ dependencies {
 checkstyleMain {
     enabled = false
 }
+
+jar {
+    manifest {
+        attributes(
+            'Main-Class': 'org.apache.ignite.app.IgniteCliRunner'
+        )
+    }
+}
diff --git a/packaging/build.gradle b/packaging/build.gradle
index a9ab66d713..aeed596bc1 100644
--- a/packaging/build.gradle
+++ b/packaging/build.gradle
@@ -19,6 +19,7 @@ plugins {
     id 'java'
     id 'distribution'
     alias(libs.plugins.docker)
+    alias(libs.plugins.nebula)
 }
 
 configurations {
@@ -27,6 +28,8 @@ configurations {
     cliScripts
 }
 
+import org.apache.tools.ant.filters.ReplaceTokens
+
 dependencies {
     dbArtifacts(project(':ignite-runner'))
     cliArtifacts(project(':ignite-cli'))
@@ -60,9 +63,9 @@ def dbContents = spec -> {
         from ("$rootDir/assembly/README.md")
     }
     into('etc') {
-        from ("$rootDir/packaging/scripts/bootstrap-config")
-        from ("$rootDir/packaging/config/ignite-config.conf")
-        from ("$rootDir/packaging/config/ignite.java.util.logging.properties")
+        from ("${buildDir}/scripts/bootstrap-config")
+        from ("${buildDir}/config/ignite-config.conf")
+        from ("${buildDir}/config/ignite.java.util.logging.properties")
     }
     into('bin') {
         fileMode 0755
@@ -129,3 +132,92 @@ task allDistZip(type: Zip) {
 }
 
 allDistZip.dependsOn cliDistZip, dbDistZip
+
+def tokens = [
+        PRODUCT_NAME            : 'ignite3db',
+        PRODUCT_DISPLAY_NAME    : 'Apache Ignite',
+        USERNAME                : 'ignite3',
+        GROUPNAME               : 'ignite3',
+        INSTALL_DIR             : '/usr/share/ignite3db',
+        CONF_DIR                : '/etc/ignite3db',
+        LOG_DIR                 : '/var/log/ignite3db',
+        PID_DIR                 : '/var/run/ignite3db',
+        VARS_FILE_NAME          : 'vars.env',
+        MIN_PRODUCT_VERSION     : project.version.toString(),
+        PRODUCT_VERSION         : project.version.toString(),
+        IGNITE_CONF_FILE        : 'ignite-config.conf',
+        IGNITE_WORK_DIR         : '/usr/share/ignite3db/work'
+]
+
+task replaceConfigVars(type: Copy) {
+    from("${projectDir}/config")
+    filter(ReplaceTokens, tokens: tokens)
+    into("${buildDir}/config")
+}
+
+task replaceScriptVars(type: Copy) {
+    from("${projectDir}/linux")
+    filter(ReplaceTokens, tokens: tokens)
+    into("${buildDir}/linux")
+}
+
+buildRpm {
+    dependsOn replaceScriptVars, replaceConfigVars
+    configurationFile = "/etc/ignite3/vars.env"
+
+    installUtils file("${buildDir}/linux/service/vars.env")
+    installUtils file("${buildDir}/linux/common.sh")
+    preInstall file("${buildDir}/linux/preInstall.sh")
+    postInstall file("${buildDir}/linux/postInstall.sh")
+    preUninstall file("${buildDir}/linux/rpm/preUninstall.sh")
+    postUninstall file("${buildDir}/linux/rpm/postUninstall.sh")
+}
+
+buildDeb {
+    dependsOn replaceScriptVars, replaceConfigVars
+    configurationFile = "/etc/ignite3/vars.env"
+
+    installUtils file("${buildDir}/linux/service/vars.env")
+    installUtils file("${buildDir}/linux/common.sh")
+    preInstall file("${buildDir}/linux/preInstall.sh")
+    postInstall file("${buildDir}/linux/postInstall.sh")
+    preUninstall file("${buildDir}/linux/deb/preUninstall.sh")
+    postUninstall file("${buildDir}/linux/deb/postUninstall.sh")
+}
+
+ospackage {
+    license "ASL 2.0"
+    packageName 'ignite3db'
+    packageGroup "System Environment/Daemons"
+    url "https://ignite.apache.org"
+    user tokens.USERNAME
+    packageDescription "This package will install Apache Ignite"
+    os LINUX
+
+    into(tokens.INSTALL_DIR) {
+        into("") {
+            from "${buildDir}/linux/service/ignite3db.service"
+            from "${buildDir}/linux/service/ignite3db.conf"
+            from("${buildDir}/linux/start.sh") {
+                fileMode 0755
+            }
+        }
+
+        into("lib") {
+            from configurations.dbArtifacts
+        }
+
+        into("etc") {
+            fileType CONFIG
+            from "${buildDir}/linux/service/vars.env"
+            from "${buildDir}/config/ignite.java.util.logging.properties"
+            from "${buildDir}/config/ignite-config.conf"
+        }
+
+        into("etc") {
+            from sourceSets.main.resources
+        }
+    }
+    link "/etc/ignite3db", "${tokens.INSTALL_DIR}/etc/"
+    link "/opt/ignite3db", "${tokens.INSTALL_DIR}"
+}
diff --git a/packaging/config/ignite.java.util.logging.properties b/packaging/config/ignite.java.util.logging.properties
index 312b25682e..c173554dd5 100644
--- a/packaging/config/ignite.java.util.logging.properties
+++ b/packaging/config/ignite.java.util.logging.properties
@@ -25,7 +25,7 @@
 #
 # Comma-separated list of logging "handlers". Note that some of them may be
 # reconfigured (or even removed) at runtime according to system properties.
-handlers=java.util.logging.ConsoleHandler
+handlers=java.util.logging.FileHandler
 
 #
 # Default global logging level.
@@ -37,9 +37,11 @@ handlers=java.util.logging.ConsoleHandler
 #
 .level=INFO
 
-# Console handler logs all messages with importance level `INFO` and above
+# Console handler logs all messages with importance level `SEVERE` and above
 # into standard error stream (`System.err`).
 #
-java.util.logging.ConsoleHandler.formatter = org.apache.ignite.lang.JavaLoggerFormatter
-java.util.logging.ConsoleHandler.level = INFO
-java.util.logging.ConsoleHandler.encoding = UTF-8
+java.util.logging.FileHandler.formatter = org.apache.ignite.lang.JavaLoggerFormatter
+java.util.logging.FileHandler.pattern = @LOG_DIR@/ignite3db-%g.log
+java.util.logging.FileHandler.level = INFO
+java.util.logging.FileHandler.limit = 10485760
+java.util.logging.FileHandler.count = 10
diff --git a/packaging/deb/changelog b/packaging/deb/changelog
deleted file mode 100644
index ede72c0f3f..0000000000
--- a/packaging/deb/changelog
+++ /dev/null
@@ -1,5 +0,0 @@
-apache-ignite (3.0.0-1) unstable; urgency=low
-
-  * Apache Ignite 3 initial release
-
- -- Petr Ivanov <mr...@gmail.com>  Mon, 25 Oct 2021 17:19:00 +0300
diff --git a/packaging/deb/control b/packaging/deb/control
deleted file mode 100644
index 35b3473473..0000000000
--- a/packaging/deb/control
+++ /dev/null
@@ -1,14 +0,0 @@
-Source: apache-ignite
-Maintainer: Petr Ivanov <mr...@gmail.com>
-Section: misc
-Priority: optional
-Standards-Version: 4.1.1.1
-
-Package: apache-ignite
-Architecture: all
-Section: misc
-Priority: optional
-Depends: openjdk-11-jdk | default-jdk | java-sdk, passwd
-Description: Apache Ignite is a distributed database for high-performance
- computing with in-memory speed.
-Homepage: https://ignite.apache.org
diff --git a/packaging/deb/copyright b/packaging/deb/copyright
deleted file mode 100644
index 51fca54c2a..0000000000
--- a/packaging/deb/copyright
+++ /dev/null
@@ -1,11 +0,0 @@
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/packaging/deb/rules b/packaging/deb/rules
deleted file mode 100644
index 53ba30e7af..0000000000
--- a/packaging/deb/rules
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/make -f
-# debian/rules for alien
-
-PACKAGE=$(shell dh_listpackages)
-
-clean:
-	dh_testdir
-	dh_testroot
-	dh_clean -d
-
-binary-arch: clean
-	dh_testdir
-	dh_testroot
-	dh_prep
-	dh_installdirs
-
-	dh_installdocs
-	dh_installchangelogs
-
-        # Copy the packages's files.
-	find . -maxdepth 1 -mindepth 1 -not -name debian -print0 | \
-		xargs -0 -r -i cp -a {} debian/$(PACKAGE)
-
-        #
-        # If you need to move files around in debian/$(PACKAGE) or do some
-        # binary patching, do it here
-        #
-
-	dh_compress
-	dh_installdeb
-	dh_shlibdeps
-	dh_gencontrol
-	dh_md5sums
-	dh_builddeb
-
-binary: binary-arch
diff --git a/packaging/linux/common.sh b/packaging/linux/common.sh
new file mode 100644
index 0000000000..41c98c8515
--- /dev/null
+++ b/packaging/linux/common.sh
@@ -0,0 +1,79 @@
+#!/bin/sh
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+source_user_group() {
+  USERNAME="@USERNAME@"
+  GROUPNAME="@GROUPNAME@"
+
+  if [ ! "$(getent passwd ${USERNAME})" ]; then
+    /usr/sbin/useradd "${USERNAME}"
+  fi
+
+  if [ ! "$(getent group ${GROUPNAME})" ]; then
+    sudo groupadd "${GROUPNAME}"
+    sudo usermod -a -G "${GROUPNAME}" "${USERNAME}"
+  fi
+
+  if [ -f "@CONF_DIR@/@VARS_FILE_NAME@" ]; then . "@CONF_DIR@/@VARS_FILE_NAME@"; fi
+}
+
+pre_uninstall() {
+  if command -v initctl >/dev/null && initctl version | grep upstart >/dev/null; then
+    if test -f '@PID_DIR@/@PRODUCT_NAME@.pid'; then
+      initctl stop '@PRODUCT_NAME@' >/dev/null 2>&1
+    fi
+  elif command -v systemctl >/dev/null && systemctl --version | grep systemd >/dev/null; then
+    if (systemctl is-active --quiet '@PRODUCT_NAME@'); then
+      systemctl stop '@PRODUCT_NAME@' >/dev/null 2>&1
+    fi
+    if (systemctl is-enabled --quiet '@PRODUCT_NAME@'); then
+      systemctl disable '@PRODUCT_NAME@'
+    fi
+  else
+    pid=$(pgrep -f '@PRODUCT_NAME@')
+    [ -n "$pid" ] && kill "$pid"
+    sleep 5
+    pid=$(pgrep -f '@PRODUCT_NAME@')
+    [ -n "$pid" ] && kill -9 "$pid"
+  fi
+}
+
+post_uninstall_remove() {
+  /bin/rm -rf '@INSTALL_DIR@' >/dev/null 2>&1
+  /bin/rm -rf '@LOG_DIR@' >/dev/null 2>&1
+  if command -v initctl >/dev/null && initctl version | grep upstart >/dev/null; then
+    /bin/rm -f '/etc/init/@PRODUCT_NAME@.conf' >/dev/null 2>&1
+    /bin/rm -rf '@PID_DIR@' >/dev/null 2>&1
+    initctl reload-configuration
+    echo "  @PRODUCT_DISPLAY_NAME@ uninstalled successfully."
+  elif command -v systemctl >/dev/null && systemctl --version | grep systemd >/dev/null; then
+    /bin/rm -f '/usr/lib/systemd/system/@PRODUCT_NAME@.service' >/dev/null 2>&1
+    systemctl daemon-reload
+    echo "  @PRODUCT_DISPLAY_NAME@ uninstalled successfully."
+fi
+}
+
+post_uninstall_upgrade() {
+  if command -v initctl >/dev/null && initctl version | grep upstart >/dev/null; then
+    initctl restart '@PRODUCT_NAME@'
+    echo "  @PRODUCT_DISPLAY_NAME@ upgraded successfully."
+  elif command -v systemctl >/dev/null && systemctl --version | grep systemd >/dev/null; then
+    systemctl restart '@PRODUCT_NAME@'
+    echo "  @PRODUCT_DISPLAY_NAME@ upgraded successfully."
+  fi
+}
diff --git a/packaging/deb/build.sh b/packaging/linux/deb/postUninstall.sh
similarity index 63%
copy from packaging/deb/build.sh
copy to packaging/linux/deb/postUninstall.sh
index 8fdb08c459..2149309b04 100644
--- a/packaging/deb/build.sh
+++ b/packaging/linux/deb/postUninstall.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements. See the NOTICE file distributed with
@@ -16,19 +16,10 @@
 # limitations under the License.
 #
 
-set -o nounset; set -o errexit; set -o pipefail; set -o errtrace; set -o functrace
-
-
-## VARS ##
-SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
-PATH__RPM="${1}"
-FILE__RPM=$(basename "${PATH__RPM}")
-
-
-## START ##
-cd "${SCRIPT_DIR}"
-mv -fv "${PATH__RPM}" ./
-alien --scripts --verbose --keep-version --single "${FILE__RPM}"
-rm -rf "${FILE__RPM}"
-cd apache-ignite-*
-fakeroot debian/rules binary
+case "$1" in
+  remove|purge)
+    post_uninstall_remove
+  ;;
+  upgrade)
+    post_uninstall_upgrade
+esac
diff --git a/packaging/deb/build.sh b/packaging/linux/deb/preUninstall.sh
similarity index 63%
copy from packaging/deb/build.sh
copy to packaging/linux/deb/preUninstall.sh
index 8fdb08c459..f521cf2097 100644
--- a/packaging/deb/build.sh
+++ b/packaging/linux/deb/preUninstall.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements. See the NOTICE file distributed with
@@ -16,19 +16,4 @@
 # limitations under the License.
 #
 
-set -o nounset; set -o errexit; set -o pipefail; set -o errtrace; set -o functrace
-
-
-## VARS ##
-SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
-PATH__RPM="${1}"
-FILE__RPM=$(basename "${PATH__RPM}")
-
-
-## START ##
-cd "${SCRIPT_DIR}"
-mv -fv "${PATH__RPM}" ./
-alien --scripts --verbose --keep-version --single "${FILE__RPM}"
-rm -rf "${FILE__RPM}"
-cd apache-ignite-*
-fakeroot debian/rules binary
+pre_uninstall
diff --git a/packaging/linux/postInstall.sh b/packaging/linux/postInstall.sh
new file mode 100644
index 0000000000..4abc440b41
--- /dev/null
+++ b/packaging/linux/postInstall.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+USERNAME='@USERNAME@'
+GROUPNAME='@GROUPNAME@'
+
+setup_directories() {
+#  echo "setup directories"
+  [ -d '@CONF_DIR@' ] ||  install -d '@CONF_DIR@' --owner="${USERNAME}" --group="${GROUPNAME}" --mode=0775
+  [ -d '@PID_DIR@' ] ||  install -d '@PID_DIR@' --owner="${USERNAME}" --group="${GROUPNAME}"
+  [ -d '@LOG_DIR@' ] ||  install -d '@LOG_DIR@' --owner="${USERNAME}" --group="${GROUPNAME}"
+  [ -d '@IGNITE_WORK_DIR@' ] ||  install -d '@IGNITE_WORK_DIR@' --owner="${USERNAME}" --group="${GROUPNAME}"
+
+  /bin/chown -R "${USERNAME}:${GROUPNAME}" '@INSTALL_DIR@'
+  /bin/chown -R "${USERNAME}:${GROUPNAME}" '@LOG_DIR@'
+  /bin/chown -R "${USERNAME}:${GROUPNAME}" '@CONF_DIR@'
+  /bin/chown -R "${USERNAME}:${GROUPNAME}" '@PID_DIR@'
+}
+
+setup_service_files() {
+  if command -v initctl >/dev/null && initctl version | grep upstart >/dev/null; then
+    ln -sf '@INSTALL_DIR@/@PRODUCT_NAME@.conf' /etc/init/
+    initctl reload-configuration
+  elif command -v systemctl >/dev/null && systemctl --version | grep systemd >/dev/null; then
+    mkdir -p /usr/lib/systemd/system
+    ln -sf '@INSTALL_DIR@/@PRODUCT_NAME@.service' /usr/lib/systemd/system/
+    systemctl daemon-reload
+    systemctl enable '@INSTALL_DIR@/@PRODUCT_NAME@.service' >/dev/null 2>&1
+  else
+    echo
+    echo "We could not detect Upstart or Systemd. You can start the process manually using @INSTALL_DIR@/start.sh"
+    echo
+  fi
+}
+
+setup_directories
+setup_service_files
+
+echo
+echo "  @PRODUCT_DISPLAY_NAME@ installed successfully."
+echo
diff --git a/packaging/deb/build.sh b/packaging/linux/preInstall.sh
similarity index 63%
copy from packaging/deb/build.sh
copy to packaging/linux/preInstall.sh
index 8fdb08c459..e21edac9d8 100644
--- a/packaging/deb/build.sh
+++ b/packaging/linux/preInstall.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements. See the NOTICE file distributed with
@@ -16,19 +16,4 @@
 # limitations under the License.
 #
 
-set -o nounset; set -o errexit; set -o pipefail; set -o errtrace; set -o functrace
-
-
-## VARS ##
-SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
-PATH__RPM="${1}"
-FILE__RPM=$(basename "${PATH__RPM}")
-
-
-## START ##
-cd "${SCRIPT_DIR}"
-mv -fv "${PATH__RPM}" ./
-alien --scripts --verbose --keep-version --single "${FILE__RPM}"
-rm -rf "${FILE__RPM}"
-cd apache-ignite-*
-fakeroot debian/rules binary
+source_user_group
diff --git a/packaging/deb/build.sh b/packaging/linux/rpm/postUninstall.sh
similarity index 63%
copy from packaging/deb/build.sh
copy to packaging/linux/rpm/postUninstall.sh
index 8fdb08c459..d20048a420 100644
--- a/packaging/deb/build.sh
+++ b/packaging/linux/rpm/postUninstall.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements. See the NOTICE file distributed with
@@ -16,19 +16,8 @@
 # limitations under the License.
 #
 
-set -o nounset; set -o errexit; set -o pipefail; set -o errtrace; set -o functrace
-
-
-## VARS ##
-SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
-PATH__RPM="${1}"
-FILE__RPM=$(basename "${PATH__RPM}")
-
-
-## START ##
-cd "${SCRIPT_DIR}"
-mv -fv "${PATH__RPM}" ./
-alien --scripts --verbose --keep-version --single "${FILE__RPM}"
-rm -rf "${FILE__RPM}"
-cd apache-ignite-*
-fakeroot debian/rules binary
+if [ "$1" -eq 0 ]; then
+    post_uninstall_remove
+elif [ "$1" -eq 1 ]; then
+    post_uninstall_upgrade
+fi
diff --git a/packaging/deb/build.sh b/packaging/linux/rpm/preUninstall.sh
similarity index 63%
copy from packaging/deb/build.sh
copy to packaging/linux/rpm/preUninstall.sh
index 8fdb08c459..db6d685e90 100644
--- a/packaging/deb/build.sh
+++ b/packaging/linux/rpm/preUninstall.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements. See the NOTICE file distributed with
@@ -16,19 +16,6 @@
 # limitations under the License.
 #
 
-set -o nounset; set -o errexit; set -o pipefail; set -o errtrace; set -o functrace
-
-
-## VARS ##
-SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
-PATH__RPM="${1}"
-FILE__RPM=$(basename "${PATH__RPM}")
-
-
-## START ##
-cd "${SCRIPT_DIR}"
-mv -fv "${PATH__RPM}" ./
-alien --scripts --verbose --keep-version --single "${FILE__RPM}"
-rm -rf "${FILE__RPM}"
-cd apache-ignite-*
-fakeroot debian/rules binary
+if [ "$1" -eq 0 ]; then
+  pre_uninstall
+fi
diff --git a/packaging/deb/build.sh b/packaging/linux/service/ignite3db.conf
similarity index 62%
copy from packaging/deb/build.sh
copy to packaging/linux/service/ignite3db.conf
index 8fdb08c459..fd8b3379e6 100644
--- a/packaging/deb/build.sh
+++ b/packaging/linux/service/ignite3db.conf
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements. See the NOTICE file distributed with
@@ -16,19 +15,22 @@
 # limitations under the License.
 #
 
-set -o nounset; set -o errexit; set -o pipefail; set -o errtrace; set -o functrace
+description "Apache Ignite is a distributed database for high-performance computing with in-memory speed"
+author      "Apache"
 
+start on filesystem or runlevel [345]
+stop on shutdown
 
-## VARS ##
-SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
-PATH__RPM="${1}"
-FILE__RPM=$(basename "${PATH__RPM}")
+respawn
+respawn limit 5 60
 
+script
+    . '@CONF_DIR@/vars.env'
+    echo $$ > '@PID_DIR@/@PRODUCT_NAME@.pid'
+    exec su -s /bin/sh -c 'cd @INSTALL_DIR@;
+        exec "$0" "$@"' "${USERNAME}" -- '@INSTALL_DIR@/start.sh' "$1"
+end script
 
-## START ##
-cd "${SCRIPT_DIR}"
-mv -fv "${PATH__RPM}" ./
-alien --scripts --verbose --keep-version --single "${FILE__RPM}"
-rm -rf "${FILE__RPM}"
-cd apache-ignite-*
-fakeroot debian/rules binary
+post-stop script
+    rm '@PID_DIR@/@PRODUCT_NAME@.pid'
+end script
diff --git a/packaging/deb/build.sh b/packaging/linux/service/ignite3db.service
similarity index 63%
copy from packaging/deb/build.sh
copy to packaging/linux/service/ignite3db.service
index 8fdb08c459..928398e589 100644
--- a/packaging/deb/build.sh
+++ b/packaging/linux/service/ignite3db.service
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements. See the NOTICE file distributed with
@@ -16,19 +15,20 @@
 # limitations under the License.
 #
 
-set -o nounset; set -o errexit; set -o pipefail; set -o errtrace; set -o functrace
+[Unit]
+Description=Apache Ignite is a distributed database for high-performance computing with in-memory speed
 
+[Service]
+User=@USERNAME@
+Group=@GROUPNAME@
+WorkingDirectory=@INSTALL_DIR@
+ExecStart=@INSTALL_DIR@/start.sh %i
+SuccessExitStatus=143
+Type=simple
+Restart=on-failure
+RestartSec=5
+StartLimitBurst=5
+StartLimitInterval=60
 
-## VARS ##
-SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
-PATH__RPM="${1}"
-FILE__RPM=$(basename "${PATH__RPM}")
-
-
-## START ##
-cd "${SCRIPT_DIR}"
-mv -fv "${PATH__RPM}" ./
-alien --scripts --verbose --keep-version --single "${FILE__RPM}"
-rm -rf "${FILE__RPM}"
-cd apache-ignite-*
-fakeroot debian/rules binary
+[Install]
+WantedBy=multi-user.target
diff --git a/packaging/deb/build.sh b/packaging/linux/service/vars.env
similarity index 63%
copy from packaging/deb/build.sh
copy to packaging/linux/service/vars.env
index 8fdb08c459..094eb5d30c 100644
--- a/packaging/deb/build.sh
+++ b/packaging/linux/service/vars.env
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements. See the NOTICE file distributed with
@@ -16,19 +15,18 @@
 # limitations under the License.
 #
 
-set -o nounset; set -o errexit; set -o pipefail; set -o errtrace; set -o functrace
+#Run props
+NODE_NAME=node1
+WORK_DIR=@IGNITE_WORK_DIR@
+CONFIG_FILE=@CONF_DIR@/@IGNITE_CONF_FILE@
 
-
-## VARS ##
-SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
-PATH__RPM="${1}"
-FILE__RPM=$(basename "${PATH__RPM}")
-
-
-## START ##
-cd "${SCRIPT_DIR}"
-mv -fv "${PATH__RPM}" ./
-alien --scripts --verbose --keep-version --single "${FILE__RPM}"
-rm -rf "${FILE__RPM}"
-cd apache-ignite-*
-fakeroot debian/rules binary
+#JVM props
+JVM_MAX_MEM="16384m"
+JVM_MIN_MEM="16384m"
+JVM_GC="G1GC"
+JVM_G1HeapRegionSize="32M"
+JVM_GC_LOG_NAME="gc.log.$(date -u +%Y%m%d_%H%M%S)"
+JVM_GC_LOG_SIZE="104857600"
+JVM_GC_NUM_LOGS="10"
+##For any additional users settings
+IGNITE3_EXTRA_JVM_ARGS=
diff --git a/packaging/linux/start.sh b/packaging/linux/start.sh
new file mode 100644
index 0000000000..c9d17b354f
--- /dev/null
+++ b/packaging/linux/start.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+. @CONF_DIR@/@VARS_FILE_NAME@
+
+CMD="java \
+--add-opens java.base/java.lang=ALL-UNNAMED \
+--add-opens java.base/java.lang.invoke=ALL-UNNAMED \
+--add-opens java.base/java.lang.reflect=ALL-UNNAMED \
+--add-opens java.base/java.io=ALL-UNNAMED \
+--add-opens java.base/java.nio=ALL-UNNAMED \
+--add-opens java.base/java.math=ALL-UNNAMED \
+--add-opens java.base/java.util=ALL-UNNAMED \
+--add-opens java.base/jdk.internal.misc=ALL-UNNAMED \
+-Dfile.encoding=UTF-8 \
+-XX:+HeapDumpOnOutOfMemoryError \
+-XX:+ExitOnOutOfMemoryError \
+-XX:HeapDumpPath=@LOG_DIR@ \
+-Xlog:gc=info:file=@LOG_DIR@/${JVM_GC_LOG_NAME}::filecount=${JVM_GC_NUM_LOGS},filesize=${JVM_GC_LOG_SIZE} \
+-Dio.netty.tryReflectionSetAccessible=true \
+-Djava.util.logging.config.file=@CONF_DIR@/ignite.java.util.logging.properties \
+${IGNITE3_EXTRA_JVM_ARGS} \
+-classpath @INSTALL_DIR@/lib:@INSTALL_DIR@/lib/* org.apache.ignite.app.IgniteCliRunner \
+--config-path ${CONFIG_FILE} \
+--work-dir ${WORK_DIR} \
+${NODE_NAME}"
+
+${CMD}
diff --git a/packaging/rpm/.gitignore b/packaging/rpm/.gitignore
deleted file mode 100644
index 6760d345b8..0000000000
--- a/packaging/rpm/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-ignite
-*.rpm
diff --git a/packaging/rpm/Dockerfile b/packaging/rpm/Dockerfile
deleted file mode 100644
index a5a66206e0..0000000000
--- a/packaging/rpm/Dockerfile
+++ /dev/null
@@ -1,42 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You under the Apache License, Version 2.0
-#  (the "License"); you may not use this file except in compliance with
-#  the License.  You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-#  limitations under the License.
-
-
-FROM centos:8
-
-
-ENV TZ=Europe/Moscow
-ARG RPM_WORK_DIR="/tmp"
-ARG PACKAGE_VERSION
-
-
-WORKDIR ${RPM_WORK_DIR}
-
-
-# Install dependencies
-RUN yum check-update || true && \
-    yum install -y rpm-build
-
-
-# Copy build required files
-COPY apache-ignite.spec \
-     ignite \
-     build.sh \
-     ./
-
-
-# Run build
-RUN bash build.sh ${PACKAGE_VERSION}
-
diff --git a/packaging/rpm/README.md b/packaging/rpm/README.md
deleted file mode 100644
index 2fabbd9bc8..0000000000
--- a/packaging/rpm/README.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# Apache Ignite RPM package build
-
-
-### Prerequisites
-
-* **Operation system**: CentOS 8
-
-* **Packages**: rpm-build
-
-* **Assembled and prepared Apache Ignite**:
-```bash
-cd <project root>
-mvn clean package -Dmaven.test.skip
-cp -rfv modules/cli/target/ignite \
-        deliveries/rpm/
-```
-
-* **Exported package version variable**
-```bash
-cd deliveries/rpm
-PACKAGE_VERSION="$(grep -E '^\*' apache-ignite.spec | head -1 | sed -r 's|.*\s-\s||')"
-```
-
-<br/>
-
-
-### Building
-Run build script (from RPM build directory):
-```bash
-bash build.sh "${PACKAGE_VERSION}"
-```
-Built RPM package will be in RPM build directory
-
-<br/>
-
-### Building in Docker
-Run from RPM build directory:
-```bash
-
-docker build . --pull \
-               --build-arg PACKAGE_VERSION="${PACKAGE_VERSION}" \
-               -t apache-ignite-rpm:${PACKAGE_VERSION}
-docker run --rm \
-           --entrypoint \
-           cat apache-ignite-rpm:${PACKAGE_VERSION} /tmp/apache-ignite-${PACKAGE_VERSION}.noarch.rpm > apache-ignite-${PACKAGE_VERSION}.noarch.rpm
-```
-Built RPM package will be in RPM build directory
-
diff --git a/packaging/rpm/apache-ignite.spec b/packaging/rpm/apache-ignite.spec
deleted file mode 100644
index 3574569efc..0000000000
--- a/packaging/rpm/apache-ignite.spec
+++ /dev/null
@@ -1,235 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You under the Apache License, Version 2.0
-#  (the "License"); you may not use this file except in compliance with
-#  the License.  You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-#  limitations under the License.
-
-%define __jar_repack %{nil}
-%define user ignite
-%define _libdir /usr/lib
-%define _log %{_var}/log
-%define _sharedstatedir /var/lib
-
-
-
-#-------------------------------------------------------------------------------
-#
-# Packages' descriptions
-#
-Name:             apache-ignite
-Version:          3.0.0
-Release:          1
-Summary:          Apache Ignite In-Memory Computing, Database and Caching Platform
-Group:            Development/System
-License:          ASL 2.0
-URL:              https://ignite.apache.org
-Requires:         java-11 which
-Requires(pre):    shadow-utils
-Provides:         %{name}
-AutoReq:          no
-AutoProv:         no
-BuildArch:        noarch
-%description
-Apache Ignite is a distributed database for high-performance computing with in-memory speed.
-
-
-
-%pre
-#-------------------------------------------------------------------------------
-#
-# Preinstall scripts
-# $1 can be:
-#     1 - Initial installation
-#     2 - Upgrade
-#
-echo "Preinstall mode: '$1'"
-case $1 in
-    1|install)
-        # Add service user
-        /usr/sbin/useradd -r -M -d /usr/share/apache-ignite -s /bin/bash ignite
-        ;;
-esac
-
-
-
-%post
-#-------------------------------------------------------------------------------
-#
-# Postinstall scripts
-# $1 can be:
-#     1 - Initial installation
-#     2 - Upgrade
-#
-
-echoUpgradeMessage () {
-    echo "======================================================================================================="
-    echo "  WARNING: Updating Apache Ignite's cluster version requires updating every node before starting grid  "
-    echo "======================================================================================================="
-}
-
-case $1 in
-    1|configure)
-        # DEB postinst upgrade
-        if [ ! -z "${2}" ]; then
-            echoUpgradeMessage
-        fi
-
-        # Set firewall rules
-        if [[ "$(type firewall-cmd &>/dev/null; echo $?)" -eq 0 && "$(systemctl is-active firewalld 2>/dev/null)" == "active" ]]
-        then
-            for port in s d
-            do
-                ${firewallCmd} -p tcp -m multiport --${port}ports 11211:11220,47500:47509,47100:47109 -j ACCEPT &>/dev/null
-                ${firewallCmd} -p udp -m multiport --${port}ports 47400:47409 -j ACCEPT &>/dev/null
-            done
-            ${firewallCmd} -m pkttype --pkt-type multicast -j ACCEPT &>/dev/null
-
-            systemctl restart firewalld
-        fi
-        ;;
-    2)
-        # RPM postinst upgrade
-        echoUpgradeMessage
-esac
-
-# Copy and configure skel
-cp -rfv /etc/skel/.bash* %{_datadir}/%{name} 
-echo "cd ~" >> %{_datadir}/%{name}/.bashrc
-
-# Change ownership for work and log directories (yum resets permissions on upgrade nevertheless)
-chown -R %{user}:%{user} %{_datadir}/%{name} \
-                             %{_sharedstatedir}/%{name} \
-                             %{_log}/%{name} \
-                             %{_bindir}/ignite
-
-
-
-%preun
-#-------------------------------------------------------------------------------
-#
-# Pre-uninstall scripts
-# $1 can be:
-#     0 - Uninstallation
-#     1 - Upgrade
-#
-
-stopIgniteNodes () {
-    echo "Stopping ignite nodes"
-}
-
-case $1 in
-    0|remove)
-        # Stop all nodes (both service and standalone)
-        stopIgniteNodes
-        ;;
-    1|upgrade)
-        # Stop all nodes (both service and standalone)
-        echo "=================================================================================="
-        echo "  WARNING: All running Apache Ignite's nodes will be stopped upon package update  "
-        echo "=================================================================================="
-        stopIgniteNodes
-        ;;
-esac
-
-
-
-%postun
-#-------------------------------------------------------------------------------
-#
-# Post-uninstall scripts
-# $1 can be:
-#     0 - Uninstallation
-#     1 - Upgrade
-#
-
-case $1 in
-    0|remove)
-        # Remove user
-        userdel %{user}
-
-        # Remove service PID directory
-        rm -rfv /var/run/%{name} \
-                /usr/share/${name}
-
-        # Remove firewalld rules if firewalld is installed and running
-        if [[ "$(type firewall-cmd &>/dev/null; echo $?)" -eq 0 && "$(systemctl is-active firewalld)" == "active" ]]
-        then
-            for port in s d
-            do
-                firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 0 -p tcp -m multiport --${port}ports 11211:11220,47500:47509,47100:47109 -j ACCEPT &>/dev/null
-                firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 0 -p udp -m multiport --${port}ports 47400:47409 -j ACCEPT &>/dev/null
-            done
-            firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 0 -m pkttype --pkt-type multicast -j ACCEPT &>/dev/null
-            systemctl restart firewalld
-        fi
-        ;;
-    1|upgrade)
-        :
-        ;;
-esac
-
-
-
-%install
-#-------------------------------------------------------------------------------
-#
-# Prepare packages' layout
-#
-
-# Create base directory structure
-mkdir -pv %{buildroot}%{_datadir}/%{name}
-mkdir -pv %{buildroot}%{_libdir}/%{name}
-mkdir -pv %{buildroot}%{_log}/%{name}
-mkdir -pv %{buildroot}%{_sharedstatedir}/%{name}
-mkdir -pv %{buildroot}%{_sysconfdir}/%{name}
-mkdir -pv %{buildroot}%{_bindir}
-
-# Install binary
-cp -rfv ignite %{buildroot}%{_bindir}
-chmod +x %{buildroot}%{_bindir}/ignite
-
-# Install ignite-cli configuraton file
-touch %{buildroot}%{_sysconfdir}/%{name}/cfg
-echo "bin=%{_libdir}/%{name}" >> %{buildroot}%{_sysconfdir}/%{name}/cfg
-echo "work=%{_sharedstatedir}/%{name}" >> %{buildroot}%{_sysconfdir}/%{name}/cfg
-echo "config=%{_sysconfdir}/%{name}" >> %{buildroot}%{_sysconfdir}/%{name}/cfg
-echo "log=%{_log}/%{name}" >> %{buildroot}%{_sysconfdir}/%{name}/cfg
-ln -sfv %{_sysconfdir}/%{name}/cfg %{buildroot}%{_datadir}/%{name}/.ignitecfg
-
-
-
-%files
-#-------------------------------------------------------------------------------
-#
-# Package file list check
-#
-
-%dir %{_datadir}/%{name}
-%dir %{_sysconfdir}/%{name}
-%dir %{_sharedstatedir}/%{name}
-%dir %{_log}/%{name}
-
-%{_libdir}/%{name}
-%{_bindir}/ignite
-%{_sysconfdir}/%{name}
-%{_datadir}/%{name}/.ignitecfg
-
-
-%changelog
-#-------------------------------------------------------------------------------
-#
-# Changelog
-#
-
-* Fri Dec 11 2020 Petr Ivanov <mr...@gmail.com> - 3.0.0-1
-- Apache Ignite 3 initial release
-
diff --git a/packaging/rpm/build.sh b/packaging/rpm/build.sh
deleted file mode 100644
index f4e8d11c62..0000000000
--- a/packaging/rpm/build.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-set -o nounset; set -o errexit; set -o pipefail; set -o errtrace; set -o functrace
-
-
-## VARS ##
-PACKAGE_VERSION="${1}"
-RPM_WORK_DIR="/tmp/apache-ignite-rpm"
-SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
-
-
-## START ##
-cd ${SCRIPT_DIR}
-mkdir -pv ${RPM_WORK_DIR}/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
-cp -rfv ignite ${RPM_WORK_DIR}/BUILD/
-cp -rfv apache-ignite.spec ${RPM_WORK_DIR}/SPECS/
-sed -r "4 i if [ \"\$(whoami)\" != \"ignite\" ]; then echo \"Ignite CLI can only be run by 'ignite' user.\"; echo \"Swith user to ignite by executing '(sudo) su ignite'\"; exit 1; fi" \
-    -i ${RPM_WORK_DIR}/BUILD/ignite
-rpmbuild -bb \
-         --define "_topdir ${RPM_WORK_DIR}" \
-         ${RPM_WORK_DIR}/SPECS/apache-ignite.spec
-cp -rfv ${RPM_WORK_DIR}/RPMS/noarch/apache-ignite-${PACKAGE_VERSION}.noarch.rpm ./
-
diff --git a/packaging/scripts/bootstrap-config b/packaging/scripts/bootstrap-config
deleted file mode 100644
index e9030c15f2..0000000000
--- a/packaging/scripts/bootstrap-config
+++ /dev/null
@@ -1,10 +0,0 @@
-NODE_NAME=defaultNode
-
-WORK_PATH=$IGNITE_HOME/work
-LOGS_PATH=$IGNITE_HOME/log
-LIBS_PATH=$IGNITE_HOME/lib
-BIN_PATH=$IGNITE_HOME/bin
-CONFIG_PATH=$IGNITE_HOME/etc
-
-IGNITE_CONFIG_FILE=$CONFIG_PATH/ignite-config.conf
-LOG_OUT_FILE=$LOGS_PATH/${NODE_NAME}.log
diff --git a/packaging/deb/build.sh b/packaging/zip/bootstrap-config
similarity index 63%
copy from packaging/deb/build.sh
copy to packaging/zip/bootstrap-config
index 8fdb08c459..2c224ff62e 100644
--- a/packaging/deb/build.sh
+++ b/packaging/zip/bootstrap-config
@@ -1,4 +1,3 @@
-#!/usr/bin/env bash
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements. See the NOTICE file distributed with
@@ -16,19 +15,13 @@
 # limitations under the License.
 #
 
-set -o nounset; set -o errexit; set -o pipefail; set -o errtrace; set -o functrace
+NODE_NAME=defaultNode
 
+WORK_PATH=$IGNITE_HOME/work
+LOGS_PATH=$IGNITE_HOME/log
+LIBS_PATH=$IGNITE_HOME/lib
+BIN_PATH=$IGNITE_HOME/bin
+CONFIG_PATH=$IGNITE_HOME/etc
 
-## VARS ##
-SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
-PATH__RPM="${1}"
-FILE__RPM=$(basename "${PATH__RPM}")
-
-
-## START ##
-cd "${SCRIPT_DIR}"
-mv -fv "${PATH__RPM}" ./
-alien --scripts --verbose --keep-version --single "${FILE__RPM}"
-rm -rf "${FILE__RPM}"
-cd apache-ignite-*
-fakeroot debian/rules binary
+IGNITE_CONFIG_FILE=$CONFIG_PATH/ignite-config.conf
+LOG_OUT_FILE=$LOGS_PATH/${NODE_NAME}.log
diff --git a/packaging/zip/start.sh b/packaging/zip/start.sh
new file mode 100644
index 0000000000..51f33b204d
--- /dev/null
+++ b/packaging/zip/start.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+############# STAGE 1: SETUP ENV ###############
+
+# LOAD VARIABLES
+. $IGNITE_HOME/config/bootstrap-config
+
+
+
+############# STAGE 2: BUILD CMD ###############
+
+# FORM A START COMMAND
+CMD="$JAVA_HOME/bin/java \
+--add-opens java.base/java.lang=ALL-UNNAMED \
+--add-opens java.base/java.lang.invoke=ALL-UNNAMED \
+--add-opens java.base/java.lang.reflect=ALL-UNNAMED \
+--add-opens java.base/java.io=ALL-UNNAMED \
+--add-opens java.base/java.nio=ALL-UNNAMED \
+--add-opens java.base/java.math=ALL-UNNAMED \
+--add-opens java.base/java.util=ALL-UNNAMED \
+--add-opens java.base/jdk.internal.misc=ALL-UNNAMED \
+-Dio.netty.tryReflectionSetAccessible=true \
+-Djava.util.logging.config.file=$CONFIG_PATH/ignite.java.util.logging.properties \
+-classpath $LIBS_PATH/ignite-runner.jar:$LIBS_PATH/* org.apache.ignite.app.IgniteCliRunner \
+--config-path $IGNITE_CONFIG_FILE \
+--work-dir $WORK_PATH \
+$NODE_NAME"
+
+
+
+############# STAGE 3: RUN CMD, REPORT ###############
+
+# RUN CMD
+exec ${CMD} >>${LOG_OUT_FILE:-/dev/null} 2>&1 < /dev/null & jobs -p > pid
+
+# TODO: SAVE PROCESS PID AND LINK IT WITH THE NODE NAME
+
+# TODO: WAIT FOR NODE IS STARTED
+
+# TODO: REPORT SUCCESS OR FAILURE
+
+# TODO: SHOW HOW TO CONNECT TO THE STARTED NODE
+
diff --git a/packaging/deb/build.sh b/packaging/zip/stop.sh
similarity index 100%
rename from packaging/deb/build.sh
rename to packaging/zip/stop.sh