[I - IOTA Development]: Preparar el entorno
Tags: ubuntu, docker, go, rust
Published: 2023-01-25 15:39:39

Quiero empezar una serie de tutoriales en los que vamos a aprender a como desarrollar bajo la tecnología DLT de [IOTA](https://www.iota.org/). Mi intención es hacer también videos para ayudar a que se entienda mejor y poder explicar otros aspectos importantes de IOTA no tan enfocados al desarrollo pero si a la parte técnica.

En este primer artículo vamos a ver como instalar todas las herramientas necesarias para poder tener un entorno de desarrollo completo y actualizado.
<p>&#8232</p>
## I - Virtualizar Ubuntu 22.04.1

Vamos a virtualizar dentro de Hyper-V un [ubuntu 22.04.1](https://releases.ubuntu.com/22.04.1/ubuntu-22.04.1-desktop-amd64.iso). 

> No voy a explicar como virtualizar un SO ya que considero que como mínimo debemos de tener un SO dónde levantar nuestro entorno.

<p>&#8232</p>
## II - Instalación de las herramientas básicas

Lo primero que haremos será actualizar el sistema operativo
```
~$ sudo apt update
~$ sudo apt upgrade
```
instalamos `git` y `vim` que nos hará falta más adelante y las `build essential` para disponer de `gcc` y `make`
```
~$ sudo apt install vim git build-essential curl
```
<p>&#8232</p>
#### Instalación de [Go Lang 1.19](https://go.dev/)
Necesitamos go para luego poder compilar el binario de `wasp` (nodo para los Smart Contract) y una serie de herramientas que vienen en la suite.
```
~$ wget https://go.dev/dl/go1.19.5.linux-amd64.tar.gz 
~$ sudo tar xzvf go1.19.5.linux-amd64.tar.gz -C /usr/local/
~$ export PATH=$PATH:/usr/local/go/bin
~$ source ~/.bashrc
```
si escribimos `go version` debemos de obtener lo siguiente
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xkz6za8s4y1s4uujehha.png)
<p>&#8232</p>
#### Instalación de [Node Version Manager (NVM)](https://github.com/nvm-sh/nvm)
Mediante esta herramienta vamos a poder gestionar varias versiones de nodeJs, es tan sencillo como ejecutar el siguiente comando
```
~$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
```
Una vez tengamos instalado `nvm` debemos actualizar el bash con el siguiente comando `~$ source ~/.bashrc` a partir de ese momento ya podemos hacer uso de la herramienta, lo primero que vamos a hacer es instalar la versión 16.19.0 (Gallium) con el siguiente comando
```
~$ nvm install --lts=Gallium
```
<p>&#8232</p>
#### Instalación de [Rust Lang](https://www.rust-lang.org/es)
La mayoría de las librerías de IOTA están escritas en rust, es un leguaje que los desarrolladores de la Fundación IOTA usan mucho debido a que hace muy buen uso de la memoria y da mucha seguridad a las aplicaciones, veremos más adelante su uso. Por el momento es suficiente con tenerlo instalado con los siguientes comandos
```
~$ curl https://sh.rustup.rs -sSf | sh
~$ source "$HOME/.cargo/env"
```
<p>&#8232</p>
#### Instalación de [Solc Compiler](https://docs.soliditylang.org/en/v0.8.17/installing-solidity.html#linux-packages)
Cuando vayamos a compilar los binarios de wasp es necesario tener instalado el compilador de solidity
```
~$ sudo add-apt-repository ppa:ethereum/ethereum
~$ sudo apt update
~$ sudo apt install solc
```
<p>&#8232</p>
#### Instalación de [Docker](https://www.docker.com/)
Gracias a docker vamos a poder levantar de forma aislada y sencilla nuestro nodo Hornet y todos sus plugins.
```
~$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
~$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
~$ sudo apt update
~$ apt-cache policy docker-ce
~$ sudo apt install docker-ce
~$ sudo systemctl status docker
~$ sudo usermod -aG docker ${USER}
~$ su - ${USER}
```
<p>&#8232</p>
#### Instalación de [Docker Compose](https://github.com/docker/compose)
Primero accedemos a las [releases](https://github.com/docker/compose/releases) para ver que versión queremos instalar, en este caso la `2.15.1`
```
~$ mkdir -p ~/.docker/cli-plugins/
~$ curl -SL https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
~$ chmod +x ~/.docker/cli-plugins/docker-compose
```
<p>&#8232</p>
#### Instalamos: 
- [Firefly Desktop (shimmer)](https://firefly.iota.org/#DownloadsSection)
- [Google Chrome](https://www.google.com/intl/es_es/chrome/)
- [Metamask](https://metamask.io/download/)
- [VsCode](https://code.visualstudio.com/Download)

<p>&#8232</p>
Una vez tengamos instaladas todas estas herramientas lo siguiente será configurar y levantar un nodo [Hornet](https://github.com/iotaledger/hornet), lo veremos en el siguiente capítulo.

Gracias y no olvidéis dejar vuestros comentarios!!