Appearance
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:
- Chrome (Navegador)
- Java 11 (JDK)
- Gradle & Maven (Gestor de Paquetes Java)
- Node.js (Entorno Javascript fuera del Navegador)
- Deno (Entorno Typescript/Javascript)
- MariaDB (Motor de Base de Datos)
- Visual Studio Code (Editor)
- IntelliJ IDEA CE (IDE - Community Edition)
- Android Studio (IDE para móviles Android)
- DBeaver CE (Herramienta para gestion de DB)
- Postman (Gestiona peticiones web - API-Rest)
- VirtualBox (Para máquinas virtuales)
- BlueGriffon (Graficador Web)
- Pencil (Prototipado para GUI)
- XMind (Graficador para Mapas Mentales)
- Gravit Designer (Graficador para Diseño)
- Green Fish Icon Editor (Editor de Iconos)
- LibreOffice (Paquete de Oficina)
- Skype (Teleconferencia o Chat)
- OBS Studio (Grabación de Video, para Tutoriales)
- 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:
bash
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 treeHay comandos como
treeque 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/powerlineSi 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
fiY 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=256Chrome (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 chromiumSin embargo, para instalar la version de Google Chrome, ejecuta cada una de las siguientes líneas:
bash
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.debGradle & Maven (Gestor de Paquetes Java)
Para una instalación más sencilla primero instalamos SDKMAN, el cual nos permite gestionar SDK's.
bash
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk versionLa última línea nos muestra la versión instalada
Y para instalar gradle, finalmente ejecutamos:
bash
sdk install gradle
gradle -vLa ú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í:
bash
sdk install maven
mvn -vLa ú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
SDKMANpodría instalarse usando el comandosdk install java x.y.z-openo la versión de Amazonsdk 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:
bash
sudo apt update
sudo apt install openjdk-11-jdk
javac -versionLa última línea nos muestra la versión instalada
Otra alternativa es usar la versión de Oracle ejecutando lo siguiente:
bash
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_HOMESi 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í:
ini
JAVA_HOME="/usr/lib/jvm/java-11-oracle"Siendo así, para que los cambios tengan efecto (y se asuma JAVA_HOME) se ejecuta:
bash
source /etc/environmentGraalVM como alternativa de JDK
Con
SDKMANpodría instalarse usando, por ejemplo, el comandosdk 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:
bash
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-devLa ú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 PATHFinalmente, recargamos nuestras variables de entorno y agregamos el paquete de actualización de GraaVM, así:
bash
source /etc/environment
source ~/.bashrc
java --version
gu install native-imageSi usaste el archivo
/etc/profiledebe ejecutarsesource /etc/profileen lugar de las dos primeras líneas.java --versionse usa para comprobar que la configuración fué exitosa, incluso puede consultarse version de NodeJS connode -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:
bash
sdk install vertxLa alternativa con
npmsería:npm install vertx4-full.
Si cuentas con un proyecto creado previamente, una vez instalado puedes actualizar tu proyecto así:
- Busca el archivo
vertx-stack.jsonde tu proyecto. - Actualiza el contenido de la sección de
variablescon los valores nuevos (ej.:"vertx.version": "4.0.2", "tcnative.version": "2.0.29.Final"). Si deseas, puedes comparar los archivos previamente. - Sobreescribe el archivo (
vertx-stack.json) de la nueva versión devertxcon el archivo modificado de tu proyecto. - Ubícate dentro de la ruta de descarga de
vertx, dónde se encuentra el archivojson, y ejecuta el comando de actualización, por ejemplo:
bash
cd vertx
./bin/vertx resolve --dir=vertxEsta últilma línea para Windows sería:
bash
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 npmLa alternativa permite indicar la versión y sería del siguiente modo:
bash
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install -y nodejsEn un servidor con Debian las lineas anteriores se reemplazaria por las siguientes:
bash
curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
sudo apt install -y nodejsAdicionalmente, módulos globales sobre utilidades para desarrollo de software según sea necesario (y no aplicaría para producción):
bash
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) ~/.npmEste ú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:
bash
curl -fsSL https://deno.land/x/install/install.sh | sh
deno --versionLa ú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.
bash
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 -pSi 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 mariadbo ejecutarsudo 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:
bash
sudo snap remove vscode
sudo snap install code --classicIntelliJ 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:
bash
cd ~/Downloads
tar xfz ideaIC*.tar.gz
rm ideaIC*.tar.gz
sudo mv idea-* /opt/idea
cd /opt/idea/bin
./idea.shPodrí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:
bash
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
EOLAndroid 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:
Luego de descargarse se instala de la siguiente manera:
bash
cd ~/Downloads
unzip android-studio-ide*.zip
rm android-studio-ide*.zip
sudo mv android-studio /opt
cd /opt/android-studio/bin
studio.shPreparamos los siguientes paquetes de 32 bits (incluso para Ubuntu a 64bits):
bash
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6Y para aceleracion del emulador hacemos lo siguiente:
bash
sudo apt-get install cpu-checker
egrep -c '(vmx|svm)' /proc/cpuinfo
kvm-okPara estar seguros de que reconoce "ANDROID_HOME", se edita el archivo:
bash
vi ~/.bashrcY 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/binSe 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".
bash
sudo apt install -y gradleSi el lanzador de la aplicacion no aparece en el menu del sistema, se puede hacer algo como lo siguiente:
bash
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
EOLDBeaver CE (Herramienta para gestion de DB)
Interesante herramienta para gestionar diversos motores de bases de datos. Para su instalación ejecuta las siguientes instrucciones:
shell
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-ceVirtualBox (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.
bash
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.2Si resultara inconveniente de compatibilidad con archivos de maquinas virtuales antiguas, se podría ejecutar la siguiente línea de comando:
bash
sudo /sbin/vboxconfigTerraform (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*.zipPostman (Gestiona peticiones API-Rest)
bash
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/PostmanPara 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:
bash
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;
EOLBlueGriffon (Graficador Web)
bash
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.debPencil (Prototipado para GUI)
bash
wget https://pencil.evolus.vn/dl/V3.0.4/Pencil_3.0.4_amd64.deb
sudo dpkg -i Pencil_3.0.4_amd64.debXMind (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í:
bash
sudo unzip xmind-8-update8-linux.zip -d /opt/XMind
sudo chown -R onminder:onmind /opt/XMind
cd /opt/XMind
sudo sh setup.shDado 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í:
bash
/opt/XMind/XMind_amd64/XMindSi el lanzador de la aplicacion no aparece en el menu del sistema, se puede hacer algo como lo siguiente:
bash
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
EOLGravit Designer (Graficador para Diseño)
Disponible bajo snap. Requiere indicar una cuenta (bien sea registrándo email o de red social)
bash
sudo snap install gravit-designerGreen 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:
bash
sudo dpkg -i gfie-3.6.debLibreOffice (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
bash
sudo snap install libreofficeSkype (Teleconferencia o Chat)
Herramienta para Teleconferencia de Microsoft. Disponible bajo snap
bash
sudo snap install skype --classicOBS Studio (Grabación de Video, para Tutoriales)
bash
sudo apt-get install ffmpeg
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt-get update && sudo apt-get install obs-studioSoftware 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:
- Firefox (Navegador Web)
Gracias y que lo disfrutes