# Preparando o Ubuntu para Desenvolvimento Web
Meu primeiro contato com linux foi através do Ubuntu, talvez por isso eu tenha um carinho tão grande por esta distro. Ela trás muitas facilidades na hora de fazer configurações, instalar programas e pacotes. Na maioria das vezes vocês vai sempre encontrar um pacote .deb de algum programa ou um ppa para adicionar ao repositório facilitando os caminhos.
Já utilizei várias e a que me deu menos dor de cabeça foi o Ubuntu.
## Escopo da Instalação
1. Instalando alguns compiladores e dependências de desenvolvimento do sistema
2. Copie e cole via linha de comando com o xclip
3. Configurar chave SSH no GitHub
4. ASDF - Gerenciador de versões
5. Docker
6. Docker-compose
7. Visual Studio Code
8. Angular Cli
9. Typescript
10. Yarn
11. Insonmia
## 1. Instalando alguns compiladores e dependências de desenvolvimento do sistema
``` bash
sudo apt install build-essential default-jdk libssl-dev exuberant-ctags ncurses-term ack-grep silversearcher-ag fontconfig imagemagick libmagickwand-dev software-properties-common git vim-gtk3 curl
```
## 2. Copie e cole via linha de comando com o xclip
xclip é um utilitário projetado para copiar e colar conteúdo de arquivos via de linha de comando. O mesmo já vem por padrão no repositório da maioria das distribuições linux. Como a distro em evidência aqui é o ubuntu e derivados vou mostrar apenas a instalação no mesmo. Segue o comando abaixo:
```bash
sudo apt install xclip
```
## 3. Configurar chave SSH no GitHub
Umas das primeiras coisas que faço nas minhas instalações é gerar uma chave SSH e configurar a mesma no GitHub para conseguir clonar meus repositórios com mais facilidade e segurança.
Os passos para instalação podem ser seguidos na [documentação oficial](https://docs.github.com/pt/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent), mas para facilitar vou explicar a forma que eu faço.
Com o [git](https://git-scm.com/downloads) já instalado vamos executar o seguinte comando no terminal de sua preferência substituindo o conteúdo entre aspas pelo seu email cadastrado na conta do GitHub:
```bash
ssh-keygen -t ed25519 -C "your_email@example.com"
```
com o xclip instalado no passo 2, agora vamos copiar a chave ssh com o comando abaixo.
```bash
xclip -i -sel copy ~/.ssh/id_ed25519.pub
```
Agora abra o menu de configurações que fica no canto superior direito da página do GitHub:

Procure pela no menu esquerdo agora a opeção de configuração de chaves SSH e GPG. As minhas opções de menu estão em inglês porque é o idioma padrão que eu uso no sistema.

Agora é só clicar no botão de SSH Key, vai abrir a tela abaixo. Adicione um título para a chave e logo abaixo cole o conteúdo da chave copiado com o xclip.

## 4. ASDF - Gerenciador de versões
Através do [asdf](https://asdf-vm.com/guide/getting-started.html) você pode instalar e gerenciar versões de diversas linguagens de programação para serem usadas globalmente no sistema ou localmente nos repositório definidos.
Download do repositório oficial:
```bash
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.12.0
```
Para conseguir executar os comandos é preciso adicionar ao arquivo de configuração do shell que está sendo usado, bash, zsh ou outros.
No meu caso estou usando o bash então vou adicionar as linhas abaixo ao final do arquivo .bashrc. Caso não esteja usando o bash é só seguir a [documentação oficial](https://asdf-vm.com/guide/getting-started.html) e seguir os passos para a instalação.
``` bash
. "$HOME/.asdf/asdf.sh"
```
``` bash
. "$HOME/.asdf/completions/asdf.bash"
```
Após configurar o asdf gosto de baixar as linguagens de programação que eu mais uso. Então vou instalar a versão LTS do nodeJS, que atualemnte é a 18.17.1 e do Ruby. Para isso vamos seguir os seguintes passos:
Primeiro vamos adicionar as dependências do node.
```bash
asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
```
E logo após baixar as depedências vamos instalar a versão com o seguinte comando.
```bash
asdf install nodejs 18.17.1
```
Após instalar o node precisamos definiar se essa versão vai ser usada globalmente no sistema ou localmente em alguma projeto. No meu caso vou usar globalmente então segue o comando abaixo:
```bash
asdf global nodejs 18.17.1
```
Vamos também fazer o mesmo processo na instalação do ruby.
```bash
asdf plugin add ruby https://github.com/asdf-vm/asdf-ruby.git
```
Ao tentar instalar as versões mais atuais do ruby tive alguns problemas por isso antes foi preciso instalar algumas dependências antes, execute o comando abaixo antes de seguir para a instalação.
```bash
sudo apt install curl g++ gcc autoconf automake bison libc6-dev libffi-dev libgdbm-dev libncurses5-dev libsqlite3-dev libtool libyaml-dev make pkg-config sqlite3 zlib1g-dev libgmp-dev libreadline-dev libssl-dev
```
Seguindo agora vamos de fato instalar a versão mais recente no momento que é a 3.2.0.
```bash
asdf install ruby 3.2.0
```
Agora podemos definir a versão instalada como global.
```bash
asdf global ruby 3.2.0
```
## 5. Docker - https://get.docker.com/
Para facilitar nossa vida na hora de trabalhar com bancos de dados e algumas outras ferramentas sem precisar ficar instalando tudo na máquina física vamos trabalhar como docker que cria containers facilicantando a manipulação dessas ferramentas. Para instalação é só seguir os passos seguintes.
``` bash
curl -v https://get.docker.com/ >> script.sh
chmod +x script.sh
sh script.sh
sudo usermod -aG docker $USER
sudo systemctl start docker
sudo systemctl enable docker
```
Em seguida faça o logout para atualizar as permissões.
## 6. Docker-compose
``` bash
sudo curl -L "https://github.com/docker/compose/releases/download/2.21/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```
## 7. Visual Studio Code
Vá até a [página de download](https://code.visualstudio.com/download) e faça o download do arquivo .deb, que é o formato padrão dos pacotes no Ubuntu e seus derivados.

Após fazer o download vá até a pasta onde o arquivo foi baixado, no meu caso está na pasta Downloads, e execute o seguinte comando.
```bash
sudo dpkg -i code_1.81.1-1691620686_amd64.deb
```
## 8. Angular Cli
O Angular CLI é uma ferramenta de interface de linha de comando que você usa para inicializar, desenvolver, estruturar e manter aplicativos Angular diretamente de um shell de comando.
Com o node instalado basta apenas executar o comando abaixo no terminal.
``` bash
npm install -g @angular/cli
```
## 9. Typescript
TypeScript é um superconjunto de JavaScript, ou seja, um conjunto de ferramentas e formas mais eficientes de escrever código JavaScript, adicionando recursos que não estão presentes de maneira nativa na linguagem. Saiba mais sobre TypeScript, suas principais vantagens e como utilizá-lo em seus projetos.
Com o node instalado basta apenas executar o comando abaixo no terminal.
``` bash
npm install -g typescript
```
## 10. Yarn
Yarn assim com o Npm é um gerenciamento de pacotes, sendo o Npm o gerenciador padrão do Node. js, enquanto o Yarn foi criado pelo Facebook. Segue comando para instalar o mesmo através do npm.
```bash
npm install --global yarn
```
## 11. Insonmia
Insomnia REST Client é um poderoso cliente REST API usado para organizar, armazenar e executar solicitações de API RESTful com elegância. Insomnia é um dos clientes REST rápidos disponíveis para Windows, Mac e Linux. O cliente REST Insomnia é uma estrutura de desktop multiplataforma gratuita para testar aplicativos RESTful. Para fazer a instalação do mesmo basta seguir os passos abaixo.
``` bash
echo "deb https://dl.bintray.com/getinsomnia/Insomnia /" \
| sudo tee -a /etc/apt/sources.list.d/insomnia.list
wget --quiet -O - https://insomnia.rest/keys/debian-public.key.asc \
| sudo apt-key add -
sudo apt-get update
sudo apt-get install insomnia
```