#ResearchNotes1: Instalando o Simulador OMNeT++ no Ubuntu 20.04
Tags: research, omnetpp, ubuntu20, linux
Published: 2021-12-07 00:29:30

O OMNeT++ é um simulador de eventos modular escrito em C++ orientado à objeto. É um software de código aberto muito utilizado pela a academia e é o core de diversos outros simuladores. Se sua pesquisa vai usar a técnica de simulação para avaliar desempenho o OMNeT++ pode te ajudar nessa tarefa.

A documentação do OMNeT++ é bem completa e descreve passo a passo o processo de instalação em sistemas Linux como o Ubuntu 16.04. No entanto, não descreve como instalar esse simulador em versões mais atualizadas do Ubuntu, como a 20.04. Sendo assim, nesse tutorial vou descrever como instalar o simulador OMNeT++ (versão 5.6.2) no Ubuntu 20.04.

# Instalação

A instalação do OMNeT++ é simples e mais fácil do que parece, vamos deixar de enrolação e vamos para os passos de instalação. 

## Passo 1: Atualize o seu sistema

Abra o terminal e digite o comando abaixo:

```
sudo apt update && sudo apt upgrade -y
```

## Passo 2: Instalando os pacotes (dependências)

Instale dos pacotes abaixo:

```
sudo apt-get install build-essential gcc g++ bison flex perl python python3 qt5-default libqt5opengl5-dev tcl-dev tk-dev libxml2-dev zlib1g-dev default-jre doxygen graphviz
```

Se você observar a documentação, vai perceber que além desses, ela também recomenda a instalação do pacote _libwebkitgtk-3.0-0_. No entanto, esse pacote não está disponível no Ubuntu 20.04, e se você tentar instalar vai ter como resultado o erro abaixo:

_The Package 'libwebkitgtk-3.0-0' has no installation candidate_. 

### Instalando o libwebkitgtk-3.0-0 no Ubuntu 20.04

Para instalar o libwebkitgtk-3.0-0 precisamos adicionar um repositório do Ubuntu 16.04 no 20.04.

Abra o arquivo **/etc/apt/sources.list** com o nano ou o vim.

Adicione a linha abaixo no final do arquivo:

```
deb http://cz.archive.ubuntu.com/ubuntu bionic main universe
```

Atualize o sistema com o comando abaixo:

```
sudo apt update
```

Agora podemos instalar o libwebkitgtk-3.0-0 com o comando abaixo:

```
sudo apt-get install libwebkitgtk-3.0-0
```

### Pacotes Extras

#### MPI Install

```
sudo apt-get install openmpi-bin libopenmpi-dev
```

#### PCAP Install 

```
sudo apt-get install libpcap-dev
```
Para mais informações sobre o MPI e PCAP veja o [Guia de Instalação](https://doc.omnetpp.org/omnetpp/InstallGuide.pdf).

## Passo 3: Baixando e Instalando o OMNeT++

É possível baixar o OMNeT++ nesse link [Omnetpp](http://omnetpp.org), nesse tutorial vamos usar a versão 5.6.2.

## Passo 4: Unpacking (Descompactado)

Para descompactar use o comando abaixo:

```
tar xvfz omnetpp-5.6.2-src.tgz
```

## Passo 5: Configurando as variáveis de ambiente

Para iniciar a configuração digite os comandos abaixo:

```
cd omnetpp-5.6.2
. setenv
```

Com o comando **. setenv** você vai saber o caminho da pasta do Omnetpp no seu sistema para exportar para a variável de ambiente. Para fazer isso abra o arquivo **bashrc** com o comando abaixo:

```
gedit ~/.bashrc
```

Adicione a linha abaixo no arquivo, verifique se o caminho do Omnetpp está correto.

```
export PATH=$HOME/omnetpp-5.6.2/bin:$PATH
```

Após fazer isso, abra e feche o terminal para que as modificações tenham efeito.

## Passo 6: Configurando e Construindo

No nível mais alto do diretório do seu OMNeT++ execute o comando:

```
./configure
```

Caso você for utilizar o OMNeT++ por meio de uma sessão ssh configure com o comando abaixo:

```
./configure WITH_TKENV=no WITH_QTENV=no
```

Finalmente, podemos construir o OMNeT++ no nosso sistema.

```
make
```

## Passo 7: Verificando instalação:

```
cd samples/dyna
./dyna
```

## Passo 8: Starting IDE

No terminal, digite o comando:

```
omnetpp
```

## Extra

É possível configurar ícones para o OMNeT++ para adicionar na sua Dock (barra de tarefas do Ubuntu) e abrir ele de maneira prática. Para configurar os ícones utilize os comandos abaixo:

```
make install-menu-item
make install-desktop-icon
```

Finalmente, se você chegou até aqui tem o OMNeT++ configurado e pronto para experimentos na sua máquina. 

Referências

[OMNeT++ Discrete Event Simulator](https://omnetpp.org/)