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