DevSecOps

6 abr, 2017

Arch Linux – a melhor distro de todos os tempos?

Publicidade

Desde que  decidi voltar do macOS para o Linux, eu não queria apenas voltar ao antigo Ubuntu (sim, eu fico entediado de fazer as mesmas coisas por muito tempo). Então, tentei o Fedora 25 e fiquei surpreso com a forma como o Gnome 3.22 evoluiu muito bem.

Em comparação com o Ubuntu, os padrões do Fedora ficaram mais agradáveis. Na prática, você pode forçar qualquer distro para se tornar o que quiser, mas eu prefiro não ficar brigando com o que já vem por padrão. O Ubuntu é muito focado para Unity e eu realmentenão gosto disso. Parece mais um brinquedo do que um ambiente sério para trabalhar.

O Fedora 25 parece bom com o Gnome 3, mas ainda me deu algumas dores de cabeça. Uma coisa que não funcionou de jeito nenhum foi o “Online Accounts” do Gnome. Também chamado de  “GOA”, ele coleta tokens de autenticação depois que faz login em seus serviços como o Google. Em seguida, aplicativos compatíveis com ele, como o Evolution e o calendário interno, podem usar o mesmo login. Mas os tokens estavam expirando o tempo todo, então a integração era inútil. E a configuração manual do Evolution para o Google não é exatamente agradável.

Agora a surpresa: no Arch Linux, eu também escolhi o Gnome 3.22 como o meu desktop. Eu loguei nas minhas contas do Google com o GOA e estou muito feliz em relatar que ele não está expirando e “Simplesmente Funciona”! Este é o tipo de polimento que eu espero de uma grande distro, não o fiasco que é rotulado como “estável” no Fedora.

Por que Arch Linux?

A maioria das grandes distros é dividida entre “estável” (mas com pacotes muito antigos) e “instável” (mas com a as coisas mais legais e mais recentes). Se instalar as versões de suporte a longo prazo / Long-Term Support (LTS), você está condenado a ter apenas pacotes antigos de alguns anos atrás. Se  instalar os repositórios instáveis, você está condenado a ter coisas explodindo em sua cara sem nenhuma explicação e perder horas navegando no Stackoverflow.

Agora, parece que Arch descobriu o nível exatamente “certo” de confiança entre estável e de ponta. Ele continua empurrando a versão mais recente do software sem quebrar todo o resto o tempo todo. Então, no Ubuntu 16.04 e no Fedora 25, se eu quiser instalar o Postgresql, estou limitado ao 9.4 ou 9.5, mas no Arch  posso acessar o 9.6 dos repositórios oficiais do Pacman. (A propósito, “Pac” kage “Man” ager é o nome óbvio mais legal de todos os tempos).

Você pode facilmente fazer pacman -Sy postgresql e está tudo certo!

E se você está no Ubuntu 14.04 e agora você quer 16.04, boa sorte em dist-upgrade o seu caminho. É mais fácil começar do zero.

Então, parece que a filosofia do Arch é ter a versão estável mais recente de todos os softwares que não irão quebrar seu sistema. Não existe tal coisa como uma atualização “big bang” a cada 6 meses, que quebra tudo. Em vez disso, você tem um sistema constantemente atualizado, onde estará sempre na versão mais recente, sem ter que esperar mais um ano para o próximo grande LTS ou se arriscar sozinho com repositórios instáveis de terceiros.

Todas as distro principais têm repositórios “não suportados” para binários proprietários (codecs de multimídia, por exemplo) ou software diversos de terceiros. Para isso, existe o  Arch User Repository / Repositório de Usuários do Arch (AUR): uma coleção de pequenos repositórios Git de usuários que mantém arquivos de texto PKGBUILD simples.

O AUR é uma coisa muito esperta. Se você vem de macOS e está familiarizado com Homebrew, vai entender: ele se parece com Casks e Formulas. Um arquivo PKGBUILD descreve uma receita para baixar um pacote disponível DEB ou tarball, desmontá-lo e reconstruí-lo como um pacote compatível com Pacman. Ele descreve as dependências necessárias e torna o processo de instalação super suave.

Por exemplo, Sublime Text apenas tem uma opção para baixar um pacote DEB ou um tarball com os binários. O mesmo acontece com Spotify, Franz, etc. Às vezes, você pode registrar Pacotes de Arquivos Pessoais / Personal Package Archives (PPAs) e depois fazer apt-get para instalá-los. Mas ainda vai precisar de alguém para construir, manter e distribuir esses pacotes corretamente. É muito trabalho, por isso poucos fazem.

Agora, manter um repositório Git  com um simples arquivo de texto PKGBUILD é bem mais fácil. O makepkg faz o trabalho pesado de construir o pacote que você precisa, em sua máquina e então o pacman pode instalar como qualquer outro pacote. Não mais fazendo wget de tarballs e configurando tudo manualmente!

Finalmente, eu posso só fazer pacman -Syu e ter tudo “realmente” atualizado sem ter que me preocupar com o próximo grande LTS, que acabará me forçando a reinstalar tudo a partir do zero.

Arch Linux é perfeito para “iniciantes”

Eu tenho ouvido sobre Arch faz tempo e seus usuários são muito entusiasmados em tentar convencer outros a participar. Sempre que você vê um grupo de fãs tão leal, deve haver algo interessante escondido por baixo. Atualizações em andamento / Rolling upgrades, Pacman, AUR são realmente razões muito importantes.

Depois de usr por apenas um dia, eu percebi que Arch é bom para usuários avançados, mas também para iniciantes. Não porque é fácil. Pelo contrário: é porque é difícil na medida certa.

A maioria dos “usuários de Linux” de hoje em dia só tem distros de instalação trivial, como o Ubuntu ou Elementary, e eles não têm ideia do que se passa por baixo. Cegamente clicando em “próximo” nos instaladores gráficos.

A maioria não tem ideia do que são TTYs. Que você pode sondar dispositivos USB com ferramentas de linha de comando, como lsusb ou que você deve usar ferramentas como fdisk para partição e, em seguida, mkfs.ext4 para formatá-los. Que os arquivos de swap são partições com um formato especial. Eles não estão cientes de opções LVM para particionamento flexível ou mesmo que LVM sequer existe. Que a “coisa” que você escolhe o seu kernel no menu de inicialização é chamado Grub e que você pode configurá-lo.

Há muita coisa acontecendo na montagem de uma distribuição baseada em Linux. Mas os instaladores gráficos escondem a maior parte da diversão. O Arch Linux obriga você a ir passo a passo e realmente sentir que você “é o dono” da sua máquina e não o contrário.

Se você é um “iniciante”, eu realmente recomendo a instalar rapidamente uma distro como Arch algumas vezes, em diferentes configurações de máquinas, para realmente entender como um sistema operacional funciona.

O Arch Wiki é um repositório de informações muito abrangente e detalhado com tudo que você precisa saber sobre a instalação e manutenção de cada componente de um sistema Linux apropriado. Você vai aprender muito no processo.

Mas se você é como eu e tem feito isso desde os meados de 1990 e início de 2000 (diabos, eu tive que abrir meu caminho através do Slackware 1.0. Ainda me lembro de ter que usar disquetes de boot e roote destruir meus discos rígidos não entendendo como configurar cilindros e setores através do fdisk), você pode pular tudo isto. Para você, usuários avançados / experientes, recomendo que use o Arch Linux Anywhere, que vai apresentar um instalador mais automatizado, similar ao das grandes distros mais famosas.

Ele vai instalar o Arch por você, vai lhe dar a medida certa de automação para não desperdiçar muito tempo instalando uma configuração leve de Arch, sem bloatware.

Pacaur – a melhor maneira de lidar com AUR

Os usuários do Arch adoram elogiar o Pacman. No geral, você pode basicamente fazer:

sudo pacman -S chromium

E é só isso. E então você pode fazer sudo pacman -Syu para atualizar todos os pacotes instalados. Este é o básico.

Se você é um desenvolvedor, também recomendo que instale os pacotes básicos de desenvolvimento:

sudo pacman -Sy --needed base-devel

Agora, você pode instalar manualmente os pacotes AUR. Você pode ir ao website deles e procurar por “terminix” (uma alternativa muito melhor ao Terminal, similar ao iTerm2 do Mac) por exemplo. Você vai acabar nesta página e terá que fazer, manualmente, o seguinte:

git clone https://github.com/gnunn1/terminix.git
cd terminix
makepkg -si

Parece simples, mas você pode fazer melhor que isso instalando o Pacaur, uma “carapaça” sobre o Pacman. Se você estiver usando um terminal gráfico como Terminal ou Terminix NÃO SE ESQUEÇA de editar o perfil para “Executar comando como shell de login / Run command as login shell”, caso contrário, haverá um problema PATH e o Cower falhará na instalação.

sudo pacman -S expac yajl --noconfirm
gpg --recv-keys --keyserver hkp://pgp.mit.edu 1EB2638FF56C0C53
git clone https://aur.archlinux.org/cower.git
cd cower
makepkg -si
cd ..
git clone https://aur.archlinux.org/pacaur.git
cd pacaur
makepkg -si
cd ..

Em resumo, o Pacaur pode ser usado não apenas como complemento para instalar pacotes AUR, mas também se quiser usar uma única ferramenta para gerenciar ambos – pacotes AUR e pacotes Pacman oficiais. Todos os comandos -S serão de Pacman. Então, em vez de fazer sudo pacman -Syu para atualizar todos os pacotes, você pode substituí-lo por pacaur -Syu. Todo o resto, em geral, “simplesmente funciona”.

Quando tentar instalar um pacote com -S ele vai olhar para os repositórios oficiais primeiro. Se não encontrar, então vai tentar pelo AUR. Existe até mesmo um GUI se quiser:

pacaur -S pamac-pacaur

Agora, para instalar o mesmo Terminix, você pode fazer apenas isso:

pacaur -Sy terminix

Ele fará perguntas de sim / não simples, como “Você deseja editar o arquivo de compilação?” Você pode responder “n” a esses e confirmar “y” se ele perguntar se você quer instalar dependências.

E é isso! Você pode pesquisar os repositórios AUR com:

pacaur -s spotify

Ele vai lhe dar um monte de opções, por exemplo:

$ pacaur -s spotify
aur/spotify 1.0.47.13-1 (1037, 36.09) [installed]
    A proprietary music streaming service
aur/playerctl 0.5.0-1 (127, 11.33)
    mpris media player controller and lib for spotify, vlc, audacious, bmp, xmms2, and others.
aur/blockify 3.6.3-3 (106, 5.61)
    Mutes Spotify advertisements.
...

Bom senso, meus amigos. Leia, interprete, escolha. Arch exige que você seja uma pessoa inteligente e por “inteligente” quero dizer: que saiba ler! A maioria das pessoas simplesmente não lêem e apenas clicam nas coisas como idiotas.

Agora se você sabe o nome exato do pacote, basta instalá-lo normalmente assim:

pacaur -S spotify

Pacaur é um dos muitos assistentes de AUR. Eu comecei pelo Yaourt, mas após alguma pesquisa você descobre que só deve tentar aurutils, bauerbill ou pacaur. Eu prefiro o último porque é mais fácil soletrar.

pacaur -Syua

Isso deve manter seu sistema atualizado, tanto os pacotes oficiais quanto os pacotes AUR.

Asdf – o último gerenciador  de versão de linguagens que você vai precisar

Se você é um Rubista, está familiarizado com RVM, rbenv, chruby. Se você vem do Node.js, conhece o NVM para gerenciar suas diferentes versões do Node. Cada nova linguagem hoje em dia precisa de um gerenciador de versão, já que estão evoluindo rapidamente e porque, se você trabalha com projetos de clientes, acabará precisando usar uma versão antiga para lidar com software legado.

Portanto, mesmo que você possa instalar o atual Ruby 2.3.3 estável apenas fazendo pacman -S ruby ou pacaur -S ruby você eventualmente precisará voltar para o Ruby 2.1 ou mais antigo para um projeto de cliente, por exemplo.

Você deve instalar RVM? Ou rbenv? E como você lida com diferentes versões de Clojure, Go, Rust, Elixir?

Isso soa como mais um pesadelo de manutenção para lidar. Mas alguém decidiu resolver este problema de uma vez e de uma forma elegante. Conheça o asdf – e dê um abraço em Akash Manohar se um dia cruzar com ele.

Vamos instalá-lo (a partir do README do projeto):

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.2.1
Em seguida, edite os arquivos de configuração do shell:
# For Ubuntu or other linux distros
echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc
echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc

# OR for Mac OSX
echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bash_profile
echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bash_profile

# For the Fish shell
echo 'source ~/.asdf/asdf.fish' >> ~/.config/fish/config.fish
mkdir -p ~/.config/fish/completions; and cp ~/.asdf/completions/asdf.fish ~/.config/fish/completions

# If, like me, you like ZSH with YADR (you have to install YADR before this)
touch ~/.zsh.after/asdf.zsh
echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.zsh.after/asdf.zsh
echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.zsh.after/asdf.zsh
Esta ferramenta é  autoexplicativa. Vamos começar instalando um monte de plugins (tabela completa de links no arquivo README):
asdf plugin-add clojure https://github.com/vic/asdf-clojure.git
asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git
asdf plugin-add erlang https://github.com/asdf-vm/asdf-erlang.git
asdf plugin-add golang https://github.com/kennyp/asdf-golang.git
asdf plugin-add ruby https://github.com/asdf-vm/asdf-ruby.git
asdf plugin-add rust https://github.com/code-lever/asdf-rust.git
asdf plugin-add nodejs https://github.com/asdf-vm/asdf-nodejs.git

Se você é como eu, deve estar super animado porque já sabe o que vamos fazer a seguir:

sudo pacman -Sy jdk8-openjdk # you need Java for Clojure

asdf install clojure 1.8.0
asdf global clojure 1.8.0
mkdir ~/bin
wget https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein -O ~/bin/lein
chmod +x ~/bin/lein
export PATH=$PATH:~/bin
# echo "PATH=$PATH" > ~/.zsh.after/binpath.zsh # if you use YADR+ZSH
lein

asdf install erlang 19.0
asdf global erlang 19.0

asdf install elixir 1.4.0
asdf global elixir 1.4.0
mix local.hex
mix local.rebar

asdf install golang 1.7.4
asdf global golang 1.7.4

asdf install ruby 2.4.0
asdf global ruby 2.4.0
gem install bundler

asdf install rust 1.14.0
asdf global rust 1.14.0

asdf install nodejs 7.4.0
asdf global nodejs 7.4.0
npm -g install brunch phantomjs

É isso aí! Agora temos todas as linguagens que precisamos instaladas e prontas para usar! E se eu precisar do Ruby 2.3.1 para um projeto de cliente?

asdf install ruby 2.3.1
asdf local ruby 2.3.1

E agora eu tenho 2.3.1 localmente (eu posso mudá-lo para ser o padrão do sistema usando global).

A maioria do esforço de manutenção se resume a isto:

asdf plugin-update --all # update the individual plugins
asdf list-all [language] # to list all available versionf

E é só! Você tem quase tudo que  precisa para desenvolver software.

Softwares úteis para instalar

Agora deixe-me recomendar alguns softwares:

# make sure you're up to date
sudo pacman -Syu

# install multimedia codecs
sudo pacman -Sy gstreamer0.10-plugins
sudo pacman -Sy exfat-utils fuse-exfat a52dec faac faad2 flac jasper lame libdca libdv gst-libav libmad libmpeg2 libtheora libvorbis libxv wavpack x264 xvidcore gstreamer0.10-plugins flashplugin libdvdcss libdvdread libdvdnav gecko-mediaplayer dvd+rw-tools dvdauthor dvgrab pulseaudio-equalizer-

# if you need japanese fonts like me
sudo pacman -Sy adobe-source-han-sans-otc-fonts otf-ipafont

# some components that you will need
sudo pacman -Sy fuse-exfat 

# I personally like the Numix theme and Breeze Icons, change them with the Tweak Tool
sudo pacman -Sy numix-themes breeze-icons 

# Ifnstall more good looking fonts
sudo pacman -Sy ttf-dejavu 
pacaur -S ttf-ms-fonts ttf-vista-fonts ttf-liberation adobe-source-sans-pro-fonts ttf-ubuntu-font-family

# Firefox and Java plugin
sudo pacman -Sy icedtea-web firefox

# for devs
sudo pacman -Sy zsh the_silver_searcher gvim imagemagick htop
pacaur -Sy ttf-hack

# Native wrapper for Web apps such as Slack, Hangout, etc
pacaur -Sy franz-bin

# Best native Twitter client for Linux
pacaur -Sy corebird

# No need to explain
pacaur -Sy spotify
pacaur -Sy sublime-text-dev # install these plugins http://www.hongkiat.com/blog/sublime-text-plugins/

# If you like to read RSS
pacaur -Sy feedreader-beta

# if you need Office-like support
sudo pacman -Sy libreoffice-fresh

# if you need Photoshop-like support
sudo pacman -Sy gimp
sh -c "$(curl -fsSL https://raw.githubusercontent.com/doctormo/GimpPs/master/tools/install.sh)"

# if you want a really good video editor
sudo pacman -Sy frei0r-plugins dvdauthor vlc
pacaur -Sy kdenlive

# this can make CPU-intensive software to behave better and guarantee better user experience
pacaur -Sy ananicy-git

# dropbox is the most horrible piece of software, but you may need it:
pacaur -Sy dropbox dropbox-cli nautilus-dropbox

Como de costume, eu gosto de substituir Bash por Zsh e configurar Vim com YADR:

sh -c "`curl -fsSL https://raw.githubusercontent.com/skwp/dotfiles/master/install.sh`"
touch ~/.vimrc.before
touch ~/.vimrc.after
echo "let g:yadr_using_unsolarized_terminal = 1" >> ~/.vimrc.before
echo "let g:yadr_disable_solarized_enhancements = 1" >> ~/.vimrc.after
echo "colorscheme gruvbox" >> ~/.vimrc.after

Para instalar e configurar o Postgresql 9.6:

sudo pacman -Sy postgresql
sudo -u postgres -i
initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data'
exit

# do not do this in Production machines
sudo sed -i.bak 's/ident/trust/' /var/lib/postgres/data/pg_hba.conf
sudo systemctl start postgresql
sudo systemctl enable postgresql

sudo -u postgres -i
createuser --interactive # create with your username and superuser role
createdb youruser
exit
sudo systemctl restart postgresql

Se você deseja instalar o Docker:

sudo pacman -Sy docker
sudo usermod -aG docker $USER
sudo systemctl start docker
sudo systemctl enable docker
logout

Nós sempre precisamos de Redis, Memcached. Então, vamos instalá-los:

sudo pacman -Sy redis memcached
sudo systemctl start redis
sudo systemctl enable redis
sudo systemctl start memcached
sudo systemctl enable memcached

Depois de instalar e remover um monte de software, você pode acabar ficando com pacotes desnecessários comendo espaço em disco. Você pode limpar assim:

sudo pacman -Rns $(pacman -Qtdq)

E como eu disse antes, o Arch Wiki é super útil para  continuar a ajustar o seu sistema. Por isso, certifique-se de ler artigos como esta página “Improving Performance” / “Melhorando o Desempenho”.

Kernels para desktop

Uma coisa para se ter em mente sobre a maioria das distros do Linux é que o kernel é normalmente compilado para ser melhor otimizado para Servidores.

Hardware moderno, especialmente com muita RAM e equipado com um SSD “deve” funcionar bem o suficiente. Mas nem sempre, você pode experimentar alguns “engasgos” ou mesmo total falta de responsividade.

Há muitas razões do porquê disto, mas os 2 principais culpados são a memória de aplicativos sendo paginada para a troca de disco e o planejador de I/O do kernel do Linux.

Em um cenário de servidor, você quer que os processos tenham uma parcela justa de recursos, razão pela qual um planejador de processos, como CFS – Planejador Completamente Justo / Completely Fair Scheduler – e CFQ – Queuing Completamente Justo / Complete Fairness Queueing – para I / O, são fantásticos.

Mas no desktop a história é totalmente diferente. Você está disposto a negociar alta taxa de transferência por menor latência, a fim de ter respostas mais rápidas, ou responsividade. Ninguém quer ter a sua interface do usuário e seta do mouse congelados ao copiar arquivos grandes para drives USB ou enquanto espera por aquele desagradável make -j9 para terminar de compilar seu também desagradável gcc-gcj. Você pode acabar ficando com sua interface gráfica congelada por horas! Isto é  inaceitável!

O que você quer para o uso do Desktop, com dezenas de processos aleatórios fazendo operações aleatórias, é configuração “de tempo real suave”. Uma preempção mais agressiva onde o Kernel dá algum controle de volta para a interface do usuário para que você possa fazer outras coisas – embora mais lentamente – e gerencie melhor a concorrência no acesso a disco. Baixa latência é a chave para ter uma experiência de usuário suave.

Para aumentar a capacidade de resposta, a primeira coisa mais importante que você deve fazer configurar é isso:

sudo tee -a /etc/sysctl.d/99-sysctl.conf <<-EOF
vm.swappiness=1
vm.vfs_cache_pressure=50
vm.dirty_background_bytes=16777216
vm.dirty_bytes=50331648
EOF

Reinicialize a máquina. Se quiser saber mais sobre essas configurações, leia isto.

E você pode querer instalar um Kernel personalizado com um Planejador diferente. Existem 3 opções hoje em dia: Zen, Liquorix e CK. O Liquorix usa o planejador de processos e I/O do CK e o Zen é uma versão do Liquorix.

Portanto você quer ficar com o Zen porque é mantido nos repositórios oficiais em formato binário (acredite em mim, você não quer esperar pela compilação de um kernel personalizado. Leva uma eternidade).

sudo pacman -Sy linux-zen
sudo grub-mkconfig -o /boot/grub/grub.cfg

Reinicialize sua máquina e pronto.

A principal alteração é provavelmente o Planejador de I/O, atualizando do CFQ padrão para BFQ. Se você estiver usando um disco rígido mecânico, vai querer usar o BFQ (que Zen habilita por padrão). Se estiver usando um SSD, vai querer o ‘deadline’ em vez disso (porque SSDs não tem problema de concorrência).

NÃO INSTALE ESSES KERNELS EM SERVIDORES DE PRODUÇÃO! Eles são destinados apenas para usos em desktop!

No geral, Zen tem o melhor equilíbrio entre estabilidade e conjunto de ajustes. Você deve usá-lo especialmente em hardware mais antigo. Hardware moderno, como eu disse, talvez não faça tanta diferença.

Conclusão

Não tenho certeza se são os mantenedores do Arch que estão fazendo um super trabalho ou se é a RedHat  a Canonical que estão vascilando com suas distros, em comparação.

Quero dizer, Ubuntu, Fedora, OpenSuse, Elementary, são todas distribuições boas e agradáveis que, na maioria das vezes, “simplesmente funciona”, particularmente se você tiver hardware moderno.

Mas para uma distro que muitos consideram somente para “usuários avançados”, Arch é muito é bem amigável.

No mesmo hardware, a experiência do Gnome 3 sob Arch é melhor do que o mesmo Gnome 3 sobre o Fedora. Comparado ao Unity no Ubuntu, está milhas a frente. É rápido, fluido, bonito, todos os padrões funcionam bem.

Eu estou testando com um velho Lenovo Thinkcentre Edge 71 com um disco rígido mecânico de 5400rpm e meros 8GB de RAM. No Fedora, a inicialização é super lenta.

A configuração do Arch Linux faz com que esta velha máquina parece bem mais rápida! Eu realmente quero saber qual é o secredo. Talvez seja apenas que eles não bagunçam demais as configurações e oferecem pacotes sólidos sem muita “mexeção”.

E, de repente, eu percebo que não tenho que me preocupar com grandes atualizações. Rolling upgrades / atualizações em andamento, continuamente me traz outra camada de confiança.

Arch me faz sentir como se eu estivesse realmente no controle novamente, sem exigir que eu desperdice horas ajustando coisas até chegar a meu gosto. Os padrões são sólidos e eu posso fazer pequenas melhorias sobre eles sempre que eu precisar.

Meu cumprimentos aos mantenedores do Arch, esta é a melhor distro Linux com que já tive o prazer de usar. Espero que isso continue enquanto eu continuar usando isso como meus sistema principal. Mas, até agora, estou convencido de que esta é a escolha certa.

***

Link original do artigo: http://www.akitaonrails.com/2017/01/10/arch-linux-best-distro-ever