Manjaro Pós Instalação
Tags: manjaro, shell, script, automatico
Published: 2022-03-28 23:17:39

## Pós-instalação com um shell script.

Se você usa Linux, é possível usar shell script para automatizar algumas atividades, entre elas, instalar e configurar ambientes. 

A proposta é simples, vamos criar um arquivo.sh para instalar pacotes e ajustar algumas configurações.

Para quando tivemos aquela distro zero, basta roda o arquivo.sh e em pouco tempo ter todo o ambiente pronto para produção.

## Shell Script

Shell script é o nome dado a um arquivo que será interpretado por algum programa tipo Shell, ou seja, é linha de comando da brava.

Para iniciar, vou usar o pacman, mas se você estiver em outra distro basta pesquisar qual é o gerenciador de pacote da sua distro.

## Iniciando 
Vou começar criando um arquivo chamado manjaro_pos_instalacao.sh.


Vou separar a instalação por etapas

+ Atualização dos programas iniciais e do sistema
+ Programas AUR
+ Programas SNAP
+ Programas Flatpak
+ Configurar docker e o git

Agora que temos, um norte para seguir vamos prosseguir.

### Primeira Etapa

```sh
#!/bin/bash
echo "######################################################"
echo "### $0 by sposigor@gmail.com ###"
echo "######################################################"


echo "====================================================================="
echo "======================== Atualizar Pacotes =========================="
echo "====================================================================="
sudo pacman -Syyu --noconfirm &&
```

Com o comando **sudo pacman -Syyu --noconfirm** já atualizamos o sistema e os pacotes iniciais para o mais recente possível.

Enquanto o **&&** é para concatenar os comandos a seguir.

### Segunda Etapa

Instalando os pacotes AUR que uso, sendo:

+ Discord
+ Flameshort: tira print com seleção vale a pena conhecer
+ Vscode
+ processing: É uma IDE com foco em arte e imagem
+ rclone: Uso para acessa minhas contas na nuvem e Google drive a partir da linha de comando
+ docker
+ docker-compose
+ minikube: Para simular um kubernetes na máquina
+ obs-studio

Naturalmente para cada necessidade, uma configuração diferente.

```sh
echo "====================================================================="
echo "========= Instalar programas usados no AUR =========="
echo "====================================================================="
pacman -S --noconfirm --needed \
 discord flameshot visual-studio-code-bin processing4 rclone docker docker-compose minikube obs-studio &&
```

A novidade é o **--needed** que não reinstalar alguma dependência que já foi instalada, poupando arquivos desnecessários no processo de instalação.

### Terceira Etapa

Com isso, precisamos instalar alguns pacotes snap, porém por padrão o snap não vem habilitado no manjaro, para isso vamos habilitar e em seguida instalar alguns pacotes.

Sendo eles:
+ GCP na linha de comando
+ Postman: para testa APIs
+ Chromium
+ Beekeeper Studio: Sendo uma IDE para SQL, suporta diversas categorias como o MySql e o pgSQL.
+ Kubectl para o Kubernetes

```sh
echo "====================================================================="
echo "========= Instalar programas usados no Snap e Habilitando =========="
echo "====================================================================="
sudo pacman -S --noconfirm  snapd &&
yes | sudo systemctl enable --now snapd.socket &&
yes | sudo snap install \
 google-cloud-cli postman chromium beekeeper-studio kubectl &&
```

Instalamos com o pacman o **snapd** e em seguida falamos para o sistema que queremos habilitar com **enable --now snapd.socket** e por fim fazemos a instalação dos pacotes

### Quarta Etapa

Finalmente o Flatpak, no meu caso é somente o **GitKraken** para dar aquela ajuda com o git. E assim como o snap, precisamos habilitar.

```sh
echo "====================================================================="
echo "========= Instalar programas usados no Flatpak e Habilitando =========="
echo "====================================================================="
yes | sudo pacman -S flatpak &&
yes | sudo flatpak install gitkraken &&
```

### Quinta Etapa

Com isso, irei configurar o git e o docker para o uso no dia a dia.

```sh
echo "====================================================================="
echo "========= Habilitando o SSH =========="
echo "====================================================================="
sudo systemctl enable sshd.service; sudo systemctl start sshd.service &&


echo "====================================================================="
echo "========= Criando a chave SSH =========="
echo "====================================================================="
mkdir ~/.ssh &&
HOSTNAME=`hostname` ssh-keygen -t rsa -b 4096 -C "$HOSTNAME" -f "$HOME/.ssh/id_rsa" -P "" && cat ~/.ssh/id_rsa.pub &&
touch ~/.ssh/authorized_keys &&
chmod 700 ~/.ssh && chmod 600 ~/.ssh/* &&
cp -r /root/.ssh /home/$u/ &&
chown $u:$u /home/$u/.ssh -R &&


echo "====================================================================="
echo "========= Configurando o Docker =========="
echo "====================================================================="
sudo groupadd docker &&
sudo usermod -aG docker $(cat user.log) &&
sudo sed -i 's/GRUB_CMDLINE_LINUX=\"\"/GRUB_CMDLINE_LINUX=\"cgroup_enable=memory swapaccount=1\"/g' /etc/default/grub &&
sudo update-grub --noconfirm &&


echo "====================================================================="
echo "========= Configurando o Git =========="
echo "====================================================================="
git config --global user.name "Igor Esposito"
git config --global user.email sposigor@gmail.com
```

E por último e não mais importante, vamos remover pacotes inúteis.

```sh
echo "====================================================================="
echo "=============== Removendo pacontes inuteis =================="
echo "====================================================================="
pacman -Qdtq | pacman --noconfirm -Rns - &&
pacman -Sc --noconfirm
```

## Considerações finais e links uteis

É um processo bem simples, se você mudar muito de distro, ou por algum motivo seu sistema quebra, o processo de retornar ao ponto de produção não precisar ser desgastante, essa é uma demostração simples de como podemos usar o shell script para resolver um problema rotineiro. Com o tempo, basta acrescentar ou remover pacotes e comandos para deixar compatível com o seu dia a dia.

[Repositório do exemplo](https://github.com/Sposigor/manjaro_pos_install)

[Aprenda shell script com o geofisicando](https://www.youtube.com/playlist?list=PLLCFxfe9wkl-k0w-c_1i4sdZPUYt0Yc2P)

Se precisar de mais exemplos, aquela pesquisa classuda no Google vai lhe ajudar.