A melhor distro Linux para desenvolvedores

No universo das dezenas de distribuições importantes, algumas delas são melhores ou piores para determinados tipos de aplicação.
Algumas distribuições GNU/Linux são especificamente organizadas para realizar determinados tipos de tarefa ou a atender um nicho profissional.

E os desenvolvedores, como nicho ou como público, devem usar qual distribuição?
No universo GNU/Linux distribuições “de nicho” são chamadas branches ou blends — para trabalhar com multimídia, para clínicas médicas, para ambiente educacional etc.

Este é apenas mais um dos meus artigos opinativos, que evito fazer…
A melhor opinião continua sendo a sua.
Cabe a você julgar o que lhe serve, ou não, dentro deste texto.

Deixe um comentário, logo abaixo, se quiser.

ubuntu flavours sabores

Os programadores são um público à parte.
Os desenvolvedores Debian tendem a usar o Debian Sid, O mesmo ocorre com os desenvolvedores das outras distros.

Isto é ‘meio’ óbvio, eu sei… se você tem intenção de se tornar um(a) desenvolvedor(a) OpenSUSE, vai ter que usar a versão em desenvolvimento específica desta distro.

Quem tem intenção de desenvolver para internet das coisas (IoT), pode usar distribuições específicas para a plataforma desejada, como o Raspbian ou Ubuntu Core para a plataforma Raspberry.

Para todas os outros tipos de desenvolvedores(as), na prática, qualquer distro serve.

Red Hat, CentOS e Fedora

A Red Hat, tem investido bastante na comunidade de desenvolvedores e tem disponibilizado uma versão do Red Hat Enterprise Linux (RHEL) pra download em seu site — voltado justamente para este público.

Para saber mais, leia como se tornar desenvolvedor(a) Red Hat.

Debian e Ubuntu

As duas distribuições são muito amigáveis com os(as) desenvolvedores(as) — mesmo os(as) que não programam diretamente para a distro.
Você pode “pegar” a versão principal da distribuição e transformá-la em uma plataforma de desenvolvimento completa, apenas instalando aplicações de programação específicas, por exemplo.

O assunto também foi abordado em 3 editores de código para Debian e Ubuntu e no post Ferramentas de programação para Debian e Ubuntu

OpenSuse

O OpenSUSE tem uma longa história (e vários artigos neste site) na linha do tempo do Linux. É uma plataforma GNU/Linux séria e, se você se sente confortável com o seu look and feel, não há razão para deixar de considerá-la para projetos de desenvolvimento de aplicativos.
No post Instalar um servidor LAMP no OpenSUSE, pode ser dado o primeiro passo para o desenvolvimento de aplicações web, por exemplo.
Além disto, todas as IDEs que você encontra nas outras distribuições, vai encontrar aqui também.

Conclusão

Este post, como a maioria das minhas análises opinativas, vai terminar sem dar uma resposta pronta para o questionamento do título. Sorry.

O ambiente Linux, de maneira geral, é muito fértil e aconchegante para trabalhar com desenvolvimento de software.
Você pode escolher qualquer distro (me conte qual! 😉 ) e vai encontrar tudo o que precisa para tocar os seus projetos — até mesmo para plataformas proprietárias.
Tudo o que você precisa é encontrar e juntar as ferramentas certas.

Introdução ao Linux, para iniciantes.

O Linux está presente em muito mais lugares do que muita gente imagina.
Perto de 90% dos super computadores mais poderosos do mundo rodam Linux e um número um pouco menor dos servidores web, também usam o sistema operacional do Pinguim.

O seu smartphone, se for Android, também roda Linux.
Pequenos dispositivos ou carros e caminhões autônomos também estão adotando o sistema.

Faz sentido se perguntar “por que o meu computador ou notebook também não poderia rodar Linux?” — e é claro que pode!
Só que, se você está acostumado com o seu sistema operacional atual (Windows, provavelmente), antes de migrar para outro, pode ser interessante entender os paradigmas e os conceitos sobre os quais o Linux se sustenta.

Tarefas rotineiras são realizadas de modo diferente em outro sistema operacional. Não é nem mais, nem menos, complicado ou difícil. É apenas diferente.

Os componentes do Linux

O sistema operacional GNU/Linux vem “embalado” de modo diferente de outros sistemas, como o Windows ou o MacOS.
Em vez de apenas uma grande empresa cuidando (bem ou mal) de todos os aspectos concernentes a sistema operacional, no mundo livre, há várias empresas integradas e trabalhando — cada qual, no que sabe fazer melhor.
Algumas destas empresas são grandes (IBM, Red Hat, Oracle, etc)

No Windows, por exemplo, usa-se apenas uma interface gráfica e, como ela é dominante, ninguém sabe sequer o nome dela.
No Linux, podemos escolher interfaces diferentes da que veio embalada na nossa distro: GNOME, KDE Plasma, Cinnamon, XFCE, Mate etc.

Não só empresas.
Há comunidades realizando trabalhos importantes.
Os ambientes gráficos GNOME e KDE (entre outros) são conduzidos por comunidades de desenvolvedores e usuários — e com forte participação de empresas.
Diferente de softwares de código fechado e/ou proprietário, todo mundo pode participar do desenvolvimento dos Softwares Livres.

De modo genérico, uma instalação Linux compreende:

  1. o kernel, ou o cerne do sistema.
  2. os programas do sistema e os arquivos residentes em disco.
  3. um ambiente gráfico (que não é obrigatório).
  4. um gestor de pacotes, para facilitar a instalação de novos softwares.
  5. as aplicações.

Vamos conhecer um pouco mais de cada item.

O kernel do sistema

O núcleo de um sistema operacional é chamado de kernel.
É considerado o motor, sob um capô.
Permite, entre outras coisas, que múltiplos programas possam estar a ser executados simultaneamente e ainda coordena o acesso de cada um aos serviços e dispositivos, de forma que tudo funcione elegantemente.

Os programas e os arquivos do sistema

Em vez de ser executados de dentro de um kernel, os arquivos (de configuração, por exemplo) e os programas do sistema ficam em disco, esperando ser chamados à execução.
Incluem serviços, também chamados daemons, que rodam em segundo plano, utilitários que permitem realizar diversas operações, arquivos de configuração e de log (relatórios do sistema).

Os programas do sistema são, em sua maioria, pequenos aplicativos que cuidam, cada qual, de uma pequena tarefa básica — como ajustar a data, conectar à rede Wi-Fi etc.
Isto inclui o programa init, que é o primeiro a ser lançado e é responsável por iniciar todos os outros.
No Linux, até mesmo o programa init pode ser escolhido pelo usuário — embora seja bastante incomum.

O ambiente gráfico do Linux

O ambiente gráfico é um pacote completo de programas voltados para colocar uma interface gráfica na tela do computador e fornecer uma série de outros programas para manter tudo funcionando e complementar a experiência do usuário.
Comumente, chamamos o ambiente gráfico de GUI (Graphic User Interface, ou interface gráfica de usuário) ao conjunto da interface com todos os programas de apoio (o que inclui os programas de configuração da GUI).
Em oposição ao ambiente gráfico, tem o ambiente texto ou linha de comando. Também chamada de CLI (Command Line Interface, ou interface de linha de comando).

Ao contrário de outros sistemas operacionais, no Linux é comum usuários fazerem uso das duas interfaces, (CLI e GUI) alternadamente.
É apenas uma questão de gosto pessoal.

Diferente dos sistemas da Apple e da Microsoft, usuários podem escolher qual a GUI que preferem usar.
Mesmo que você tenha adquirido o seu linux com uma GUI padrão, nada impede de mudar este “detalhe”.
No ato da instalação, é comum o programa perguntar qual ou quais ambientes gráficos você deseja instalar.
Se optar por mais de um, pode alternar entre eles, durante o uso.
Alguns ambientes gráficos são projetados para ficarem parecidos com o Windows ou o OSX.
Outros, são tão originais que se tornaram referência àqueles sistemas.
Pessoalmente, embora eu use com mais frequência o GNOME, gosto muito da velocidade do XFCE ou da enorme quantidade de recursos visuais do KDE Plasma.
Estou sempre alternando entre eles.

Gestão de pacotes no Linux

Ter uma “loja” ou “repositório” (como é chamado no Linux), aonde se concentram todos os aplicativos que o usuário pode baixar e instalar facilmente, com um único clique, é uma ideia que surgiu com as distribuições Linux.
O repositório da sua distribuição é um local seguro, em que você pode pesquisar e encontrar os softwares de que precisa.

Este é provavelmente um dos conceitos mais copiados do Linux.
Desde os seus primórdios o sistema operacional do pinguim oferece maneiras diferenciadas de se instalar programas.
Com o tempo, o processo foi se refinando e os usuários passaram a procurar, escolher e instalar seus programas a partir de repositórios. o conceito foi copiado pelas “lojas de aplicativos” da Apple e do Google.

gimp install debian
Loja de apps: Como instalar um aplicativo no Linux.

A loja de aplicativos é um front end gráfico para os gestores de pacotes do Linux.
Sua função é buscar um programa do repositório ou biblioteca de aplicativos da sua distribuição GNU/Linux e fazer a instalação.
Os repositórios contém milhares de aplicativos para você baixar com segurança.

Até mesmo os programas nativos para Windows, podem rodar em Linux, com o uso do WINE.

O que é uma distribuição

Já expliquei que várias empresas e comunidades estão envolvidas no desenvolvimento do Linux.
Pois bem. Algumas delas também “empacotam”, junto com o kernel do Linux, uma série de outros aplicativos prontos para ajudar os usuários a rodar uma solução completa de sistema operacional.
Hoje, as distribuições são muito parecidas entre si. As diferenças estão cada vez mais relegadas aos detalhes — que somente usuários intermediários irão perceber.
Isto significa que você pode escolher qualquer uma.
Contudo, algumas distros são mais populares, justamente por causa “do conjunto dos detalhes” que acaba por agradar mais os seus usuários.
Veja algumas:

  • Slackware e Archlinux — costuma agradar mais a usuários avançados, que preferem fazer ajustes “manuais” e mais detalhados no seu Linux.
    Este tipo de característica, por contraditório que possa parecer, também torna estas opções excelentes para quem deseja aprender mais sobre sistemas operacionais e, em particular, sobre o Linux.
    A primeira opção é uma distro das mais antigas e tradicionais. Ambas possuem uma grande comunidade ativa e muita documentação disponível.
  • Debian e Ubuntu — O Debian é uma das primeiras distribuições a surgir e já conta com, aproximadamente, 25 anos de existência. Tem uma comunidade extremamente forte e ativa e apoio de várias empresas.
    O mesmo pode ser dito do Ubuntu.
    O Ubuntu tem uma empresa forte por trás de suas decisões: a Canonical e, por ser derivado do Debian, usufrui de toda a base de conhecimento construída sobre ele. Ou seja, tudo o que você ler sobre Debian, de modo geral, vale para o Ubuntu e vice-versa.
    Uma das diferenças importantes entre ambos os sistemas é que o Ubuntu é baseado no ramo testing do Debian. Por isto, vai contar com um repositório de aplicativos mais atualizados, enquanto o Debian vai privilegiar manter um repositório com aplicativos que passaram por testes mais exaustivos e que são considerados mais estáveis.
  • Red Hat, CentOS e Fedora — O Red Hat é, ao lado do Debian, do Slackware e do SuSE, uma das distribuições tradicionais do Linux. Fedora e CentOS são originárias do Red Hat.
    Depois que a empresa Red Hat decidiu por um modelo mais “fechado” de distribuições, o Fedora e o CentOS são lançados primeiro e a comunidade testa os softwares antes de chegarem ao Red Hat.
    Desta maneira, o Red Hat Enterprise Linux é voltado a clientes corporativos pagantes e que preferem uma distribuição mais estável e com sólido apoio e suporte técnico.
    O CentOS tem uma “pegada” mais voltada para a segurança, vale dizer.
  • OpenSuSE — Derivada do SuSE Linux, uma distro originada na Alemanha a partir do Slackware. Com o tempo, se afastou deste e passou a adotar uma série de recursos do Red Hat, mantendo sua independência como distro.

Pessoalmente, recomendo as pessoas a usar o que eu uso (Debian ou Ubuntu) — basicamente, por que a documentação online e livros é mais abundante.
O melhor é ler mais sobre o assunto e escolher a que mais se identifica com você.
E, não se preocupe, sempre será possível trocar de distribuição GNU/Linux, quando você quiser.
É comum usuários experimentarem várias distribuições até, finalmente, decidir por uma.

Não esqueça de ler o texto 5 distribuições Linux que sempre vale a pena considerar.
Dê também uma olhada nesta lista de livros sobre Linux, que podem ajudar muito a iniciar suas aventuras no mundo do software livre.
E conheça as minhas 10 dicas para migrar do Windows para Linux.

Experimente as novas distribuições Linux com o QEMU

Tem meses em que a comunidade do software livre está “em polvorosa”, com os lançamentos quase simultâneos de novas distribuições.
Haja DVD ou pendrive para gravar… 😉

Com uma plataforma de virtualização, como o VirtualBox, o VMWare, o QEMU etc. é possível experimentar qualquer distro live, sem a necessidade de ter que passar pelo processo da instalação — e você ainda preserva seus pendrives.
Neste texto, vou demonstrar o uso do QEMU, como minha plataforma favorita de virtualização para rodar uma distro brasileira, que eu acredito que vale a pena conhecer.
Os princípios são os mesmos para qualquer outra distro Linux — portanto, não se prenda às minhas opções.
O SimbiOS é um sistema operacional GNU/Linux (brasileiro) baseado no Debian testing.
Você pode encontrar uma ISO para instalação ou apenas para experimentar no site oficial: http://simbioslinux.weebly.com/.
O site SempreUpdate tem um review atualizado sobre a distro — link no final do texto. Não deixe de ler 😉

Como compor uma máquina virtual para rodar a minha distro favorita

Eu me sinto bastante confortável para usar ferramentas CLI (de linha de comando). Se este não for o seu caso, experimente uma das várias alternativas do QEMU para interfaces gráficas (GUI).
Neste exemplo, vou mostrar como rodar o SimbiOS em uma máquina virtual, nas seguintes condições:

  • Arquitetura básica de 64 bit
  • 2 GiB de memória RAM

qemu-system-x86_64 -enable-kvm -m 2048 -name 'SimbiOS 17 Light' -cdrom SimbiOS_17.0_light-amd64.iso -boot d

Entenda as opções:

  • -enable-kvm, habilita a virtualização completa com suporte ao módulo KVM.
  • -m 2048, determina a quantidade de memória RAM presente no hardware virtual.
  • O valor da opção ‘-name’ pode ser qualquer um à sua escolha.
  • Por fim, a opção ‘-boot d’ (opcional) força o boot pela unidade de cd-rom virtual.

Tenha o cuidado para usar o nome exato da ISO baixada do site, no comando acima.

Você pode usar um utilitário do pacote do QEMU para criar uma unidade de armazenamento virtual adicional, em que se pode instalar um sistema operacional.
Com isso, dá para ter uma melhor usabilidade.
Veja como rodar o qemu-img para criar uma unidade virtual de 30 GB:


qemu-img create -f qcow2 simbios17.qcow2 30G

Formatting 'simbios17.qcow2', fmt=qcow2 size=32212254720 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16

Note que eu usei o nome ‘simbios17.qcow2’.
Sinta-se livre para usar o nome/extensão que quiser para a sua unidade.
Agora, já dá para iniciar o sistema operacional a partir do arquivo ISO, com suporte à unidade de armazenamento virtual em simbios17.qcow2:


qemu-system-x86_64 -enable-kvm -m 2048 -name 'SimbiOS 17 Light' -cdrom SimbiOS_17.0_light-amd64.iso -hda simbios17.qcow2 -boot d

A partir daí, já é possível iniciar o processo de instalação, se este for o seu desejo, na unidade adicionada.
qemu Simbios 17
Ao fim do processo, desligue a máquina virtual e, na linha de comando, dispare o boot a partir da unidade que você criou:


qemu-system-x86_64 -enable-kvm -m 2048 -name 'SimbiOS 17 Light' -hda simbios17.qcow2

É quase certo que, desta maneira, vai rodar bem melhor do que a partir da ISO.
simbios linux boot menu

referências

Site oficial do SimbiOS: http://simbioslinux.weebly.com/

Downloads: http://simbioslinux.weebly.com/downloads.html

Review no SempreUpdate: https://sempreupdate.com.br/conheca-o-simbios-uma-distribuicao-baseada-no-debian-gnulinux/.

Experimente o Debian com o kernel do FreeBSD.

O Debian é uma comunidade aberta a diversos projetos interessantes.
Há, pelo menos, 2 projetos que oferecem o sistema operacional combinado a um kernel alternativo.
Já falei sobre o Debian rodando com o kernel GNU/Hurd, antes.
Desta vez, vou mostrar como baixar uma versão que roda sobre o kernel do FreeBSD.
A melhor maneira de testá-la é rodar uma das imagens prontas para o QEMU/KVM.

O sistema não é pesado e dá para você se divertir e ter uma idéia do seu funcionamento.

Neste post, vou analisar uma destas 3 opções:

  1. debian_squeeze_kfreebsd-amd64_standard.qcow2
    — uma opção mais antiga, sem o ambiente gráfico (imagem c/204 Mb).
  2. debian_wheezy_kfreebsd-amd64_desktop.qcow2
    — uma opção mais atual (Debian 7), com o ambiente gráfico (imagem c/1,7 Gb).
  3. debian_wheezy_kfreebsd-amd64_standard.qcow2
    — Debian 7, sem o ambiente gráfico (imagem c/210 Mb).

As imagens estão comprimidas e se expandem até 25 GiB, na medida do necessário.
Os exemplos, que seguem, são baseados na 3a opção.
Se preferir outra, basta adaptá-los ao seu caso.
Use o comando wget para fazer o download ou baixe direto do site (links no final):


wget https://people.debian.org/~aurel32/qemu/kfreebsd-amd64/debian_wheezy_kfreebsd-amd64_standard.qcow2

Feito o download, rode o sistema a partir do QEMU:


qemu-system-x86_64 -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2

Bem simples, não é?
Para poder usar melhor o sistema, use as seguintes informações:

  • A conta root usa a senha “root” (sem as aspas).
  • A conta user usa a senha “user”.

Para obter um melhor desempenho, ative o KVM:


qemu-system-x86_64 -enable-kvm -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2

Para suprimir o modo gráfico, coloque o display no modo curses:


qemu-system-x86_64 -enable-kvm -display curses -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2

Neste caso, pode ser necessário aumentar um pouco (ou maximizar) a janela do seu terminal, para conseguir ver toda a área de trabalho.
Como padrão, a imagem roda com 128 MiB de memória RAM.
Use a opção ‘-m’ do QEMU para ampliar este valor:


qemu-system-x86_64 -m 512 -enable-kvm -display curses -hda debian_wheezy_kfreebsd-amd64_desktop.qcow2


Se você optou por uma das imagens com ambiente gráfico, acima, vai precisar usar uma quantidade maior de memória RAM, claro.
Neste caso, as imagens usam lightDM com o XFCE e 1GiB de memória RAM deve ser mais do que o suficiente.
Se quiser trocar este ambiente, pelo original do Debian (GDM e GNOME), dê os seguintes comandos, dentro da máquina virtual (como superusuário):


update-alternatives --auto x-session-manager

echo /usr/sbin/gdm3 > /etc/X11/default-display-manager

Vale a pena instalar e usar o Debian com o kernel FreeBSD?

Diferente do Hurd, o kernel do FreeBSD é um kernel maduro e bem testado.
Aqui é possível usar todo o ambiente gráfico e usufruir do universo dos repositórios de softwares do Debian.
No lado do servidor, a opção é uma alternativa para quem deseja ficar longe do systemd e/ou evitar as eventuais vulnerabilidades do kernel Linux.
Há, ainda, o glamour de estar mais próximo de executar um kernel semelhante ao usado pela Apple em seus dispositivos.
Do ponto de vista de quem vem do FreeBSD, esta opção “mantém um pé” lá e outro nos vastos repositórios de softwares Debian.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

De onde baixei a versão analisada neste texto: https://people.debian.org/~aurel32/qemu/kfreebsd-amd64/.
Outras versões do Debian kfreebsd: http://jenkins.kfreebsd.eu/jenkins/view/cd/job/debian-cd_jessie-kfreebsd_kfreebsd-amd64/ws/build/.
Debian Mini .ISO (para instalar): http://cdn-fastly.deb.debian.org/debian/dists/jessie-kfreebsd-proposed-updates/main/installer-kfreebsd-amd64/current/images/netboot-10/.
Conheça o Debian GNU/Hurd: https://elias.praciano.com/2017/07/experimente-o-debian-com-o-kernel-gnuhurd-em-uma-maquina-virtual/.

Como manter o Debian automaticamente atualizado com as correções de segurança

No mundo do software livre, as atualizações de segurança chegam a uma velocidade muito grande.
Comumente, os security patches estão disponíveis já no momento em que a vulnerabilidade é anunciada.
A questão é como obter a atualização o mais rápido possível?

A usuários normais (como eu, por exemplo), basta seguir o cronograma natural de atualizações do seu sistema.
Esta liberdade não se aplica a administradores de servidores, na rede. Quanto mais importante, maior a responsabilidade e a urgência.

As atualizações de que estamos falando aqui, são as referentes à segurança do sistema e a correções de bugs.
Computadores de usuários comuns, em geral, podem esperar uma semana para obtê-las. Já os servidores, não.
Neste post, vou mostrar um procedimento que irá fazer o download e upgrade dos patches de segurança em segundo plano, assim que estiverem disponíveis nos repositórios da sua distro, sem perguntar “se pode” — você será apenas avisado de que o seu sistema foi atualizado.

Por que as atualizações de segurança devem ocorrer em segundo plano

Obviamente, se o meu sistema operacional fosse atualizado por uma grande corporação, como a Oracle ou a Microsoft, a conversa seria bem diferente, aqui.
Contudo, há motivos sólidos para confiar na comunidade de desenvolvedores Debian — e o principal destes motivos é o fato de que todo o trabalho da comunidade pode ser 100% auditado, por qualquer pessoa.
Não dá para dizer o mesmo de empresas que repassam código essencialmente proprietário — caso em que nunca sabemos realmente o que está sendo modificado em nosso sistema.

Aplicar atualizações com frequência é prática importante para manter nossos sistemas seguros.

Como comportamento padrão, o Debian pede para que o administrador do sistema faça as atualizações ou as autorize manualmente.
Mas você pode optar pelo download e instalação automáticos dos updates de segurança mais importantes.

A instalação

O nome do pacote a ser instalado é ‘unattended-upgrades’.
Ele sugere a instalação dos pacotes ‘bsd-mailx’ – para enviar email, informando o adm de que houve uma atualização de segurança – e ‘needrestart’, que verifica junto aos daemons do seu sistema quais precisam ser reiniciados.
Opcionalmente, também podemos instalar o ‘apt-listchanges’ que, neste caso, atua como um plugin — que compara as versões instaladas dos pacotes às novas, lendo os changelogs e os news fles.
Veja como instalá-los:


sudo apt install unattended-upgrades apt-listchanges bsd-mailx needrestart

Configuração

Para poder receber mensagens via email, é necessário alterar o arquivo de configuração ’50unattended-upgrades’. Use o seu editor favorito para isso:


sudo editor /etc/apt/apt.conf.d/50unattended-upgrades 

Descomente a linha abaixo, removendo os ‘//’:


//Unattended-Upgrade::Mail "root";

Se deixar, do jeito que está, as mensagens serão encaminhadas ao root. Mas você pode inserir uma conta de email no lugar da string “root” (entre as aspas).
A seguir, apenas verifique se o arquivo ’20auto-upgrades’ bate com o conteúdo abaixo:


cat /etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Você pode configurar o arquivo ’20auto-upgrades’ adequadamente com a seguinte linha de comando:


sudo dpkg-reconfigure -plow unattended-upgrades

Replacing config file /etc/apt/apt.conf.d/20auto-upgrades with new version

captura de tela debian unattended upgrades

captura de tela debian unattended upgrades

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Referências

https://www.cyberciti.biz/faq/how-to-keep-debian-linux-patched-with-latest-security-updates-automatically/.