<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Igor Esposito</title>
    <description>The latest articles on Forem by Igor Esposito (@sposigor).</description>
    <link>https://forem.com/sposigor</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F832732%2F6f2f0400-24f1-465e-b572-e832e6312cf4.jpeg</url>
      <title>Forem: Igor Esposito</title>
      <link>https://forem.com/sposigor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sposigor"/>
    <language>en</language>
    <item>
      <title>Manjaro Pós Instalação</title>
      <dc:creator>Igor Esposito</dc:creator>
      <pubDate>Mon, 28 Mar 2022 23:17:39 +0000</pubDate>
      <link>https://forem.com/sposigor/manjaro-pos-instalacao-1de5</link>
      <guid>https://forem.com/sposigor/manjaro-pos-instalacao-1de5</guid>
      <description>&lt;h2&gt;
  
  
  Pós-instalação com um shell script.
&lt;/h2&gt;

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

&lt;p&gt;A proposta é simples, vamos criar um arquivo.sh para instalar pacotes e ajustar algumas configurações.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Shell Script
&lt;/h2&gt;

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

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

&lt;h2&gt;
  
  
  Iniciando
&lt;/h2&gt;

&lt;p&gt;Vou começar criando um arquivo chamado manjaro_pos_instalacao.sh.&lt;/p&gt;

&lt;p&gt;Vou separar a instalação por etapas&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Atualização dos programas iniciais e do sistema&lt;/li&gt;
&lt;li&gt;Programas AUR&lt;/li&gt;
&lt;li&gt;Programas SNAP&lt;/li&gt;
&lt;li&gt;Programas Flatpak&lt;/li&gt;
&lt;li&gt;Configurar docker e o git&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agora que temos, um norte para seguir vamos prosseguir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Primeira Etapa
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"######################################################"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"### &lt;/span&gt;&lt;span class="nv"&gt;$0&lt;/span&gt;&lt;span class="s2"&gt; by sposigor@gmail.com ###"&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"######################################################"&lt;/span&gt;


&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"======================== Atualizar Pacotes =========================="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-Syyu&lt;/span&gt; &lt;span class="nt"&gt;--noconfirm&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com o comando &lt;strong&gt;sudo pacman -Syyu --noconfirm&lt;/strong&gt; já atualizamos o sistema e os pacotes iniciais para o mais recente possível.&lt;/p&gt;

&lt;p&gt;Enquanto o &lt;strong&gt;&amp;amp;&amp;amp;&lt;/strong&gt; é para concatenar os comandos a seguir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Segunda Etapa
&lt;/h3&gt;

&lt;p&gt;Instalando os pacotes AUR que uso, sendo:&lt;/p&gt;

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

&lt;p&gt;Naturalmente para cada necessidade, uma configuração diferente.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"========= Instalar programas usados no AUR =========="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
pacman &lt;span class="nt"&gt;-S&lt;/span&gt; &lt;span class="nt"&gt;--noconfirm&lt;/span&gt; &lt;span class="nt"&gt;--needed&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
 discord flameshot visual-studio-code-bin processing4 rclone docker docker-compose minikube obs-studio &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A novidade é o &lt;strong&gt;--needed&lt;/strong&gt; que não reinstalar alguma dependência que já foi instalada, poupando arquivos desnecessários no processo de instalação.&lt;/p&gt;

&lt;h3&gt;
  
  
  Terceira Etapa
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Sendo eles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GCP na linha de comando&lt;/li&gt;
&lt;li&gt;Postman: para testa APIs&lt;/li&gt;
&lt;li&gt;Chromium&lt;/li&gt;
&lt;li&gt;Beekeeper Studio: Sendo uma IDE para SQL, suporta diversas categorias como o MySql e o pgSQL.&lt;/li&gt;
&lt;li&gt;Kubectl para o Kubernetes
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"========= Instalar programas usados no Snap e Habilitando =========="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; &lt;span class="nt"&gt;--noconfirm&lt;/span&gt;  snapd &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="nb"&gt;yes&lt;/span&gt; | &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; &lt;span class="nt"&gt;--now&lt;/span&gt; snapd.socket &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="nb"&gt;yes&lt;/span&gt; | &lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
 google-cloud-cli postman chromium beekeeper-studio kubectl &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instalamos com o pacman o &lt;strong&gt;snapd&lt;/strong&gt; e em seguida falamos para o sistema que queremos habilitar com &lt;strong&gt;enable --now snapd.socket&lt;/strong&gt; e por fim fazemos a instalação dos pacotes&lt;/p&gt;

&lt;h3&gt;
  
  
  Quarta Etapa
&lt;/h3&gt;

&lt;p&gt;Finalmente o Flatpak, no meu caso é somente o &lt;strong&gt;GitKraken&lt;/strong&gt; para dar aquela ajuda com o git. E assim como o snap, precisamos habilitar.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"========= Instalar programas usados no Flatpak e Habilitando =========="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;yes&lt;/span&gt; | &lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; flatpak &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="nb"&gt;yes&lt;/span&gt; | &lt;span class="nb"&gt;sudo &lt;/span&gt;flatpak &lt;span class="nb"&gt;install &lt;/span&gt;gitkraken &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Quinta Etapa
&lt;/h3&gt;

&lt;p&gt;Com isso, irei configurar o git e o docker para o uso no dia a dia.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"========= Habilitando o SSH =========="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;sshd.service&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start sshd.service &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;


&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"========= Criando a chave SSH =========="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; ~/.ssh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="nv"&gt;HOSTNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;hostname&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; rsa &lt;span class="nt"&gt;-b&lt;/span&gt; 4096 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOSTNAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.ssh/id_rsa"&lt;/span&gt; &lt;span class="nt"&gt;-P&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cat&lt;/span&gt; ~/.ssh/id_rsa.pub &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="nb"&gt;touch&lt;/span&gt; ~/.ssh/authorized_keys &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="nb"&gt;chmod &lt;/span&gt;700 ~/.ssh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;chmod &lt;/span&gt;600 ~/.ssh/&lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; /root/.ssh /home/&lt;span class="nv"&gt;$u&lt;/span&gt;/ &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="nb"&gt;chown&lt;/span&gt; &lt;span class="nv"&gt;$u&lt;/span&gt;:&lt;span class="nv"&gt;$u&lt;/span&gt; /home/&lt;span class="nv"&gt;$u&lt;/span&gt;/.ssh &lt;span class="nt"&gt;-R&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;


&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"========= Configurando o Docker =========="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;groupadd docker &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; docker &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;user.log&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="nb"&gt;sudo sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'s/GRUB_CMDLINE_LINUX=\"\"/GRUB_CMDLINE_LINUX=\"cgroup_enable=memory swapaccount=1\"/g'&lt;/span&gt; /etc/default/grub &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;update-grub &lt;span class="nt"&gt;--noconfirm&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;


&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"========= Configurando o Git =========="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Igor Esposito"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email sposigor@gmail.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E por último e não mais importante, vamos remover pacotes inúteis.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"=============== Removendo pacontes inuteis =================="&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"====================================================================="&lt;/span&gt;
pacman &lt;span class="nt"&gt;-Qdtq&lt;/span&gt; | pacman &lt;span class="nt"&gt;--noconfirm&lt;/span&gt; &lt;span class="nt"&gt;-Rns&lt;/span&gt; - &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
pacman &lt;span class="nt"&gt;-Sc&lt;/span&gt; &lt;span class="nt"&gt;--noconfirm&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Considerações finais e links uteis
&lt;/h2&gt;

&lt;p&gt;É 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.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Sposigor/manjaro_pos_install"&gt;Repositório do exemplo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/playlist?list=PLLCFxfe9wkl-k0w-c_1i4sdZPUYt0Yc2P"&gt;Aprenda shell script com o geofisicando&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se precisar de mais exemplos, aquela pesquisa classuda no Google vai lhe ajudar.&lt;/p&gt;

</description>
      <category>manjaro</category>
      <category>shell</category>
      <category>script</category>
      <category>automatico</category>
    </item>
  </channel>
</rss>
