Duas semanas no Gentoo: minha opinião

Eu fui para distros base Arch atraído pela proposta de montar meu próprio sistema a gosto, mas conforme fui experimentando mais e mais com o sistema, as “paredes” de customização ficavam mais claras. Um exemplo bem simples é o Vim com suporte a copiar e colar: nos repositórios do Arch, não há como ter “apenas” o Vim de terminal com habilidade de copiar e colar do servidor gráfico, ou você escolhe o Vim de terminal (vim), ou você escolhe o pacote do Vim com interface gráfica (gvim – mas eu nunca usei o comando gvim, só o vim de terminal)

Era possível ter isso: tinha um pacote no AUR, apesar de desatualizado, com esse programa. Eu baixei o PKGBUILD, fiz uns remendos, e tinha o Vim como eu queria. Dei o mesmo tratamento para mais e mais coisas (muitas vezes encontrando PKGBUILDs de pessoas com as mesmas reclamações, e utilizando-os). Quando percebi, já estava compilando e recompilando uma boa parte do meu sistema a gosto. Então por que não ir logo de vez para uma distro source-based?

Minha primeira parada foi o KISS Linux, do criador do neofetch. Porém, em muitos aspectos, ela é tão engessada na visão do criador quanto o Arch (porém na direção de um minimalismo extremo), e adaptá-la continuava sendo tedioso. Voltei para a base Arch, que pelo menos me atendia. Confesso que o relato do @RuKsu me levou a dar uma chance para o Gentoo. Já ouvia falar bem das USE flags, e parecia ser exatamente o que eu queria.

Depois de duas semanas usando Gentoo, vão aqui minhas observações.

Atalhos ilegais

Para a instalação do Gentoo não ser (ainda mais) uma perda de tempo, eu criei uma partição vazia de 20GB no meu HD, extraí a Stage 3 para ela, e instalei o Gentoo enquanto tocava minha vida com o Artix (demorando pouco mais de um dia e meio). Isso é inclusive boa parte da experiência Gentoo num computador com uma CPU potente o suficiente: a única coisa que muda é as ventoinhas girando mais que o normal, e consigo fazer uma quantidade boa de multitarefas enquanto o sistema compila (a principal exceção é o Chromium, que realmente tenho que fechar muita coisa para compilar em paz).

Quando o Gentoo mostrou-se viável, removi as pastas da partição do Artix exceto /home e /etc, e passei as pastas do Gentoo via rsync -avH para a partição original usando um LiveCD. É uma técnica que eu já usei bastante para fazer distro hopping. :shushing_face:

Configuração do Kernel

Em uma distro source-based, tem de se fazer o balanço entre um kernel só com o necessário e portanto rapidinho de compilar e um kernel que estivesse preparado para tudo. Tentei colocar o balanço rumo ao primeiro, usando a técnica do make localyesconfig (copiar a configuração do kernel que já está rodando) que o KISS Linux já me ensinara, e acabou que tenho várias instâncias de:

make menuconfig
make modules && make modules_install

no histórico do shell da conta root para compilar e instalar drivers na hora. Esqueci até mesmo dos drivers para pendrives USB. Esse último inclusive me mordeu pois a versão atual do kernel oficial do Gentoo (5.10.61-gentoo) não reconhecia pendrives USB de jeito nenhum, mesmo depois de adicionar o módulo e reiniciar (em vez disso, produzindo um kernel oops). Acabei pegando e compilando um tarball do kernel.org mesmo, e desde então todo o hardware que tenho aqui funciona.

Atualização de software

O Gentoo tem uma abordagem interessante. No repositório oficial, a maioria dos programas tem dois ebuilds: um com uma versão antiga e testada, e outro, marcado como em testes e que não é instalado por padrão (e permanece assim por 2-4 semanas), com a versão mais recente. Quem quer sempre as últimas novidades, edita a variável ACCEPT_KEYWORDS para incluir ~amd64 no /etc/portage/make.conf, ou adiciona categoria/pacote ~amd64 no final de /etc/portage/package.accept_keywords.

É dois em um, Arch e Manjaro!

Porém, alguns pacotes me passaram a impressão que o repositório do Gentoo é maior do que os mantenedores conseguem lidar. Dois programas que eu uso bastante (snownews e s6) tinham versões bastante desatualizadas (por mais de um ano), por exemplo.

Sistema de empacotamento

USE Flags (e o /etc/portage/make.conf em geral)

Esse é sem dúvida o grande trunfo do Gentoo. USE flags permitem ajustar com quais recursos e dependências todo o software do sistema é compilado, tornando o código-fonte dos programas o único limite para a customização. Retomando o exemplo do começo, foi só compilar o vim com USE="X" para tê-lo exatamente como queria. Os parâmetros de compilação são transformados em USE flags para o sistema ficar amigável de se customizar.

Há outras variáveis que igualmente permitem enxugar os pacotes do sistema, como VIDEO_CARDS (compilar apenas drivers de vídeo relevantes para seu sistema). Aqui, por exemplo, eu tenho uma das placas da AMD que aceitam tanto o driver antigo radeon quanto o novo amdgpu. Como eu nunca quis usar o radeon (já que ele não tem Vulkan), simplesmente não tenho radeon na minha lista de VIDEO_CARDS. O meu sistema então carrega o amdgpu direto sem nem precisar do parâmetro de linha de comando no GRUB.

Mesmo entre distros source-based isso é um ponto para o Gentoo, pois há muitas em que os parâmetros de compilação são bastante engessados no equivalente do PKGBUILD, e o trabalho de modificar o sistema é basicamente o mesmo de uma distro binária. Já dei o exemplo do KISS Linux, mas isso se aplica a muitas outras que eu pesquisei.

Os espinhos das USE flags são até que poucos para o poder que elas destravam (por exemplo, a dependência cíclica entre os pacotes Freetype e Harfbuzz, que são infames por interromper muitas instalações de Gentoo).

É possível também personalizar as USE flags pacote-por-pacote com /etc/portage/package.use.

Quem quiser investigar o que há disponível em cada pacote pode usar: equery uses PACOTE.

Overlays

Não há um equivalente de um AUR centralizado no Gentoo. Em vez disso, a obtenção de software fora do repositório (ou mesmo de scripts de compilação alternativos para software dentro do repositório) ocorre por meio de overlays, que são repositórios que se “sobrepõem” ao da distro. Na tradição Gentoo, o repositório da distro vem por padrão com o mínimo de prioridade.

Para entender um overlay, vale citar a estrutura do repositório do Gentoo:

repositorio
└categoria
 └programa
  └programa-versao.ebuild (script de compilação)

Overlays têm essa mesma estrutura, adicionando novos programas ou substituindo os que vêm na distribuição.

Há duas vantagens no esquema de overlays:

  • Brincar com pacotes centrais do sistema sem atualizações arruinarem tudo não é difícil, basta criar um overlay os substituindo. Há quem use Gentoo com runit como esquema de inicialização mesmo não sendo uma opção oficial.
  • A procedência dos pacotes num overlay é mais fácil de garantir. Na wiki, inclusive, há uma lista de overlays confiáveis, ferramentas de busca nos mesmos e um script para facilitar sua adição e remoção (eselect-repository).

A grande desvantagem, é, bem, caso você não ache o pacote que busca nos confiáveis, é difícil navegar no mar de overlays de usuários “comuns” do Gentoo até achar o que você quer – quase sempre compensa mais você fazer seu próprio.

Ebuilds

O ebuild é o equivalente Gentoo do PKGBUILD do Arch.

O ebuild do Gentoo é bem mais complexo. Além de compreender as instruções de compilação do site oficial e saber o básico da linha de comando do Linux, é também necessário conhecimentos bem específicos de ebuilds, como classes (git-r3, meson, etc.), comandos específicos do mesmo (emake, eninja, dodir, insinto, etc.), as diferenças entre EAPIs (versões do formato ebuild)… Me pareceu um processo bem menos direto que os equivalentes em outras distribuições.

Portage

Deixei para falar do Portage por último porque ele é um programa bastante competente, e é graças a ele que o Gentoo é surpreendentemente fácil de usar para o tanto de portas de customização que ele abre. Os destaques dele, para mim:

  • A resolução de dependências dele leva em conta as USE flags que você escolheu, e alerta caso sejam necessárias mudanças. Há até parâmetros como o autounmask-write para fazer essas mudanças automaticamente. Nenhuma compilação aqui falhou por falta de dependências com ele.
  • Facilita bastante a aplicação de patches (aqui mesmo, apliquei uma correção de bug em um programa com esse recurso, sem nem precisar tocar no ebuild).
  • A possibilidade de mascarar pacotes e garantir que eles nunca vão ser instalados (preferindo uma alternativa em um overlay, por exemplo), semelhante aos “tabus” do Zypper.

Conclusões

Gentoo definitivamente não é para todo mundo. Eu ecoo as palavras do RuKsu no final dele, exige paciência, vontade de aprender, estudar, treinar e, especialmente no começo, um pouco de tempo livre. Talvez os benefícios nem sejam aparentes ou relevantes, dependendo do seu uso.

Montando o meu Gentoo, entendi porque é chamado de meta-distribuição: dá para chegar a muitos resultados diferentes com ele, e duvido que as instalações de Gentoo de mim, do RuKsu e do Deleterium sejam iguais uma as outras, tanto “em cima” quanto “embaixo” do capô. Deixando o Python e o Bash quietos para o Portage funcionar, praticamente todo o resto é jogo limpo, e o gerenciador de pacotes faz o possível para isso ser conveniente. Para quem valoriza escolha e experimentação, o Gentoo é bom playground.

9 curtidas

cara eu acho super importante tpcs assim. que falam de distros “originais” old school" sem aquela visão de poliana que só relatam elogios!

acho muito importante falar os contras.

não cheguei a usar o gentoo, empaquei nas configuração de rede e empacotamento. mas tbm fui direto instalando a iso via usb, UMA LOUCURA!!!

mas definitivamente, arch, gentoo, debian… devido meios e fins. apenas serve pra adiquirir conhecimento de instalação pois na pratica do dia a dia não incrementa em nada ou melhora a vida do usuario. idem Debian, Arch e ClearLinux que eu não conseguir sentir esse OS ADAPTADO AO HARDWARE mesmo “instalando tudo na unha”.

3 curtidas

Achei engraçado ler o titulo do tópico de duas semanas com o gentoo, porque é quase exatamente isso que eu estou usando.Tópico meu de gentoo a 12 dias atrás.

Concordo com tudo que você disse, e é realmente uma distro de paciência…
Meu hardware não é o melhor para o gentoo, mais muito longe disso.
Mais com certeza não me limitou na experiência com o mesmo alem do tempo gasto.

Sou usuario que defende muito o nixOS, incluindo o nixPKG, mais o portage é impossivel se igualar a ele, mais tive o mesmo problemas com algumas coisas estarem mais desatualizadas do que eu gostaria.

Gentoo é otimo, mais para usuario que realmente quer ter controle do que está passando na tela.

3 curtidas

:wave:t2: :raised_hands:t2:

Sensacional! Primeiro quero dizer que me sinto muito honrado e feliz por ser mencionando pelo @Capezotte, uma grande honra para mim! :pray:t2: (Conseguiu até tirar minha atenção de assistir o VT da P3 e Qualify da Formula 1 e olha que é muito difícil isso hein… :sweat_smile: :joy:)

Eu li este tópico 3 vezes e se eu pudesse clicar no :hearts: mais vezes eu clicaria (poder eu posso mais não vai adicionar mais que 1 :relaxed:). Excelente relato e opiniões sobre a convivência com o Gentoo, Capezotte! Agregou muito mais aos meus poucos conhecimentos nesta distro Gentoo que já é minha favorita de longe! Muito obrigado Capezotte!

Este sistema de empacotamento é algo que me deixa cada vez mais :heart_eyes: apaixonado pelo Gentoo.
O poder de customização, escolher oque manter e oque não aceitar no sistema, não sei se tem algo similar ao Gentoo no mundo Linux.
Overlays eu acabei aprendendo mais aqui neste tópico, pois o repositório do Gentoo me satisfaz, uso poucos software que dá para contar nos dedos da mão: Sway, Waybar, Kitty, Firefox e PCmanFM, além de suas dependências. Mas tem de fazer uns ajustes aqui e ali, algumas delas não tem versões estáveis, só de testes, então tem de mandar um ~amd64 no package.accept_keywords. (Minha atual instalação, 3x :blush:, me colocou numa “luta” para oconfigurar o ~amd64 direto no make.conf… Preciso estudar mais o porquê de o Portage estar recusando…) Tenho muito que aprender sobre o Gentoo.

Concordo plenamente e irei contar um pouco mais sobre minha experiência em novas tentativas de instalação do Gentoo.

Eu quebrei minha 1st instalação por um erro intergaláctico: ao efetuar a costumeira limpeza, apaguei o vmlinuz do Kernel .9, invez de apagar o anterior .8, quando reiniciei, supresa! :confetti_ball: E para piorar o erro intergaláctico eu resolvi atravessar o tecido dos universos para ver oque tinha após o final e deletei a instalação começando tudo denovo, invez de tentar recuperar a imagem. :joy:

A 2nd vez eu segui meus blocos de notas, o passo a passo do Gentoo, não deu certo tive de mudar varios procedimentos e mais 3 dias de compilação e instalação, faltava apenas o Firefox… Ao final da instalação deu um número grande de erros em vermelho e eu resolvi devez tentar morar no universo paralelo e apaguei denovo.

A 3rd vez foi bem sucedida mas os passos a passos, com excessão do começo, foram completamente diferentes em comparação à 1st e 2nd vezes, e com este detalhe que mesmo no livecd(pendrive), eu não consegui configurar o ~amd64 no make.conf, a 1st vez eu consegui mas depois que o ambiente já estava rodando direto do laptop. E olha que no livecd eu tentei usar o webrsync não deu certo e depois comecei denovo e --sync também conflitou com 8 pacotes.
A instalação atual está mais enxuta, menos pacotes e consumindo menas ram, também notei que ela esta mais rápida que a primeira, Um exemplo, os textos não estão engasgando(quando digito um essay por exemplo :joy:), mas notei que meu processador dá uns picos de 140% nos cores que na 1st vez não acontecia.
Continuo sem entender o porque o Portage não está me deixando configurar o make.conf com o ~amd64, mas irei descobrir, estou estudando sobre, mas como estou com foco em outros estudos então aos poucos irei descobrindo. :grinning_face_with_smiling_eyes: :+1:t2:
Tem um detalhe que tem além dos pacotes de testes, ~*, ~amd64, se colocar no accept_keywords o ** então o Portage vai puxar os pacotes 9999 que são um tipo de Bleeding Edge “ao vivo em tempo real”. O pessoal commit e o Portage já puxa… Fiquei com o pé atrás de usar assim, apesar de eu ter poucos pacotes.

Todas as 3 vezes eu fiquei uma boa parte do tempo configurando o Kernel (e ainda mesmo depois de pronto, gosto de ficar brincando com as features dos Kernels), escolhendo oque eu quero e oque eu não quero, pesquisando as features no help do Kernel e também na internet. Exemplo, tinha configurado o MTRR mas não sabia sobre o PAT que aprendi na 3x. Percebi que isto faz o RAM ficar livre bem mais rápido.
Confesso que eu talvez não deveria estar investindo tempo nisto, pois estou estudando C, Python e Idiomas, para tentar ser alguém na vida, mas acho que vale a pena, pois quando eu tiver condições eu quero conquistar os certificados LPIs.

Bom tem outros detalhes entre a 1st, 2nd e 3rd vez que foram e continuam sendo bem diferentes entre si, o alsa por exemplo, na 1st resetava o volume para 40% após o reboot, a 3rd vez ele mantém onde eu deixei. A forma de configura-lo foi diferente em ambas as vezes. E outros mais ainda.

Acredito que se vocês tentarem instalar o Gentoo denovo, não adianta ter notações, o melhor é entender como funciona do início ao fim. Pelo menos comigo já que minhas anotações ficaram terríveis de se consultar :joy:.

Tem vários minors problems que tenho de resolver no meu Gentoo que aliado com este excelente relato de qualidade, opinião de convivência sua Capezotte me fazem ter o Gentoo como o meu Sistema Operacional favorito disparado de longe e ainda por cima ter como meu Pet favorio o próprio Pinguim Gentoo :penguin:.

Curiosidade, Gentoo é lento para andar “a pé” mas é o mais rápido na “natação” de todos os pinguins. Acredito que até nisso se aplica no OS, “Lento para compilar/instalar mas rápido para usar”.

Mas como nem tudo é o “mar de rosas”, também faço das palavras do @Capezotte as minhas, o Gentoo não é uma distro com foco para todos, ela é especial para aprendizado, playground dos programadores e entusiastas, pois ao final ela será uma Distro/Sistema Operacional igual a qualquer outro Sistema Operacional, cumprindo seu papel de satisfazer o usuário. Cada um com cada gosto. Igual carro, do mais caro para o mais barato todos fazem a mesma coisa, transportar com mais agilidade.

Sensacional, excelente tópico! Muito obrigado Capezotte! :pray:t2:

:vulcan_salute:t2:

7 curtidas

Muito bom o relato, estou usando o sistema já faz mais de um ano e estou sentindo até que estou “enferrujando” de resolver problemas! Depois de configurado, o sistema roda perfeitamente em atualizações. A atualização não passa por cima dos arquivos de configuração e mesmo assim é possível fazer “merge” da ‘nova configuração padrão’ com as minhs configs.

Eu me divirto sempre com o modo de instalação do gentoo, pois cada um inventa o seu!

Com relação aos overlays, eu uso o gentoo.zugaina.org quando quero pesquisar em todos os overlays.

O portage é extremamente eficaz na solução de dependências, só vou negativar a lentidão para resolver atualizações. No fundo eu queria que ele fosse escrito em C e tivesse uma pré-etapa de processamento das ebuilds para binários, para ficar mais rápido.

5 curtidas

Quando tinha respondido àquele tópico, eu já tinha uma instalação do Gentoo funcional (apesar de ainda na partição secundária :sweat_smile:).

Fui atrás logo de overlays porque minha “stack” tem o foot, que só é empacotado no overlay Guru (que felizmente está na lista de confiáveis).

O kitty tem alguns defeitos de renderização na minha máquina (talvez relacionado à aceleração por GPU), e para não “desperdiçar” a bar embutida no Sway, uso o i3blocks.

Mas que história! Isso está até me dando ânsia de revisar os vários scripts de limpeza que eu tenho aqui. :joy:

Parando pra pensar, o etc-update é realmente um positivo do Gentoo, e quando o formato de arquivo de configuração não passa por uma “revolução” (o que é a maioria dos casos), ele até ajuda a descobrir as novas opções com mais tranquilidade.

Outra pequena coisa que dá para apreciar é que o Portage concentra todos os avisos no final, o que é melhor que rolar tudo para cima no Arch e derivados para ver avisos relacionados a mudanças no formato de configuração, novas dependências, etc.

Boa dica. Esse motor de busca inclusive parece ser mais preciso que o que me indicaram em outros chats de Gentoo.

Soube do Paludis, uma proposta para reescrever o Portage em C++, mas acabou que por algum motivo (que varia conforme quem conta a história) os desenvolvedores do Gentoo preferiram seguir usando o combo Python + Bash para o Portage, enquanto quem apoiava o Paludis formou uma outra distribuição, o Exherbo.

A pré-digestão de ebuilds é outra coisa que eu fico me perguntando porque não acontece. Parte do motivo para as “eclasses” existir parece ser para que elas não invoquem comandos externos e assim sejam seguras de serem “sourceadas” durante um emerge --search.

Não sei se vou mudar de ideia conforme usar mais o sistema, mas acho as soluções do AUR (um arquivo separado .SRCINFO que deve ser consultado em vez de sourcear o PKGBUILD) ou mesmo do KISS Linux (o script build ser apenas as instruções de compilação e empacotamento, enquanto todos os outros dados estão em arquivos separados) mais práticas.

Acho a solução do KISS Linux especialmente interessante porque é relativamente fácil fazer um gerenciador de pacotes totalmente compatível com o oficial da distribuição (que é escrito em shell) – já há um C e outro em Go, por exemplo, e esse último sequer tem envolvimento do autor da distribuição. Se houvesse mais um arquivo com opções estilo “USE flags”, talvez esse tópico se chamaria “duas semanas no KISS Linux”.

5 curtidas