Eu adoro os SlackBuilds, os scripts para compilar programas e criar pacotes para o Slackware. Fiquei maravilhada após ler um ótimo artigo explicando as vantagens dos SlackBuilds VS. compilar manualmente com os comandos "./configure && make && make install". Eu queria poder colocar um link para ele, mas infelizmente o site não existe mais (era o site do GoblinX, uma distribuição brasileira baseada no Slackware, que depois virou ImagineOS, mas parou de ser atualizada faz um bom tempo).

Outro dia, recebi uma mensagem de uma pessoa que estava tentando usar os meus scripts para instalar o Orca no Slackware (que aliás, atualizei para funcionarem no 14.1!), com dúvidas sobre SlackBuilds em geral. Então resolvi explicar, e essa foi a resposta que eu dei pra ele:

Basicamente, o SlackBuild é apenas um Shell script que define algumas variáveis ​​comuns (como a arquitetura da sua máquina), aplica patches se necessário, e especifica quais opções devem ser passadas ao "./configure" (como dizer que gostaríamos de instalar os binários em "/usr/bin" e as bibliotecas em "/usr/lib", em vez de "/usr/local/bin" e "/usr/local/lib", que costumam ser os padrões se nada for especificado no "./configure"). Ele compila o programa, copia os arquivos de documentação para lugares apropriados, depois empacota tudo em um ".tgz" ou ".txz" (se você usar, por exemplo, "tar -tf nomedopacote.tgz" para ver seu conteúdo, vai perceber que é algo como a estrutura de diretórios do seu sistema de arquivos, com "usr/bin" etc, compactado com Tar e Gzip). Estes pacotes são muito fáceis de instalar com "installpkg". Quando um pacote é instalado, um arquivo com o nome do pacote sem a extensão ".t?z" é colocado em "/var/log/packages" com a lista de todos os arquivos que foram instalados com o programa. E uma das coisas que mais gosto é que eles também são muito fáceis de desinstalar com "removepkg". Se o programa foi compilado com "./configure && make && make install" manualmente sem o SlackBuild (portanto, não empacotado e sem a lista de arquivos em "/ var / log / packages"), é muito mais difícil saber quais arquivos foram instalados onde, e para removê-los, o jeito mais fácil é entrar no diretório com os fontes do programa (é necessário baixar o código fonte de novo se não o tivermos mais, dar "./configure" com as mesmas opções que usamos para instalar pela primeira vez - se é que lembramos quais opções passamos :P - para gerar o makefile de novo), então usar "make uninstall" (e adivinha, nem todo programa que tem "make install" também tem a opção "make uninstall"! Então, já viu a confusão que pode dar?)... Por outro lado, se tivéssemos instalado o programa por meio de um pacote do Slackware, poderíamos removê-lo simplesmente fazendo "removepkg nomedopacote" e as ferramentas de pacote do Slackware se encarregariam de encontrar e remover os arquivos corretamente. Em outras palavras, é maravilhoso :D.

Isso me ocorreu depois e eu não mandei na resposta, mas também tem gente que gosta de usar programas como o Checkinstall, que monitora a saída do "make install" para saber quais e onde foram parar os arquivos, depois cria um pacote instalável (suporta várias distribuições, incluindo o Slackware), mas particularmente prefiro usar SlackBuilds (mesmo que dê um pouco mais de trabalho criar um script se não existir um pronto para o programa que eu quero) porque serve como uma forma organizada de documentar as opções e os passos usados para compilar o programa, bem úteis quando precisar atualizar e compilar de novo.