lunes, 9 de marzo de 2020

Instalar Código Fuente de Thingsboard

Realizado en un Ubuntu Server 18.04.

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:

$ sudo apt-get install libpng-dev

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:

$ git clone https://github.com/thingsboard/thingsboard.git

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

/root/.m2/repository/org/fortasoft/gradle-maven-plugin/1.0.8/gradle-maven-plugin-1.0.8.pom

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/

No hay comentarios:

Publicar un comentario