Instalando de maneira rápida e eficiente suas ferramentas no WSL. Pt-3
Tags: wsl, windows, development, beginners
Published: 2024-05-08 13:30:00

Opa meu chegado, pronto para a ultima parte desses serie? 
Spawnou do nada aqui e não sabe do que se trata ? [Clica aqui](https://dev.to/devhat/instalacao-e-configuracao-inicial-do-seu-wsl-pt-1-23m3) e vai para o 1 guia dessa serie incrível 

Agora vamos configurar algumas das ferramentas mais utilizadas pela minha pessoa, caso não se interesse por alguma ignore e continue o tutorial

## NVM

Node version manager é hoje a melhor e mais rápida opção para se instalar o node na sua maquina

Rode o seguinte comando no seu terminal para

```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
```

Após rodar o comando de instalação e a mesma tiver acabado, rode o comando `reset` para aplicar as novas mudanças no seu terminal e conseguir usar o `nvm` corretamente

### Instale a versão lst mais recente

Vamos rodar um comando no terminal para poder instalar a versão mais recente do node LTS

```bash
nvm install --lts
```

> Caso queira saber mais sobre o nvm e seus comando, [clique aqui](https://github.com/nvm-sh/nvm?tab=readme-ov-file#long-term-support)

## PNPM

O node por padrão vem com o `npm` como seu gerenciador de pacotesm, mas o pnpm veio para ser mais rápido e otimizado que o npm.

### Instalar mais recente

Rodamos o seguinte comando:

```bash
npm i -g pnpm
```
### Instalar uma versão especifica 

Informe a versão base especifica:

```bash
npm i -g pnpm@8
```

### Alias Pn

Esse é um alias que pode ser inserido no `.zshrc` para 'facilitar' o seu uso.

```zshrc
alias pn=pnpm
```

Rode o comando `reset` e já pode usar o pnpm

> Caso queira saber mais [clique aqui](https://pnpm.io/7.x/motivation)

## CLI GITHUB

Uma grande parte das pessoas usam o github como local para armazenas seus códigos, sejam no trabalho ou estudo, se você é estudante e não coloca seus codigos no github, é interessante que tu bote.
A cli do github foi criada para conseguirmos fazer o que fazemos na web com alguns comando no terminal, como criar um repositório, clonar a branch de um PR e assim por diante

### Instalar o CLI

Para instalar rode o seguinte comando no terminal:

```bash
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y
```

### Logar no GitHub

É necessário logar com usa conta do github, necesse processo de login, o github cli nos ajuda cadastrando uma chave ssh, que ja vai ficar integrada no nosso wsl, para começar o processo rode o comando a seguir no terminal:

```bash
gh auth login
```


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7t53lijxwx7xriw5kig5.png)



Na segunda etapa da configuração é importante que você selecione a opção `SSH`, pois ela é a responsavel por conseguimos cadastrar uma chave ssh de maneira facilitada

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/42qi4koyuhs2hp6avt3o.png)


Na quarta etapa de configuração você pode escolher ter uma senha para sua chave `SSH` ou não, eu particularmente recomendo não ter, pois toda vez que voce realizar um commit ela vai pedir confirmação:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jesnobroxc60rf2jyrkc.png)


Por fim basta selecionar o tipo de autenticação que deseja usar para validar sua conta:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iurcizlfsb5vnuv7z2iq.png)

> Caso seu google do linux abra pode se logar por ele e inserir o código que foi exibido no terminal, ao final da autorização feche o navegador e ele validará normalmente

Finalizando essa etapa, recomendo fortemente que defina seu nome e email(de preferencia o mesmo do github) nas configuraçoes do git:

```bash
git config --global user.name "Seu Nome"

git config --global user.email "seuemail@exemplo.com"
```

Caso você use o vscode como seu editor de código principal, recomendo fortemente definir ele como seu editor padrão do git:

```bash
git config --global core.editor "code --wait"
```

[Manual | GitHub CLI](https://cli.github.com/manual/)

### Complete command

Se você quiser ter uma lista facilitada dos comandos da github cli, rode o comando `sudo su` para entrar no super terminal do linux e digite o seguinte comando:

```bash
gh completion -s zsh > /usr/local/share/zsh/site-functions/_gh
```

Rode o comando `exit` para sair desse terminal, agora vá até o nosso arquivo de configuração do bash(`.zshrc`) e insira o comando a seguir nele:

```zshrc
autoload -U compinit
compinit -i
```

No final ele vai ficar assim no `.zshrc`:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/znvyuwr9ikbrikqk53wm.png)



Resete o seu terminal com o comando previamente configurado ou reinicie o terminal e digite `gh`, ela vai aparecer assim:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yp87g7wyjd5ijuurzz3j.png)



## Docker

Essa é uma das principais ferramentas para o gerenciamento de container no mercado.

### Instalação

Os passos que iremos fazer será para a configuração do docker em um ambiente ubuntu, caso queira fazer em outro SOLinux de sua preferência [acesse aqui](https://docs.docker.com/engine/install/).

### Limpar de package

Esse comando é necessário para remover algum package que vai conflitar com a instalação do seu docker cli

```bash
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
```

### Definição do repo do docker

Algumas intalações do linux são feitas com base em suas versões encontradas nos repositórios de cada projeto, agora iremos configurar o do docker:

```bash
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
```

### Instalar ultima versão

```bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

### Instalar versão especifica

Aqui você vai precisar listar as versões disponiveis

```bash
# List the available versions:
apt-cache madison docker-ce | awk '{ print $3 }'
```

Depois de escolher uma versão, copie o nome dela e jogue na variavel e rode o comando

```bash
# Variavel
VERSION_STRING=5:24.0.0-1~ubuntu.22.04~jammy

# Comando
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
```

### Verificando

Para verificar se a instalação foi um sucesso rode o comando `sudo docker run hello-world`, seu terminal vai ficar assim:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sj82lix4ubue2l8u5jjo.png)



Eu recomendo fortemente que você rode o comando `docker run -it ubuntu bash`, para tentar usar o terminal dentro de uma imagem ubuntu, se surgir algum erro como esse:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/90lpt361a2oqts3tcf10.png)



Rode `sudo usermod -aG docker $USER` no terminal linux e reinicie o wsl pelo powershell admin com o comando `wsl --shutdown` e tente rodar novamente o comando do docker.

> Em alguns casos é preciso ficar ativando o docker toda vez que entrar no wsl, não necessito fazer isso, mas caso o seu linux exiba:
>
> `Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?`
>
> Você precisará rodar `sudo service docker start` toda vez que for usar o mesmo
>
> **É MUITO IMPORTANTE TOMAR CUIDADO PARA NÃO DEIXAR MUITOS CONTAINERS ATIVOS NO SEU PC**

## ASDF

Asdf é um gerenciador de versões de linguagens direto na sua cli, você consegue instalar go, ruby e node com ele.

### Instalação

```bash
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0
```

Após rodar esse comando, adicione a seguinte linha de codigo no `.zshrc`

```zshrc
. "$HOME/.asdf/asdf.sh"
```

No deve ficar assim no seu `.zshrc`:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rx924y7drwo1b7lyit6y.png)



> Caso queira saber mais sobre o asdf [clique aqui](https://asdf-vm.com/)

## Go

**Golang**, linguagem criada pelo Google em 2009, destaca-se por sua **simplicidade, velocidade, confiabilidade e suporte à concorrência**. Ideal para diversos tipos de aplicações, desde servidores web até sistemas embarcados. Curva de aprendizado e menor quantidade de bibliotecas são pontos a serem considerados. Comunidade ativa e diversos recursos facilitam o aprendizado.

### Instalação

Pra instalar o GO vamos usar o [asdf](#asdf) previamente instalado

```bash
asdf plugin-add golang
asdf install golang 1.21.5
asdf global golang 1.21.5
asdf shell golang 1.21.5
```

Pra ver se está tudo ok e rode um `go version` se o retorno for parecido com o da imagem está tudo ok

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/84mlu5jrklojephvzdrs.png)

# Parabêns

Agora você tem um WSL, configurado e pronto para contibuir com a comunidade opensource ou fazer seus projetos pessoais, saiba que a jornada no linux é cheia de altos e baixo, qualquer duvida pergunte para alguem em um forum/comunidade que participa e com certeza alguem vai te ajudar, caso queira adaptar esse guia para seu caso especifico é só clonar ele com o comando `` e ser feliz.

Muito obrigado por ficar até aqui, não deixe de ver a sessão abaixo.

[Me siga](https://piluvitu.dev/) e siga a [devhatt](https://bento.me/devhatt) nas redes sociais, fique alerta para mais conteúdos, quem sabe não tem algum extra 🤠