PRE-REQUISITOS
Primero debemos actualizar el sistema con los comandos update y upgrade en la terminal de Ubuntu.
$ sudo apt update $ sudo apt upgrade
Una vez actualizado, debemos instalar python 2.7, ya que Ubuntu 18 ya no lo tiene integrado desde la instalación, sino que vienen precargada sólo la versión 3. Aún así, sigue estando en la lista de paquetes de Ubuntu así que usamos el comando:
$ sudo apt-get install python2 .7
NodeJs
La versión actual de NodeJs no es completamente compatible con el código fuente de Thingsboard, así que es necesario recurrir a instalar desde fuente la versión 10.15.3 descargando el tarball de dicha versión e instalarla manualmente.
Entre los prerequisitos para instalar NodeJs están gcc, g++ y make, por lo que hay que instalarlos antes que NodeJs para evitar complicaciones. También existen en el servidor de paquetes de Ubuntu:
$ sudo apt-get install gcc g++ make
Ahora ya podemos construir e instalar NodeJs 15. Descomprimimos el tarball con:
$ tar xvzf <tarballName>.gz
Cambiamos la terminal al directorio resultante de la descompresión y configuramos la instalación:
$ ./configure
Una vez terminado el proceso, construimos el paquete de instalación con:
$ make
El paso anterior podría tomar algunos minutos en finalizar. Pero una vez terminado y, si no hubo ningún error, procedemos a instalar el paquete:
$ sudo make install
Herramientas para Thingsboard
Thingsboard está construido con Java, como un proyecto Maven, así que es necesario tener ambos instalados en el sistema operativo.
Para el caso de Java, la versión requerida es la 8 y está en la lista de paquetes de Ubuntu:
$ sudo apt install openjdk-8-jdk
Para Maven, la versión requerida es la 3.1.0 ó superior. En la lista de paquetes de Ubuntu al momento de realizar esta redacción es 3.6, así que funciona bien.
$ sudo apt-get install maven
Si ya has instalado antes una versión anterior de Java puede que Maven reconfigure el path para que el sistema opere con la versión 7, así que es necesario cambiarlo para que la versión por default sea la 8, esto se puede realizar con el siguiente comando:
$ sudo update-alternatives --config java
También es necesario instalar libpng:
$ -devsudo apt-get install libpng
Instalación del Código Fuente
Primero debemos clonar el repositorio git de Thingsboard con el comando git, que ya viene preinstalado en esta versión de Ubuntu:
$ https://github.com/thingsboard/thingsboard.gitgit clone
Cambiamos al directorio creado luego de clonar el repositorio y cambiamos a la rama de la versión 2.4 de Thingsboard:
$ git checkout release-2.4
Y dentro del mismo directorio usamos:
$ npm install pkg
Antes de realizar la instalación, debemos configurar Maven para que trabaje con el protocolo seguro de sus repositorios, por alguna razón, al momento de la redacción, el paquete que se instala desde apt viene con la configuración errónea, así que debemos agregar un perfil en el archivo xml de configuración de Maven entre las etiquetas <profiles></profiles> del mimso:
<profile>
<id>maven-https</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
Usualmente el directorio raíz de Maven se encuentra /usr/share/maven/, y el archivo estará en .../maven/conf/settings.xml.
De no ser así, el comando version de mvn arrojará el directorio raíz.
También es necesario cambiar la versión de npm que usa la interfaz gráfica de usuario para su instalación, esto se realiza modificando el archivo pom.xml que se encuentra en el directorio /ui de thingsboard. Debería verse así:
<npmVersion>3.10.8</npmVersion>
Ahora procedemos a instalar el código fuente con mvn:
$ sudo mvn clean install
Si ocurre un error de acceso denegado a los repositorios de gradle, debemos cambiar el archivo pom temporal creado por la instalación. Usualmente se encuentra dentro de la carpeta /root/ si se ejecuta con sudo o permisos de superusuario, así que dicho archivo se encontraría en
.m2/repository/org/fortasoft/gradle-maven-plugin/1.0.8/gradle-maven-plugin-1.0.8.pom /root/
En la etiqueta <url> de la sección de repositorios hay que agregar una s a http, quedando esto:
<url>https://repo.gradle.org/gradle/libs-releases-local/</url>
Una vez realizada la modificación, debemos volver a ejecutar el comando install de mvn, pero ahora sin usar la opción clean, para evitar que borre el archivo que acabamos de modificar:
$ sudo mvn install
Y listo, el código fuente debería estar listo para importarlo a nuestro IDE preferido.
Fuentes:
https://github.com/thingsboard/thingsboard/issues/2341
https://thingsboard.io/docs/user-guide/contribution/how-to-contribute/
https://github.com/thingsboard/thingsboard/issues/1923
https://github.com/thingsboard/thingsboard/issues/1864
https://stackoverflow.com/questions/59763531/maven-dependencies-are-failing-with-a-501-error
https://stackoverflow.com/questions/25393298/what-is-the-correct-way-of-forcing-maven-to-use-https-for-maven-central/25411658#25411658
https://github.com/thingsboard/thingsboard/issues/1335
https://computingforgeeks.com/installing-node-js-10-lts-on-ubuntu-18-04-16-04-debian-9/
https://nodejs.org/download/release/v10.15.3/