Desenvolvimento

25 jan, 2017

Personalizando o Fedora 25 para desenvolvedores

Publicidade

Update: após escrever este artigo, tendo testado o Fedora por alguns dias, eu decidi testar o Arch Linux e não poderia estar mais feliz! Recomendo que você teste o Arch também, ele provavelmente vai te surpreender. Você pode também se interessar em melhoria avançada no Linux para otimização de responsividade no desktop.

 

Eu sou um usuário do Ubuntu há bastante tempo. Sempre que eu preciso configurar uma caixa do Linux, vou direto para o LTS mais recente. É memória muscular, não posso evitar.

Mas para substituir meus macOS, Unity é muito feia, de verdade. Eu tentei personalizar a Cinnamon e eu quase gostei dela. E nem sequer comecei no KDE ou XFCE.

O GNOME 3.22, por outro lado, é muito bonito. Eu não preciso mexer nele para fazê-lo parecer bonito. O conjunto padrão de atalhos globais é muito preciso, se você for um usuário de macOS de longo prazo. Eu gosto de quase tudo sobre ele.

Fiquei curioso sobre todo o barulho em torno da fase fora do X.org em Wayland, então eu queria verificá-la.

A melhor distro que eu poderia encontrar com isso em mente é o bom e velho Fedora. RedHat (4) foi a segunda distro Linux que eu tentei depois do Slackware 1 em meados dos anos 1990. Eu volto e o abandono sempre de anos em anos. É um bom momento para uma nova tentativa com ele.

O TL; DR é que estou bastante satisfeito com o Fedora 25. Ele faz quase tudo que eu preciso e de mandeira bem fora da caixa.

Eu tirei a poeira de um desktop Lenovo ThinkCentre Edge 71z de 4 anos e um notebook Lenovo IdeaPad G400s. Eles são, respectivamente, um Core i5 SandyBridge 2.5Ghz segunda geração e Core i3 2.4Ghz, com 8GB de RAM no desktop e 4GB de RAM no notebook. Para a rotina de um desenvolvedor, eles são bastante bons o suficiente. Um CPU melhor não faria melhor.

Fiquei muito feliz em ver que este desktop tem uma antiga placa gráfica Intel com uma porta DVI. Felizmente, eu tinha um velho cabo DVI para HDMI e podia conectá-lo ao meu monitor ultrawide LG 21:9 (2560×180) e ele fazia tudo corretamente (macOS Sierra tinha uma regressão que exigia um hack para fazê-lo funcionar!).

O que é bem difícil são os discos rígidos mecânicos super lentos (7200rpm e 5400rpm). Eu só pedi uma atualização RAM e duas unidades SSD compatíveis Crucial MX300. Quando esses chegarem, terei o que eu preciso.

Dito isto, quando você tem uma nova instalação Fedora 25, o que fazer a seguir?

Para usuários do Ubuntu

Basta lembrar isso: em vez de apt-get você obtem dnf. Antes da versão 22, Fedora costumava ter yum, mas dnf o substitui basicamente com as mesmas opções de comando.

Você não tem o equivalente de apt-get update porque ele se auto-atualiza. O resto é praticamente o mesmo: dnf install package em vez do pt-get install package, dnf search package em vez do apt-cache search package e assim por diante. Para uma atualização global, faça dnf upgrade ao invés de apt-get update && apt-get upgrade.

Para serviços, em vez de fazer sudo service restart memcached você pode fazer sudo systemctl restart memcached.

Isso é praticamente tudo. Leia esta página wiki para mais diferenças de comando.

Suporte a Crystal Language

Vamos dizer que você quer aprender esta novíssima linguagem chamada “Crystal”: parecida com a sintaxe e bibliotecas padrão de Ruby, mas parecida com Go na geração binária nativa, com primitivas de simultaneidade rápida e todos os benefícios de um LLVM binário otimizado.

Você deve seguir a página da wiki, mas é isso que você precisa:

sudo dnf -y install \
  gmp-devel \
  libbsd-devel \
  libedit-devel \
  libevent-devel \
  libxml2-devel \
  libyaml-devel \
  llvm-static \
  openssl-devel \
  readline-devel

sudo dnf -y install fedora-repos-rawhide
sudo dnf -y install gc gc-devel # get all dependencies from Fedora 25
sudo dnf -y install gc gc-devel --enablerepo=rawhide --best --allowerasing

sudo dnf -y install crystal

E é isso, um monte de dependências. Mas como é pré-1.0, eu acredito que eles vão melhorar isso no futuro.

Suporte a Ruby e Node.js

Rubyistas têm vários controles de versão, mas eu pessoalmente gosto do RVM. Primeiramente, precisamos instalar alguns outros requisitos e continuar com eles:

sudo dnf -y install patch autoconf gcc-c++ patch libffi-devel automake libtool bison sqlite-devel ImageMagick-devel nodejs git gitg
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import
curl -L https://get.rvm.io | bash -s stable --ruby

sudo npm -g install brunch phantomjs

Isso aí, você deve ter o último Ruby estável, Node, Npm e ferramentas úteis como Brunch (necessário se você quiser construir web apps Elixir-Phoenix) e PhantomJS para testes de aceitação automatizados em muitos idiomas.

Observe que estamos instalando o Git, o GitG opcional que é um fantástico companheiro para sua rotina Git.

Suporte Postgresql, Redis, Memcached

O que é um aplicativo da web sem bancos de dados adequados e serviços de cache? Vamos instalá-los:

sudo dnf -y install postgresql-server postgresql-contrib postgresql-devel memcached redis

sudo postgresql-setup --initdb
sudo sed -i.bak 's/ident/trust/' /var/lib/pgsql/data/pg_hba.conf # NEVER do this in production servers
sudo systemctl start postgresql

sudo su - postgres
createuser youruser -p
createdb youruser --owner=youruser

Mude youruser para o nome de usuário de sua conta de usuário atual, é claro.

Suporte a Java

Isso é fácil, vamos instalar o mais recente OpenJDK 8 e plugins do navegador.

sudo dnf -y install java-1.8.0-openjdk icedtea-web

Suporte a Go

Ainda mais fácil:

sudo dnf -y install go

Não se esqueça de editar seu perfil, como $ HOME/ .profile e adicionar as variáveis de ambiente apropriadas:

export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin

Suporte a Elixir

Existe uma maneira fácil e uma mais complicada e demorada. Vamos começar com a fácil:

sudo dnf -y install erlang elixir
mix local.hex
mix local.rebar
mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez

O problema é que pacotes para distros como o Fedora podem levar tempo para sair. Por exemplo, o Elixir 1.4 fora lançado há dias, mas não havia atualizações para o Fedora ainda, enquanto eu escrevia este artigo.

Outro problema se você está desenvolvendo com Elixir é que você vai precisar de um controle de versão Elixir, porque você vai acabar recebendo projetos de clientes em diferentes versões da linguagem e precisará configurar o seu ambiente. É aí que entra o asdf. Você pode seguir este gist, mas eu colarei os bits importantes aqui:

sudo dnf -y install make automake gcc gcc-c++ kernel-devel git wget openssl-devel ncurses-devel wxBase3 wxGTK3-devel m4

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.2.1

# For Ubuntu or other linux distros
echo '. $HOME/.asdf/asdf.sh' >> ~/.bashrc
echo '. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc

# restart your terminal or source the file above:
source ~/.bashrc

asdf plugin-add erlang https://github.com/asdf-vm/asdf-erlang.git
asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git

asdf install erlang 19.0
asdf install elixir 1.4.0

asdf global erlang 19.0
asdf global elixir 1.4.0

Compilar Erlang do código fonte levará muito tempo, especialmente se você estiver usando CPUs antigas como eu. Mas é assim que vocês têm acesso à última versão de Elixir, além de ter a capacidade de escolher versões mais antigas para projetos de clientes.

A propósito, você pode instalar plugins asdf adicionais para controle de versão de outras plataformas, como Go, Rust, Node, Julia e muitas outras. Confira a página do projeto deles para obter mais detalhes.

Suporte de Docker

Você provavelmente vai querer ter acesso ao Docker também, então vamos fazer isso:

sudo dnf -y install docker docker-compose

# you can test if everything went ok with the infamous hello world
sudo docker run --rm hello-world

Apps de Desktop

Depois de estar com tudo no lugar, vamos configurar os aspectos não-terminais para uma melhor experiência.

Terminator

Falando em terminais, você vai querer instalar o Terminator. Eu realmente não gosto de usar tela ou tmux em minha máquina local (eu não consigo contornar essas ligações de chave). Estou mais acostumado a iTerm2 no MacOS e Terminator é praticamente a mesma coisa com ligações de chave semelhantes. Você definitivamente precisa substituir o terminal padrão para este.

sudo dnf -y install terminator

Você também vai querer editar ~ / .config/terminator/config e adicionar o seguinte para torná-lo melhor:

[global_config]
  title_transmit_bg_color = "#d30102"
  focus = system
[keybindings]
[layouts]
  [[default]]
    [[[child1]]]
      parent = window0
      type = Terminal
      profile = default
    [[[window0]]]
      parent = ""
      type = Window
[plugins]
[profiles]
  [[default]]
    use_system_font = false
    font = Hack 12
    scrollback_lines = 2000
    palette = "#073642:#dc322f:#859900:#b58900:#268bd2:#d33682:#2aa198:#eee8d5:#586e75:#cb4b16:#586e75:#657b83:#839496:#6c71c4:#93a1a1:#fdf6e3"
    foreground_color = "#eee8d5"
    background_color = "#002b36"
    cursor_color = "#eee8d5"

Another great options that was recommended to me is Terminix. This is how you install it:

sudo dnf copr enable heikoada/terminix
sudo dnf -y install terminix

Fonte Hack

Você também vai querer ter uma fonte melhor, como Hack

dnf -y install dnf-plugins-core
dnf copr enable heliocastro/hack-fonts
dnf -y install hack-fonts

 

Ferramenta Gnome Tweak

Você vai querer instalar Gnome Tweak Tool para ser capaz de configurar Hack como a fonte monospace padrão:

sudo dnf -y install gnome-tweak-tool

Vim, Zsh, Yadr

Eu realmente gosto de usar Vim. Você pode instalá-lo assim:

sudo dnf -y install vim-enhanced vim-X11

E eu realmente gosto de usar YADR para personalizar todos os aspectos do meu ZSH e Vim:

sh -c "`curl -fsSL https://raw.githubusercontent.com/skwp/dotfiles/master/install.sh `"

Eu recomendo que você tenha Zsh, Vim e Ruby pré-instalados antes de executar o script acima. Depois de terminar, eu tive que ajustar as configurações um pouco:

sed 's/gtk2/gtk3' ~/.vim/settings/yadr-appearance.vim

Você gostaria de ajustar o arquivo também, para adicionar novas fontes como Hack e agora estou mais adepto para “gruvbox” em vez de “solarized” como tema Vim.

GIMP Photoshop

Se você é um desenvolvedor, você terá que editar imagens às vezes. E se você é como eu, Gimp é um pesadelo em usabilidade. Mas há maneiras de torná-lo um pouco mais palatável.

sudo dnf -y install gimp
sh -c "$(curl -fsSL https://raw.githubusercontent.com/doctormo/GimpPs/master/tools/install.sh)"

Pronto, um tema semelhante ao Photoshop para Gimp para torná-lo menos feio.

Spotify

O que nós, desenvolvedores, seríamos sem música para nos concentrar?

dnf config-manager --add-repo=http://negativo17.org/repos/fedora-spotify.repo
dnf -y install spotify-client

CoreBird

Estou tão feliz que alguém construiu um cliente Twitter muito competente e elegante para Linux. Instalar o CoreBird:

dnf -y install corebird

É provavelmente ainda melhor do que a versão oficial do Mac.

Ajustando a barra de título

Eu encontrei este hack para tentar fazer as barras de título Gnome um pouco menos gorduchas, que é a única queixa que tenho ao visual até agora:

tee ~/.config/gtk-3.0/gtk.css <<-EOF
.header-bar.default-decoration {
 padding-top: 3px;
 padding-bottom: 3px;
 font-size: 0.8em;
}

.header-bar.default-decoration .button.titlebutton {
 padding: 0px;
}
EOF

Conclusão

A maior parte de tudo o que você precisa é baseado na web. Então, o Gmail, o Slack, todos funcionam perfeitamente. Acione o Chromium, o Firefox ou instale o Franz ou o WMail, se for necessário. Infelizmente, tudo o que é baseado na web consome muita RAM e isso é muito ruim. Eu sinto falta dos bons aplicativos antigos, pequenos e nativos. Aplicativos baseados na web são um grande aborrecimento.

Eles “funcionam”, mas eu prefiro ter um bom aplicativo nativo. Por outro lado, Dropbox e Skype têm realmente terríveis clientes. Eles são muito pessimamente mantidos, cheios de erros e terrivelmente mal suportados. Eu preferiria não os ter.

Eu estava tentando me acostumar com o Thunderbird enquanto estava no Ubuntu. Geary ainda não é bom o suficiente. Mas fiquei surpreso quando tentei Evolution novamente. Ele tem a única coisa que eu realmente quero de qualquer cliente de e-mail: um maldito atalho para mover e-mails para pastas: Ctrl-Shift-V (!!). Quão difícil pode ser isso??

O Gnome 3 tem um repositório global de Contas Online nas Configurações, onde você pode registrar redes sociais como o Facebook e o Google, mas o suporte do Google é cheio de bugs. Ele expira sempre, portanto não use Evolution com ele. Adicione as informações do Imap/Smtp manualmente. Os dados de e-mail e calendário são sincronizados corretamente dessa forma.

Você deve ter todas as suas senhas em uma conta do LastPass. Authy é uma extensão do Chrome, então sua autenticação multi-fator também deve funcionar.

Meu banco pessoal e empresas de investimento, com seus applets Java feios, funcionam muito bem com Chromium e IcedTea, então eu estou bem também.

Eu só tenho que descobrir a estratégia de backup mais fácil para ter tudo realmente seguro. No processo de instalação, não se esqueça de escolher a opção de partição criptografada – e se o fizer, definitivamente faça o backup de seus dados regularmente, como eu ouvi falar de bugs durante upgrades que fizeram as partições criptografadas inacessíveis. Seja cuidadoso.

Como de costume, a partir do meu macOS as duas únicas coisas que eu realmente sinto falta é do Keynote da Apple (é realmente incrível como ninguém foi capaz de fazer uma ferramenta de apresentação tão lisa e rápida quanto o Keynote) e do iMovie para edição rápida de vídeo (embora Kdenlive seja uma alternativa muito boa).

Você ainda tem atalhos embutidos para captura de tela de uma janela ou uma área e pode gravar um screencast!

Comparado com a minha configuração do Ubuntu, este Fedora 25 é realmente um prazer de usar. Um substituto competente do macOS. Eu o recomendo fortemente!

E como eu disse no update, lá no início, vale a pena conferir o Arch Linux e como otimizar sua distro para que ela seja mais responsiva, especialmente em hardware antigo.

***

Artigo publicado originalmente em http://www.akitaonrails.com/2017/01/06/customizing-fedora-25-for-developers. Traduzido com autorização do autor.