Entorno de Desarrollo bajo Ubuntu 20.04 (o mayor)

© 2019 by César Arcila

Una vez se cuente con Linux Ubuntu 20.04 (o mayor) o ElementaryOS a 64bits debidamente instalado y configurado el acceso a red e internet procedemos a acondicionar el sistema e instalar herramientas (y SDK), tanto requeridas como otras que facilitan la labor de desarrollo de software, incluso para actividades complementarias (como oficina, diseño y video).

En principio, lo esencial para un entorno de desarrollo de nuestro interés sería contar con el navegador (Chrome), el editor (Visual Studio Code), el JDK (para desarrollo con Java 11) y el entorno para javascript (Node.js), y si gustas de Python debes saber que ya viene instalado en el sistema (version 2.7), lo demás se va utilizando en la medida que se requiera.

Como panorama de lo que se propone instalar de modo extendido se tiene la siguiente lista de programas con licencia amigable para su uso formal:

  1. Chrome (Navegador)
  2. Java 11 (JDK)
  3. Gradle & Maven (Gestor de Paquetes Java)
  4. Node.js (Entorno Javascript fuera del Navegador)
  5. Deno (Entorno Typescript/Javascript)
  6. MariaDB (Motor de Base de Datos)
  7. Visual Studio Code (Editor)
  8. IntelliJ IDEA CE (IDE - Community Edition)
  9. Android Studio (IDE para móviles Android)
  10. DBeaver CE (Herramienta para gestion de DB)
  11. Postman (Gestiona peticiones web - API-Rest)
  12. VirtualBox (Para máquinas virtuales)
  13. BlueGriffon (Graficador Web)
  14. Pencil (Prototipado para GUI)
  15. XMind (Graficador para Mapas Mentales)
  16. Gravit Designer (Graficador para Diseño)
  17. Green Fish Icon Editor (Editor de Iconos)
  18. LibreOffice (Paquete de Oficina)
  19. Skype (Teleconferencia o Chat)
  20. OBS Studio (Grabación de Video, para Tutoriales)
  21. Software desde tienda (Otros)

Se aclara que VirtualBox no se debería instalar si tu entorno corresponde a una máquina virtual, puesto que se usa sobre el sistema operativo de base. Así mismo, no se recomienda instalar Android Studio en una máquina virtual, ni Skype, en ese caso es preferible instalarlo en el sistema base (por ejemplo, para Windows).

Acondicionamiento del sistema

En adelante se usará una terminal de línea de comandos para interactuar con el sistema, por lo que debes abrir la aplicación respectiva.
Es conveniente revisar el estado de actualizaciones del sistema y utilitarios o dependencias para los paquetes de desarrollo o de interés. Para ello ejecutamos lo siguiente:

sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y
sudo apt install -y software-properties-common
sudo apt install -y snapd
sudo apt install -y zip unzip
sudo apt install -y p7zip-full
sudo apt install -y git-core
sudo apt install -y wget
sudo apt install -y curl
sudo apt install -y gcc g++ make
sudo apt install -y python-pip
sudo apt install -y neovim
sudo apt install -y gdebi
sudo apt install -y vlc browser-plugin-vlc
sudo apt install -y pandoc texlive-xetex librsvg2-bin
sudo apt install -y tree

Hay comandos como tree que no son aconsejables en un entorno de producción.

Acondicionando el “prompt”

Para darle toque sofisticado al “prompt”, teniendo instalado python-pip y git, instalamos powerline, así:

sudo apt install -y powerline
pip install --user git+git://github.com/Lokaltog/powerline

Si se presentan inconvenientes por las fuentes, éstas se pueden instalar así:

wget https://github.com/Lokaltog/powerline/raw/develop/font/PowerlineSymbols.otf https://github.com/Lokaltog/powerline/raw/develop/font/10-powerline-symbols.conf
sudo mv PowerlineSymbols.otf /usr/share/fonts/
sudo fc-cache -vf
sudo mv 10-powerline-symbols.conf /etc/fonts/conf.d/

Si se instala powerline debe editarse el archivo .bashrc y agregar al final las siguientes líneas:

if [ -f ~/.local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh ]; then
    source ~/.local/lib/python2.7/site-packages/powerline/bindings/bash/powerline.sh
fi

Y para vim, se agrega en el archivo .vimrc o /etc/vim/vimrc lo siguiente:

set rtp+=$HOME/.local/lib/python2.7/site-packages/powerline/bindings/vim/

" Always show statusline
set laststatus=2

" Use 256 colours (Use this setting only if your terminal supports 256 colours)
set t_Co=256

Chrome (Navegador)

En linux podría usarse el repositorio para Chromium, que es una version mantenida por la comunidad y se instala con el siguiente comando:

sudo apt install -y chromium

Sin embargo, para instalar la version de Google Chrome, ejecuta cada una de las siguientes líneas:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install -y libxss1 libgconf2-4 libappindicator1 libindicator7
sudo dpkg -i google-chrome-stable_current_amd64.deb
rm google-chrome-stable_current_amd64.deb

Gradle & Maven (Gestor de Paquetes Java)

Para una instalación más sencilla primero instalamos SDKMAN, el cual nos permite gestionar SDK’s.

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk version

La última línea nos muestra la versión instalada

Y para instalar gradle, finalmente ejecutamos:

sdk install gradle
gradle -v

La última línea nos muestra la versión instalada

En un entorno de desarrolo con Java puede ser conveniente instalar también Maven para gestionar las librerías del proyecto. Se instala así:

sdk install maven
mvn -v

La última línea nos muestra la versión instalada
También se encuentra disponible en los repositorios del sistema con el comando: sudo apt install -y maven

Java 11 (JDK)

Con SDKMAN podría instalarse usando el comando sdk install java x.y.z-open o la versión de Amazon sdk install java x.y.z-amzn.

Para instalar la máquina virtual de Java con el paquete de desarrollo incluido por el sistema, ejecuta cada una de las siguientes líneas:

sudo apt update
sudo apt install openjdk-11-jdk
javac -version

La última línea nos muestra la versión instalada

Otra alternativa es usar la versión de Oracle ejecutando lo siguiente:

sudo add-apt-repository ppa:webupd8team/java
sudo apt update
sudo apt install -y oracle-java11-installer
sudo apt install oracle-java11-set-default
javac -version
echo $JAVA_HOME

Si no se llegara a reconocer el JAVA_HOME después de un reinicio, se edita (sudo vi ...) el archivo /etc/environment y se agrega línea de variable con su valor (la ruta), así:

JAVA_HOME="/usr/lib/jvm/java-11-oracle"

Siendo así, para que los cambios tengan efecto (y se asuma JAVA_HOME) se ejecuta:

source /etc/environment

GraalVM como alternativa de JDK

Con SDKMAN podría instalarse usando, por ejemplo, el comando sdk install java 22.1.0.r11-grl

En caso de usar GraalVM como alternativa de JDK, puedes descargar versión desde el sitio y se descomprime el archivo respectivo, por ejemplo:

wget https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.1.0/graalvm-ce-java11-linux-amd64-22.1.0.tar.gz
tar xfz graalvm*.tar.gz
rm graalvm*.tar.gz
sudo mv graalvm* /usr/local/lib/
sudo apt install zlib1g-dev

La última línea instala librerías requeridas por el compilador GCC (también podría usarse en su lugar libz-dev). Para dejarlo como nuestro “JAVA_HOME”, se edita (sudo vi...) el archivo /etc/environment configurándolo, por ejemplo incluyendo las líneas:

GRAALVM_HOME="/usr/local/lib/graalvm-ce-java11-22.1.0"
JAVA_HOME="$GRAALVM_HOME"

Para configurarlo en tu usuario (tratándose de un entorno de desarrollo), editas el archivo ~/.bashrc y buscas si existe la variable PATH (para incluir :$GRAALVM_HOME/bin) o agregas al final lo siguiente:

export PATH="$PATH:$GRAALVM_HOME/bin"

Otra manera de hacerlo global (por ejemplo en máquinas virtuales de desarrollo) sería editando el archivo /etc/profile buscando la línea de export PATH para insertar antes o arriba de ésta las siguientes lineas:

GRAALVM_HOME="/usr/local/lib/graalvm-ce-java11-22.1.0"
JAVA_HOME="$GRAALVM_HOME"
PATH="$PATH:$GRAALVM_HOME/bin"
export GRAALVM_HOME
export JAVA_HOME
export PATH

Finalmente, recargamos nuestras variables de entorno y agregamos el paquete de actualización de GraaVM, así:

source /etc/environment
source ~/.bashrc
java --version
gu install native-image

Si usaste el archivo /etc/profile debe ejecutarse source /etc/profile en lugar de las dos primeras líneas. java --version se usa para comprobar que la configuración fué exitosa, incluso puede consultarse version de NodeJS con node -v.

Vertx (Framework Java)

Este “framework” a modo de librerías (“tool-kit”), que tiene semejanzas a Node.js pero corre en JVM o GraalVM, también se puede instalar con SDKMAN, veamos:

sdk install vertx

La alternativa con npm sería: npm install vertx4-full.

Si cuentas con un proyecto creado previamente, una vez instalado puedes actualizar tu proyecto así:

  1. Busca el archivo vertx-stack.json de tu proyecto.
  2. Actualiza el contenido de la sección de variables con los valores nuevos (ej.: "vertx.version": "4.0.2", "tcnative.version": "2.0.29.Final"). Si deseas, puedes comparar los archivos previamente.
  3. Sobreescribe el archivo (vertx-stack.json) de la nueva versión de vertx con el archivo modificado de tu proyecto.
  4. Ubícate dentro de la ruta de descarga de vertx, dónde se encuentra el archivo json, y ejecuta el comando de actualización, por ejemplo:
cd vertx
./bin/vertx resolve --dir=vertx

Esta últilma línea para Windows sería:

bin\vertx.bat resolve --dir=vertx`

Dónde --dir=vertx indica que el nuevo subdirectorio de descargas con las librerías actualizadas se llamará vertx. Se pueden eliminar las librerías de kotlin para vertx, si se gestionan por separado y se usa una versión más actualizada, ejecutando: rm vertx/kotlin*.

Node.js (Entorno Javascript fuera del Navegador)

Veamos dos maneras de instalar Node.js. La primera desde el repositorio con el siguiente comando:

sudo apt install nodejs npm

La alternativa permite indicar la versión y sería del siguiente modo:

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install -y nodejs

En un servidor con Debian las lineas anteriores se reemplazaria por las siguientes:

curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
sudo apt install -y nodejs

Adicionalmente, módulos globales sobre utilidades para desarrollo de software según sea necesario (y no aplicaría para producción):

sudo apt install -y build-essential
npm cache clean -f
sudo npm i -g gulp
sudo npm i -g serve
sudo npm i -g pkg
sudo npm i -g npm@latest
sudo npm ls -g --depth=0
sudo chown -R $(whoami) ~/.npm

Este último comando sólo lista los paquetes instalados o actualizados a nivel global (/usr/lib).

Deno (Entorno Typescript/Javascript)

Para proceder con la instalación de Deno se ejecuta desde la línea de comandos:

curl -fsSL https://deno.land/x/install/install.sh | sh
deno --version

La última línea nos muestra la versión instalada

MariaDB (Motor de Base de Datos)

Si llegas a requerir acceso a base de datos para tu ambiente de desarrollo, este motor libre (compatible con MySQL) suele ser de uso frecuente si vienes del mundo de las bases de datos SQL.

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.2/ubuntu xenial main'
sudo apt update
sudo apt install -y mariadb-server mariadb-client
sudo apt install -y mariadb-plugin-rocksdb
sudo systemctl enable mariadb
mysql -u root -p

Si el servicio de MariaDB demora tu máquina en el arranque o finalmente tu desarrollo no requiere esta base de datos, puedes evitar la línea de sudo systemctl enable mariadb o ejecutar sudo systemctl disable mariadb.
Para tener una noción ligera sobre una base de datos como MariaDB, puedes revisar algunos tips que encuentras en el documento sobre SQL.

Visual Studio Code (Editor)

El editor es una herramienta clave para escribir nuestro código. Auque el instalador de VSCode lo encuentras publicado en el sitio oficial, podemos instalarlo en Linux Ubuntu de la siguiente manera:

sudo snap remove vscode
sudo snap install code --classic

IntelliJ IDEA (IDE - Versión Community)

Si para escribir código en Java o en Kotlin basta con el editor VSCode y el uso de gradle en mayor medida, no sería tan necesaria esta herramienta, no obstante puede ser útil tener un buen IDE como IntelliJ IDEA para alguna prestación adicional. El instalador se obtiene desde el siguiente enlace:

https://www.jetbrains.com/idea/download/index.html#section=linux

Luego de descargarse se instala de la siguiente manera:

cd ~/Downloads
tar xfz ideaIC*.tar.gz
rm ideaIC*.tar.gz
sudo mv idea-* /opt/idea
cd /opt/idea/bin
./idea.sh

Podría resultar apropiado cambiar el propietario de la carpeta (/opt/idea). Si el lanzador de la aplicacion no aparece en el menu del sistema, se puede hacer algo como lo siguiente:

cat > ~/.local/share/applications/jetbrains-idea-ce.desktop <<EOL
[Desktop Entry]
Type=Application
Name=Intellij IDEA Community Edition
Icon=/opt/idea/bin/idea.png
Exec="/opt/idea/bin/idea.sh" %f
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-idea-ce
EOL

Android Studio (IDE para móviles Android)

No se recomienda instalar Android Studio en una máquina virtual, en ese caso es preferible instalarlo en el sistema base (por ejemplo, para Windows).

El instalador se obtiene desde el siguiente enlace:

https://developer.android.com/studio/

Luego de descargarse se instala de la siguiente manera:

cd ~/Downloads
unzip android-studio-ide*.zip
rm android-studio-ide*.zip
sudo mv android-studio /opt
cd /opt/android-studio/bin
studio.sh

Preparamos los siguientes paquetes de 32 bits (incluso para Ubuntu a 64bits):

sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6

Y para aceleracion del emulador hacemos lo siguiente:

sudo apt-get install cpu-checker
egrep -c '(vmx|svm)' /proc/cpuinfo
kvm-ok

Para estar seguros de que reconoce “ANDROID_HOME”, se edita el archivo:

vi ~/.bashrc

Y se agregan al final líneas respectivas (con rutas), así:

export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:/opt/android-studio/bin:/opt/idea/bin

Se cierra la sesión del terminal y se abre una nueva para que reconozca el cambio. Adicionalmente, en Ubuntu conviene instalar el gestor de paquetes “Gradle”.

sudo apt install -y gradle

Si el lanzador de la aplicacion no aparece en el menu del sistema, se puede hacer algo como lo siguiente:

cat > ~/.local/share/applications/android-studio.desktop <<EOL
[Desktop Entry]
Type=Application
Name=Android Studio
Icon=/opt/android-studio/bin/studio.png
Exec="/opt/android-studio/bin/studio.sh" %f
Categories=Development;IDE;
Terminal=false
EOL

DBeaver CE (Herramienta para gestion de DB)

Interesante herramienta para gestionar diversos motores de bases de datos. Para su instalación ejecuta las siguientes instrucciones:

wget -O - https://dbeaver.io/debs/dbeaver.gpg.key | sudo apt-key add -
echo "deb https://dbeaver.io/debs/dbeaver-ce /" | sudo tee /etc/apt/sources.list.d/dbeaver.list
sudo apt update
sudo apt install dbeaver-ce

VirtualBox (Para máquinas virtuales)

Si estas usando Linux como tu sistema operativo de base conviene instalar esta herramienta, por el contrario, si ya estás dentro de una máquina virtual omite este paso.

sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian xenial contrib" >> /etc/apt/sources.list.d/virtualbox.list'
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
sudo apt update
sudo apt install -y virtualbox-5.2

Si resultara inconveniente de compatibilidad con archivos de maquinas virtuales antiguas, se podría ejecutar la siguiente línea de comando:

sudo /sbin/vboxconfig

Terraform (Código como Plataforma)

wget https://releases.hashicorp.com/terraform/0.12.29/terraform_0.12.29_linux_amd64.zip
unzip terraform_0.12.29_linux_amd64.zip
sudo mv terraform /usr/local/bin/
terraform --version
rm terraform*.zip

Postman (Gestiona peticiones API-Rest)

wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz
sudo tar -xzf postman.tar.gz -C /opt
rm postman*.gz
sudo ln -s /opt/Postman/Postman /usr/bin/postman
sudo chown -R onminder:onmind /opt/Postman

Para esta última línea el usuario y grupo se refiere al creado en la instalación. Adicionalmente, para obtener un lanzador desde el menu, ejecutamos:

cat > ~/.local/share/applications/postman.desktop <<EOL
[Desktop Entry]
Encoding=UTF-8
Name=Postman
Exec=postman
Icon=/opt/Postman/app/resources/app/assets/icon.png
Terminal=false
Type=Application
Categories=Development;
EOL

BlueGriffon (Graficador Web)

wget http://bluegriffon.org/freshmeat/3.1/bluegriffon-3.1.Ubuntu18.04-x86_64.deb
sudo dpkg -i bluegriffon-3.1.Ubuntu18.04-x86_64.deb

Pencil (Prototipado para GUI)

wget https://pencil.evolus.vn/dl/V3.0.4/Pencil_3.0.4_amd64.deb
sudo dpkg -i Pencil_3.0.4_amd64.deb

XMind (Graficador para Mapas Mentales)

Para contar con XMind se debe descargar el paquete directamente desde el sitio (https://www.xmind.net/download/linux/), aceptando la licencia, luego se instala, por ejemplo así:

sudo unzip xmind-8-update8-linux.zip -d /opt/XMind
sudo chown -R onminder:onmind /opt/XMind
cd /opt/XMind
sudo sh setup.sh

Dado que ya contamos con Java, se podría evitar instalar el “JRE” indicando que “no”, aunque es aconsejable dejar las cosas quietas (responder “sí”) para el debido funcionamiento. Para lanzarlo, procedemos así:

/opt/XMind/XMind_amd64/XMind

Si el lanzador de la aplicacion no aparece en el menu del sistema, se puede hacer algo como lo siguiente:

cat > /opt/XMind/XMind_amd64/xmind.sh <<EOL
#!/bin/bash
(cd /opt/XMind/XMind_amd64/ && ./XMind)
EOL
chmod +x /opt/XMind/XMind_amd64/xmind.sh
cat > ~/.local/share/applications/xmind.desktop <<EOL
[Desktop Entry]
Type=Application
Name=XMind
Exec=/opt/XMind/XMind_amd64/xmind.sh
Categories=Graphics;
Terminal=false
EOL

Gravit Designer (Graficador para Diseño)

Disponible bajo snap. Requiere indicar una cuenta (bien sea registrándo email o de red social)

sudo snap install gravit-designer

Green Fish Icon Editor (Editor de Iconos)

Para contar con GFIE, se debe descargar el paquete directamente desde el sitio (http://greenfishsoftware.org/dl.php?filename=gfie-3.6.deb#apage), luego se ejecuta instalador, por ejemplo:

sudo dpkg -i gfie-3.6.deb

LibreOffice (Paquete de Oficina)

La instalacion se puede hacer on “snap”. Al terminar de ser instalado, se recomienda abrirlo y configurar los formatos de archivo para documento de texto, hoja de cálculo y presentaciones, usando la opcion: Herramientas - Opciones - Cargar/Guardar - General - Formato de archivo predeterminado

sudo snap install libreoffice

Skype (Teleconferencia o Chat)

Herramienta para Teleconferencia de Microsoft. Disponible bajo snap

sudo snap install skype --classic

OBS Studio (Grabación de Video, para Tutoriales)

sudo apt-get install ffmpeg
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt-get update && sudo apt-get install obs-studio

Software desde tienda (Otros)

Existen otros paquetes de software que ya se incluyen en la tienda del sistema o quizás ya se encuentren instalados, podrías revisar por ejemplo:


Gracias y que lo disfrutes