diff --git a/CMakeLists.txt b/CMakeLists.txt
index 44620c53737392acc449add0b52c05d1ab694c86..90d73756054fabb930557f9ff632c46c57351dc7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -54,7 +54,11 @@ SET( CPACK_PACKAGE_VERSION_MAJOR 2)
 SET( CPACK_PACKAGE_VERSION_MINOR 11)
 SET( CPACK_PACKAGE_VERSION_PATCH 1)
 
-SET( CPACK_SYSTEM_NAME "debian-10.0-amd64")
+SET( CPACK_SYSTEM_TYPE "debian")
+SET( CPACK_SYSTEM_VERSION "10.0")
+SET( CPACK_SYSTEM_ARCH "amd64")
+SET( CPACK_SYSTEM_CODENAME "buster")
+SET( CPACK_SYSTEM_NAME "${CPACK_SYSTEM_TYPE}-${CPACK_SYSTEM_VERSION}-${CPACK_SYSTEM_ARCH}-${CPACK_SYSTEM_CODENAME}")
 SET( CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-${CPACK_PACKAGE_VERSION_PATCH}")
 SET( CPACK_DEBIAN_PACKAGE_MAINTAINER "Dmitriy Gerasimov <naeper@demlabs.net>" )
 SET( CPACK_DEBIAN_PACKAGE_DESCRIPTION_SUMMARY "CellFrame Node software https://cellframe.net" )
diff --git a/prod_build/general/conf/status b/prod_build/general/conf/status
index ec51dbab4d9aec34b4975de26716109730b30df6..5082e1d8aae5d8afc0df90903a6ad9e1bddd14a1 100644
--- a/prod_build/general/conf/status
+++ b/prod_build/general/conf/status
@@ -1 +1 @@
-IMPLEMENTED="linux/debian"
+IMPLEMENTED="linux/debian linux/ubuntu"
diff --git a/prod_build/linux/debian/scripts/compile_and_pack.sh b/prod_build/linux/debian/scripts/compile_and_pack.sh
index e01aa41b66143151714e98ef0faf85a956586fb0..2aa75355d06394c6a62addd41759734a1b95956a 100755
--- a/prod_build/linux/debian/scripts/compile_and_pack.sh
+++ b/prod_build/linux/debian/scripts/compile_and_pack.sh
@@ -16,17 +16,30 @@
 # }
 
 
+substitute_pkgname_postfix() {
+
+	#CODENAME=$(lsb_release -a | grep Codename | cut -f2)
+	#VERSION=$(lsb_release -a | grep Version | cut -f2)
+	#DISTRO_TYPE=$(lsb_release -a | grep Distributor | cut -f2)
+set -x
+	for variable in $(lsb_release -a 2>/dev/null | sed 's/\t//g' | sed 's/ //g' | sed 's/\:/\=/g'); do
+		echo "variable is $variable"
+		export $variable
+	done
+	sed -i "/ CPACK_SYSTEM_TYPE/s/\".*\"/\"$DistributorID\"/" CMakeLists.txt
+	sed -i "/ CPACK_SYSTEM_VERSION/s/\".*\"/\"$Release\"/" CMakeLists.txt
+	sed -i "/ CPACK_SYSTEM_CODENAME/s/\".*\"/\"$Codename\"/" CMakeLists.txt
+#	sed -i "/ CPACK_SYSTEM_ARCH/s/\".*\"/\"$Codename\"/" CMakeLists.txt No need to replace anything while we're on amd64 arch only.
+	export -n "DistributorID"
+	export -n "Release"
+	export -n "Codename"
+	export -n "Description"
+set +x
+}
 
-### dpkg-buildpackage -J -us --changes-option=--build=any -uc && mkdir -p build && mv ../*.deb build/ && make distclean || error=$? && make distclean && $(error_explainer $error) #2DO: Learn how to sign up the package.
 
-# if [ "$1" == "--static" ]; then
- #	export $QT_SELECT="default" #Returning back the shared library link
-  #fi
-
-
-#cmake -S . -B build && make -C build && cpack -B build
 pwd
-mkdir -p build && cd build && cmake ../ && make -j3 && cpack && cd ..
+substitute_pkgname_postfix && mkdir -p build && cd build && cmake ../ && make -j3 && cpack && cd ..
 
 ### touch /etc/apt/sources.list.d/demlabs.list deb https://debian.pub.demlabs.net/ bionic main universe multiverse
 
diff --git a/prod_build/linux/ubuntu/conf/dependencies b/prod_build/linux/ubuntu/conf/dependencies
new file mode 100644
index 0000000000000000000000000000000000000000..1f99bdcdd0b4e1c7ae357f2abc90079659a9a323
--- /dev/null
+++ b/prod_build/linux/ubuntu/conf/dependencies
@@ -0,0 +1 @@
+PKG_DEPS="cmake libjson-c-dev libsqlite3-dev libmemcached-dev libev-dev libmagic-dev libcurl4-gnutls-dev libldb-dev libtalloc-dev libtevent-dev"
diff --git a/prod_build/linux/ubuntu/conf/publish b/prod_build/linux/ubuntu/conf/publish
new file mode 100644
index 0000000000000000000000000000000000000000..6e09e69a70fe5128bf8e666642054bef7528c14e
--- /dev/null
+++ b/prod_build/linux/ubuntu/conf/publish
@@ -0,0 +1,8 @@
+HOST_DISTR_VERSIONS="bionic"
+HOST_ARCH_VERSIONS="amd64"
+PACKAGE_PATH=builds/deb/
+REPO_DIR_SRC=/var/tmp/repository
+DISTR_CODENAME="bionic"
+REPO_ADDR=debian.pub.demlabs.net
+REPO_DIR=/var/www/html/debian.pub.demlabs.net
+DISTR_COMPONENT=main
diff --git a/prod_build/linux/ubuntu/essentials b/prod_build/linux/ubuntu/essentials
new file mode 120000
index 0000000000000000000000000000000000000000..ff903c9ce392d694f2b5d496193d6bb591a7941e
--- /dev/null
+++ b/prod_build/linux/ubuntu/essentials
@@ -0,0 +1 @@
+../debian/essentials
\ No newline at end of file
diff --git a/prod_build/linux/ubuntu/scripts/build.sh b/prod_build/linux/ubuntu/scripts/build.sh
new file mode 120000
index 0000000000000000000000000000000000000000..53fcd46b251845f60ef6a231ff52574efafdcf55
--- /dev/null
+++ b/prod_build/linux/ubuntu/scripts/build.sh
@@ -0,0 +1 @@
+../../debian/scripts/build.sh
\ No newline at end of file
diff --git a/prod_build/linux/ubuntu/scripts/chroot b/prod_build/linux/ubuntu/scripts/chroot
new file mode 120000
index 0000000000000000000000000000000000000000..688a8bfe7ca32505af15fdaa047a41cbe86f7689
--- /dev/null
+++ b/prod_build/linux/ubuntu/scripts/chroot
@@ -0,0 +1 @@
+../../debian/scripts/chroot
\ No newline at end of file
diff --git a/prod_build/linux/ubuntu/scripts/cleanup.sh b/prod_build/linux/ubuntu/scripts/cleanup.sh
new file mode 120000
index 0000000000000000000000000000000000000000..93a84bf65220e23f445d63411f57a3e969028b09
--- /dev/null
+++ b/prod_build/linux/ubuntu/scripts/cleanup.sh
@@ -0,0 +1 @@
+../../debian/scripts/cleanup.sh
\ No newline at end of file
diff --git a/prod_build/linux/ubuntu/scripts/compile.sh b/prod_build/linux/ubuntu/scripts/compile.sh
deleted file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/prod_build/linux/ubuntu/scripts/compile_and_pack.sh b/prod_build/linux/ubuntu/scripts/compile_and_pack.sh
new file mode 120000
index 0000000000000000000000000000000000000000..ef456c37bf9f514218eeb757410ef6908a266cc5
--- /dev/null
+++ b/prod_build/linux/ubuntu/scripts/compile_and_pack.sh
@@ -0,0 +1 @@
+../../debian/scripts/compile_and_pack.sh
\ No newline at end of file
diff --git a/prod_build/linux/ubuntu/scripts/deploy.sh b/prod_build/linux/ubuntu/scripts/deploy.sh
deleted file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/prod_build/linux/ubuntu/scripts/deploy.sh b/prod_build/linux/ubuntu/scripts/deploy.sh
new file mode 120000
index 0000000000000000000000000000000000000000..bbb85a115dde05f9829bbaa9941e767b1890521f
--- /dev/null
+++ b/prod_build/linux/ubuntu/scripts/deploy.sh
@@ -0,0 +1 @@
+../../debian/scripts/deploy.sh
\ No newline at end of file
diff --git a/prod_build/linux/ubuntu/scripts/install_test.sh b/prod_build/linux/ubuntu/scripts/install_test.sh
new file mode 120000
index 0000000000000000000000000000000000000000..70188470343dbbc9278c66b95259c759c0257fc8
--- /dev/null
+++ b/prod_build/linux/ubuntu/scripts/install_test.sh
@@ -0,0 +1 @@
+../../debian/scripts/install_test.sh
\ No newline at end of file
diff --git a/prod_build/linux/ubuntu/scripts/pack.sh b/prod_build/linux/ubuntu/scripts/pack.sh
deleted file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/prod_build/linux/ubuntu/scripts/pack.sh b/prod_build/linux/ubuntu/scripts/pack.sh
new file mode 120000
index 0000000000000000000000000000000000000000..92454e5f5c8f22e1feae9dd7b2cf340acfa42779
--- /dev/null
+++ b/prod_build/linux/ubuntu/scripts/pack.sh
@@ -0,0 +1 @@
+../../debian/scripts/pack.sh
\ No newline at end of file
diff --git a/prod_build/linux/ubuntu/scripts/post-build.sh b/prod_build/linux/ubuntu/scripts/post-build.sh
new file mode 120000
index 0000000000000000000000000000000000000000..bd51497fa602bf52011607b7d339edabc4f9dd73
--- /dev/null
+++ b/prod_build/linux/ubuntu/scripts/post-build.sh
@@ -0,0 +1 @@
+../../debian/scripts/post-build.sh
\ No newline at end of file
diff --git a/prod_build/linux/ubuntu/scripts/pre-build.sh b/prod_build/linux/ubuntu/scripts/pre-build.sh
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f7ab42e9805689a6e64071914ffefbcd198c50af 100755
--- a/prod_build/linux/ubuntu/scripts/pre-build.sh
+++ b/prod_build/linux/ubuntu/scripts/pre-build.sh
@@ -0,0 +1,134 @@
+#!/bin/bash
+
+#export_variables() {
+
+#IFS=$'\n'
+#for variable in $(cat prod_build/linux/ubuntu/conf/*); do
+#	echo "$variable"
+#	export $(echo "$variable" | sed 's/\"//g')
+#done
+
+#}
+
+
+#installing required dependencies
+
+check_packages() {
+
+	IFS=" "
+	local PKG_DEPPIES=$(echo $PKG_DEPS | sed 's/\"//g')
+	for element in "$PKG_DEPPIES"; do
+		echo "[DEBUGGA] Checking if $element is installed"
+		if ! dpkg-query -s $element; then 
+			echo "[WRN] Package $element is not installed. Starting installation"
+			return 1
+		fi
+	done
+	return 0
+
+}
+
+install_dependencies() {
+
+	if check_packages >> /dev/null; then
+		echo "[INF] All required packages are installed"
+	else
+		echo ""
+		local PKG_DEPPIES=$(echo $PKG_DEPS | sed 's/\"//g')
+		echo "[DEBUGGA] Attempting to install $PKG_DEPPIES"
+		if sudo /usr/bin/apt-get install -y $PKG_DEPPIES ; then
+			echo ""
+			echo "[INF] Packages were installed successfully"
+		else
+			echo "[ERR] can\'t install required packages. Please, check your package manager"
+			echo "Aborting"
+			exit 1
+		fi
+	fi
+	return 0
+
+}
+
+#extract_version_number() {
+
+#IFS=" "
+#for entry in $VERSION_ENTRIES; do
+#	VERSION_STRING=$(echo $VERSION_STRING | sed "s/$entry/$( cat $VERSION_FILE | grep $entry | sed 's/ //g' | cut -d '=' -f2 )/") #Replacing templates with numbers
+#done
+#echo -e "project version is $VERSION_STRING"
+#
+#}
+
+#extract_gitlog_text() {
+#
+#borders=$( git log | grep -n 'commit\|Date' | head -n 3 | tail -n 2 | cut -d ':' -f1)
+#upb=$(echo $borders | cut -d $'\n' -f1)
+#dwnb=$(echo $borders | cut -d $'\n' -f2)
+#text=$(git log | head -n $( expr $dwnb - 2 ) | tail -n $( expr $dwnb - $upb - 3 ) )
+#echo $text
+#
+#}
+
+#. prod_build/general/install_dependencies
+. prod_build/general/pre-build.sh #VERSIONS and git
+export_variables "prod_build/general/conf/*"
+export_variables "prod_build/linux/ubuntu/conf/*"
+
+VERSION_STRING=$(echo $VERSION_FORMAT | sed "s/\"//g" ) #Removing quotes
+VERSION_ENTRIES=$(echo $VERSION_ENTRIES | sed "s/\"//g" )
+extract_version_number
+[ -e prod_build/linux/ubuntu/essentials/changelog ] && last_version_string=$(cat prod_build/linux/ubuntu/essentials/changelog | head -n 1 | cut -d '(' -f2 | cut -d ')' -f1)
+
+
+
+#if [ -z "$last_version_string"]; then 
+#	echo "Changelog won't be modified"
+#	exit 1;
+#fi
+
+### ideally, we need to ask whether changelog needs to be updated or not
+### is it correct? And if not, we just need to exit from this conditional construction
+### not quite. See, there is always a changelog in git. (git log). We need to maintain ubuntu/changelog on projects not built with cmake, 
+### cause information from this changelog (version) is used to write package metadata. And we had messed up for a long time because of desyncing. 
+### This is a solution. We modify the changelog only if there are updates and not on build servers. And of course if it's not cmake-based build project.
+### let's keep those comments here for a while
+NOTONBUILDSERVER=0
+gitlab-runner -v 2&>>/dev/null || NOTONBUILDSERVER=$?
+if [ $NOTONBUILDSERVER == 0 ]; then  
+	echo "[WRN] on build platform. Version won't be changed" # okay, so this echo wont be outputted as the condition is not true
+
+elif [ ! -e ubuntu/changelog ]; then  ### I guess this what's supposed to be added in order to solve the issue with the changelog?+
+	echo "[INF] Ubuntu changelog does not exist. Nothing to be done there." #I supposed it should look somehow like that.
+#makes sense
+elif [ "$last_version_string" == "$VERSION_STRING" ]; then
+	echo "[INF] Version $last_version_string is equal to $VERSION_STRING. Nothing to change"
+else
+	echo "[INF] editing the changelog"
+	text=$(extract_gitlog_text)
+	IFS=$'\n'
+	for textline in $text; do
+		dch -v $VERSION_STRING $textline
+	done
+	branch=$(git branch | grep "*" | cut -c 3- )
+	case branch in
+		"master" ) branch="stable";;
+		"develop" ) branch="testing";;
+	esac
+	dch -r --distribution "$branch" --force-distribution ignored
+	controlfile_version=$(cat prod_build/linux/ubuntu/essentials/control | grep "Standards" | cut -d ' ' -f2) #Add to control info.
+	sed -i "s/$controlfile_version/$VERSION_STRING/" prod_build/linux/ubuntu/essentials/control
+	export UPDVER=1
+fi
+
+IFS=" "
+CHROOT_PREFIX=$1
+for distr in $HOST_DISTR_VERSIONS; do #we need to install required dependencies under schroot.
+	for arch in $HOST_ARCH_VERSIONS; do
+		echo "$CHROOT_PREFIX-$distr-$arch"
+		schroot -c $CHROOT_PREFIX-$distr-$arch -- prod_build/linux/ubuntu/scripts/chroot/pre-build.sh "$PKG_DEPS" || errcode=$?
+		[[ $errcode != 0 ]] && echo "Problems with $CHROOT_PREFIX-$distr-$arch occured. You had installed it, right?"
+	done
+done
+exit 0
+
+## Maybe we do have the version required? Then we don't need to build it again. CHECK IT THERE!
diff --git a/prod_build/linux/ubuntu/scripts/test.sh b/prod_build/linux/ubuntu/scripts/test.sh
deleted file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/prod_build/linux/ubuntu/scripts/test.sh b/prod_build/linux/ubuntu/scripts/test.sh
new file mode 120000
index 0000000000000000000000000000000000000000..ebcc2fa64c269136a9e029db80b38fce615216b5
--- /dev/null
+++ b/prod_build/linux/ubuntu/scripts/test.sh
@@ -0,0 +1 @@
+../../debian/scripts/test.sh
\ No newline at end of file