Sobre o Exherbo
Distribuição criada em 2008 por um dos ex-desenvolvedores do Gentoo, Bryan Østergaard, que conta com uma lista de desenvolvedores que pode ser vista, em:
- Trata-se, mais ou menos, de um fork do Gentoo. Por que "mais ou menos"?
- Porque é independente do Gentoo, mas foi inspirada em sua filosofia.
Dentre as principais diferenças entre Exherbo e Gentoo, destaco o gerenciador de pacotes
Paludis, ao invés do
Portage, e o seu nível de "hostilidade" ao usuário.
- Por que
Exherbo é considerado hostil ao usuário?
- Esta é minha opinião: Exherbo tem pouca documentação e é recomendado ao usuário ter prévia experiência com distribuições
source-based. Os usuários de Exherbo são
incentivados a serem também desenvolvedores do projeto, de acordo com a página oficial.
Ainda na página oficial da distribuição, podemos encontrar o seguinte:
"You're to think for yourself. Exherbo is not a system where we document everything so you'll need a basic understanding of how Linux systems work to be able to set up many things and work out problems efficiently when necessary."
Numa tradução livre:
"Pense por si mesmo. Exherbo não é um sistema onde se documenta tudo, então o que você vai precisar é de uma compreensão básica de como funciona o Linux para ser capaz de fazer as coisas e resolver problemas de forma eficiente quando necessário."
O site oficial do Exherbo contém apenas a documentação mínima, como processo de instalação da distro e pouco mais:
Exherbo passa a imagem de ser uma distribuição hermética e os responsáveis por ela, aparentemente, não querem facilitar muito o seu uso por parte de usuários "comuns", de propósito, ao contrário de Gentoo e Funtoo, onde os responsáveis se esforçam para
ajudar os usuários.
Num texto de manifesto do Exherbo, podemos encontrar coisas como:
"Exherbo is a distribution designed for people who know what they're doing with Linux... In other words, go and use Gentoo or Ubuntu please."
"Exherbo é uma distribuição voltada para usuários que sabem o que estão fazendo com Linux... Em outras palavras, vá e use Gentoo ou Ubuntu, por favor."
"We don't provide support."
"Não damos suporte."
E também:
"It's not that we hate you (unless we do). It's just that we have nothing to offer you, and you have nothing to offer us."
"Não que odiemos você (a menos que odiemos), nós apenas não temos nada a lhe oferecer e você não tem nada a nos oferecer."
Meio radical, não? Por essas e outras, Exherbo não é apenas considerada uma distribuição hermética, pouco documentada, voltada para desenvolvedores e hostil ao usuário, mas possivelmente, também seja elitista.
Sobre o artigo
O artigo é curto, simples e direto, primeiro porque Exherbo Linux é para usuários que não precisam de explicação sobre o que cada comando faz e segundo, porque eu sou completamente iniciante em Exherbo e ainda não tenho bagagem para dissecar esse
sistema e detalhá-lo como merece.
Não sou usuário avançado (longe disso), mas fui capaz de instalar o Exherbo. Agora, mantê-lo é outro problema e eu ainda não decidi se vou tentar fazer isso, pois não gostei da distro.
Mesmo assim, espero que este artigo ajude outros usuários a instalá-lo também, como um pontapé inicial e, a partir disso, espero que surjam cada vez mais material sobre Exherbo para, quem sabe, desmistificarem esse lance de distribuição difícil. O que existe
é distribuição pouco documentada e com poucas pessoas dispostas a compartilhar conhecimento.
Não que Exherbo seja fácil, mas creio que a maior dificuldade do Exherbo não é a distribuição em si, mas a falta de documentação e suporte.
Início da instalação
Eis a minha tabela de partição durante a instalação:
Dispositivo Inicializar Início Fim Blocos Id Sistema
/dev/sda1 2048 206847 102400 7 HPFS/NTFS/exFAT
/dev/sda2 206848 205123583 102458368 7 HPFS/NTFS/exFAT
/dev/sda3 205123645 625142447 210009401+ 5 Extended
/dev/sda5 205123647 305128208 50002281 83 Linux
/dev/sda6 * 305128272 405132178 50001953+ 83 Linux
/dev/sda7 405132897 614848511 104857807+ 83 Linux
/dev/sda8 614850560 625141759 5145600 82 Linux swap / Solaris
Meu objetivo, conforme você verá lendo o artigo, é instalar Exherbo em
/dev/sda6 e montar a
/home em
/dev/sda7, compartilhando assim a
/home com os dois sistemas (Exherbo e Funtoo). Usei o
stage amd64 current.
Levo em consideração que o suporte para a instalação (seja live-CD ou um
GNU/Linux instalado em outra partição) esteja com internet funcionando e que o particionamento já esteja feito ao gosto e/ou necessidade do usuário.
Por favor, se familiarize com o guia de instalação do Exherbo, antes de tudo:
Para evitar confusões, como já vi antes: este artigo não tem intenção de substituir ou complementar o manual oficial. É apenas um método que funcionou e está documentado e pode servir como material de consulta.
Comandos iniciais para instalação:
# mkfs.ext4 /dev/sda6
# mkdir /mnt/exherbo && mount /dev/sda6 /mnt/exherbo && cd /mnt/exherbo
# wget http://dev.exherbo.org/stages/exherbo-amd64-current.tar.xz
# wget http://dev.exherbo.org/stages/sha1sum
# grep exherbo-amd64-current.tar.xz sha1sum | sha1sum -c
Saída deve ser:
exherbo-amd64-current.tar.xz: SUCESSO
Para outros
stages, por favor, veja:
Continuando:
# tar xJpf exherbo*xz
# vi /mnt/exherbo/etc/fstab
Configurei-o da seguinte maneira:
#/dev/BOOT /boot ext2 noauto,noatime 1 2
/dev/sda7 /home ext4 noatime 0 2
/dev/sda6 / ext4 noatime 0 1
/dev/sda8 none swap sw 0 0
/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
#/dev/fd0 /mnt/floppy auto noauto 0 0
Agora, algo importante, pois usaremos o "maledetto" systemd. Use o comando
blkid para gerar a UUID de cada partição e substitua na tabela, deixando, por exemplo, assim:
#/dev/BOOT /boot ext2 noauto,noatime 1 2
UUID="1cd40733-c1a9-4137-a872-73bc98432201" TYPE="ext4" PARTUUID="0005f439-07" /home ext4 noatime 0 2
UUID="e0df6c87-7fbb-4256-802c-4ad9df30e643" TYPE="ext4" PARTUUID="0005f439-06" / ext4 noatime 0 1
UUID="3b741cf6-98c5-43c2-a7d8-97578a5d5f71" TYPE="swap" PARTUUID="0005f439-08" none swap sw 0 0
#/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
#/dev/fd0 /mnt/floppy auto noauto 0 0
Se não fizer isso, ao dar boot, cairá em
Emergency Mode.
Continuando:
# mount -o rbind /dev /mnt/exherbo/dev/
# mount -o bind /sys /mnt/exherbo/sys/
# mount -t proc none /mnt/exherbo/proc/
# cp /etc/resolv.conf etc/resolv.conf
No meu caso, o
/home já estava montado. No seu caso, se for necessário, monte o
/boot ou o
/home, se for preciso.
Continuando:
# env -i TERM=$TERM SHELL=/bin/bash HOME=$HOME $(which chroot) /mnt/exherbo /bin/bash
# source /etc/profile
# export PS1="(chroot) $PS1"
# cd /etc/paludis
# ls
Resultado:
bashrc licences.conf platforms.conf repository_defaults.conf
general.conf options.conf repositories repository.template
Agora, se faz necessário ler sobre o
Paludis e seus arquivos de configuração. O link para a página do
Paludis, é:
Aqui, uma breve introdução sobre os arquivos de configuração.
* general.conf :: este arquivo contém a localização dos arquivos
world (algo como o
set world do Gentoo). O padrão, é:
world = ${root}/var/db/paludis/repositories/installed/world
* platforms.conf :: arquivo onde se configuram as variáveis dos pacotes que serão aceitos. O padrão, para o
stage que usei, é:
*/* amd64 ~amd64
O "~" inclui pacotes instáveis.
Você pode configurá-lo, por exemplo, com aplicativos específicos assim:
app-misc/blah amd64 ~amd64
Ou então:
*/* amd64 ~amd64
app-misc/blah -* amd64
Os sinais se acumulam, e os pacotes instáveis não são aceitos automaticamente. Você pode usar
-* para negá-lo. O sinal "*", pode ser usado para aceitar tudo, inclusive sinais vazios.
* options.conf :: arquivo com mais opções para compilação dos pacotes. O padrão tem:
*/* build_options: jobs=2
Aqui, é onde se faz mais necessário modificá-lo. De acordo com a página do
Paludis, há o seguinte exemplo:
*/* -doc nls -apache2
*/* LINGUAS: en
*/* INPUT_DEVICES: keyboard mouse
*/* VIDEO_CARDS: -* ati
app-editors/vim -nls
Com base nisso, e principalmente nas minhas necessidades iniciais, eu alterei para:
*/* build_options: -recommended_tests jobs=5
*/* video_drivers: intel vesa fbdev
*/* input_drivers: keyboard synaptics evdev
*/* linguas: pt_BR
*/* X systemd ncurses nl80211 xfce -kde -gnome
* mirrors.conf :: este arquivo não existe por padrão, é preciso criá-lo. O site do
Paludis tem o seguinte exemplo de seu conteúdo:
gentoo http://gentoo.blueyonder.co.uk/distfiles/
gnu http://gnu.blueyonder.co.uk/
debian http://debian.blueyonder.co.uk/
Eu resolvi não criá-lo.
* bashrc :: mais opções de compilação, mas não deve incluir nenhum valor que seja relacionado a dependências, como USE, LINGUAS, etc. É para definir CFLAGS e similares. Para mais informações veja a página do
Paludis, cujo link foi mostrado antes.
Para a minha realidade, eu alterei, comentando o padrão e adicionando as mesmas especificações do Funtoo. Deixei assim:
#CHOST="x86_64-pc-linux-gnu"
#CFLAGS="-march=native -pipe -O2"
#CXXFLAGS="${CFLAGS}"
CFLAGS="-march=native -fomit-frame-pointer -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
* repositories :: diretório onde há um arquivo para cada repositório. De imediato, não fiz alterações nele, mas é bom que leia sobre o mesmo no site do
Paludis. O principal repositório é o
arbor, de árvore em latim.
Após checar esses arquivos. Atualize o
Paludis:
# cave resolve paludis -x
# cave sync
Saída:
Sync results
* accounts: no syncing required
* arbor: success
* installed: no syncing required
* installed-accounts: no syncing required
* installed-unpackaged: no syncing required
* repository: no syncing required
* unavailable: success
* unavailable-unofficial: success
* unwritten: success
* x-graveyard: success
* Regenerating cache for installable repositories...
Fixing cache for accounts...
Fixing cache for arbor...
Fixing cache for graveyard...
Fixing cache for unavailable...
Fixing cache for unavailable-unofficial...
Fixing cache for unwritten...
* Done regenerating cache for installable repositories
* You have 2 unread news items (use 'eclectic news' to read)
Para ler os itens, execute:
# eclectic news list
# eclectic news read all
Como instalar um pacote pelo
Paludis? Como exemplo, vamos instalar o
Axel.
# cave resolve axel -x
Sem o
-x, ele não executa.
Vai dar erro, com a seguinte mensagem:
Masked by unavailable (In a repository which is unavailable)
Consulte o FAQ sobre isso:
E lá, vai dizer que basta executar:
# cave resolve repository/nome-do-repositório -x
Então, executo:
# cave resolve repository/rorgoroth -x
E tento novamente instalar o
Axel:
# cave resolve axel -x
Dessa vez, com sucesso.
Na próxima página, veremos o kernel e outras configurações.