Scripts SlackBuilds são simples shell scripts que podem automatizar a compilação do código fonte de programas gerando pacotes que podem ser instalados no Slackware, facilitando a atualização ou remoção futura destes programas.
Os scripts SlackBuilds funcionam como uma ferramenta para auxiliar no processo de compilação e empacotamento que geralmente são repetitivos. Também são importantes como documentação das opções e configurações da compilação de um pacote específico. Por estas razões todos os pacotes oficiais do Slackware traz consigo o SlackBuild junto com o código fonte, que podem ser encontrados no diretório source da versão da distribuição Slackware utilizada.
Utilizando scripts SlackBuild
Neste exemplo será utilizado o script SlackBuild para o apache, servidor httpd. Procure no mirror ou no dvd de instalação dentro do diretório source e faça o download de todos os arquivos da pasta /source/n/httpd/:
# Shell
cd /usr/local/src/ mkdir apache cd apache wget --passive-ftp ftp://ftp.slackware-brasil.com.br/slackware64-14.2/source/n/httpd/*
Estes comandos fazem o download dos arquivos necessários para a compilação do Apache. O mesmo processo pode ser usado para outros pacotes, sempre baixe todos os arquivos dentro da pasta do programa, este poderá vir acompanhado de patches, plugins, rc.* scripts, doinst.sh entre outros necessários para sua compilação, instalação e funcionamento.
De permissão de execução ao script SlackBuild e execute-o.
# Shell
chmod +x httpd.SlackBuild
./httpd.SlackBuild
Slackware package /tmp/httpd-2.4.20-x86_64-1.txz created.
No final da compilação será exibido o caminho para o pacote gerado, para instalá-lo basta usar o comando:
# Shell
installpkg /tmp/httpd-2.4.20-x86_64-1.txz
Agora suponha que você queira compilar uma versão mais recente do apache, faça o download no site, copie o arquivo .tar.bz2(código fonte) para a pasta apache criada acima e remova o fonte original do programa.
Se estiver usando versões diferentes lembre-se de alterá-las no nome do pacote.
# Shell
cd /usr/local/src/apache/ # Remova o source da versão antiga rm httpd-2.4.20.tar.bz2 # Download da nova versão wget http://mirror.nbtelecom.com.br/apache//httpd/httpd-2.4.41.tar.bz2 # Execute novamente o SlackBuild ./httpd.SlackBuild Slackware package /tmp/httpd-2.4.41-x86_64-1.txz created.
Diversas opções podem ser alteradas no script que não serão abordadas neste tutorial, você pode editar o arquivo httpd.SlackBuild e adiconar ou remover parâmetros para a compilação. Para instalar o novo pacote gerado você pode usar o comando upgradepkg que atualiza a versão anterior ou se não tiver o programa instalado use o comando installpkg.
# Shell
# Intala o pacote installpkg /tmp/httpd-2.4.41-x86_64-1.txz # Atualiza uma versão anterior já instalada upgradepkg /tmp/httpd-2.4.41-x86_64-1.txz
SlackBuilds para outros softwares
As informações acima ajudam a recompilar ou atualizar um pacote disponível na distribuição Slackware, porém muitos outros programas podem ser instalados através destes scripts. Para instalar a partir de terceiros a fonte mais utilizada é o site slackbuilds.org, suponha que você queira instalar o terminator que é um terminal com a funcionalidade de se dividir em várias janelas, que não faz parte dos pacotes padrões do Slackware. Acesse o site e pesquise por terminator, no resultado clique no link terminator.
Antes de mais nada é importante ler o arquivo README e as informações da tela como na imagem. Alguns mantenedores colocam notas sobre dependências, opções de compilação disponíveis, avisos sobre possíveis conflitos com pacotes do slackware, passos a serem executados antes e depois da instalação entre outras coisas relacionadas ao script.
Na tela do slackbuild do termintor é informada de uma dependência opcional, python-keybinder. Após o README, são informadas as dependências requeridas, neste caso é informada a necessidade de instalar o pacote psutil →.
Para compilar e gerar o pacote do terminator ou outro programa, será necessário baixar 2 arquivos, um com o script SlackBuild para a compilação e outro arquivo com o fonte do programa.
Comece pelo psutil, faça os downloads, descompacte o arquivo com o script SlackBuild, mova o fonte para a pasta descompactada, conceda permissão de execução e execute o script com o usuário root.
# Shell
cd /usr/local/src/ # Downloads wget https://slackbuilds.org/slackbuilds/14.2/python/psutil.tar.gz wget https://pypi.io/packages/source/p/psutil/psutil-5.6.7.tar.gz # Descompacte o SlackBuild tar -xvf psutil.tar.gz # Mova o source para a pasta descompactada e acesse-a mv psutil-5.6.7.tar.gz psutil/ cd psutil/ # Conceda permissão de execução e execute o script chmod +x psutil.SlackBuild ./psutil.SlackBuild Slackware package /tmp/psutil-5.6.7-x86_64-1_SBo.tgz created. # Instale o pacote gerado installpkg /tmp/psutil-5.6.7-x86_64-1_SBo.tgz
Agora o terminator:
# Shell
cd /usr/local/src/ # Downloads wget https://slackbuilds.org/slackbuilds/14.2/system/terminator.tar.gz wget https://launchpad.net/terminator/trunk/1.0/+download/terminator-1.0.tar.gz # Descompacte o SlackBuild tar -xvf terminator.tar.gz # Mova o source para a pasta descompactada e acesse-á mv terminator-1.0.tar.gz terminator/ cd terminator/ # Conceda permissão de execução e execute o script chmod +x terminator.SlackBuild ./terminator.SlackBuild Slackware package /tmp/terminator-1.0-x86_64-1_SBo.tgz created. # Instale o pacote gerado installpkg /tmp/terminator-1.0-x86_64-1_SBo.tgz
Abra o novo programa instalado com o usuário normal para testá-lo.
$ Shell
terminator
A versão do programa disponível no SlackBuilds geralmente não é a mais recente, caso precise atualizá-la baixe o pacote direto no site do projeto, neste caso do terminator.
# Shell
cd /usr/local/src/terminator/
# Faça o download da nova versão
wget https://launchpad.net/terminator/gtk3/1.91/+download/terminator-1.91.tar.gz
Ao utilizar uma versão diferente altere a variável VERSION no arquivo .SlackBuild. A versão é informada como numeração no nome do pacote, exemplo da versão disponível no SlackBuilds: terminator-1.0-x86_64-1_SBo.tgz e do novo arquivo baixado do site do projeto: terminator-1.91.tar.gz.
terminator.SlackBuild
# Altere de: VERSION=${VERSION:-1.0} # Para: VERSION=${VERSION:-1.91}
Agora execute o script SlackBuild
# Shell
./terminator.SlackBuild
cp: cannot stat 'RELEASING': No such file or directory
O script SlackBuild acima retornou um erro cp: cannot stat 'RELEASING': No such file or directory e não foi concluído. Após descompactar e investigar o código fonte da versão anterior, 1.0, e da nova versão, 1.91, reparei que o arquivo terminator-1.0/RELEASING havia sido renomeado na nova versão para terminator-1.91/PKG-INFO. Para corrigir o erro altere novamente o script SlackBuild:
terminator.SlackBuild
# Altere de: DOCS="INSTALL COPYING RELEASING README ChangeLog" # Para: DOCS="INSTALL COPYING PKG-INFO README ChangeLog"
Agora o script irá compilar normalmente.
# Shell
./terminator.SlackBuild # Instale /tmp/terminator-1.91-x86_64-1_SBo.tgz # Ou atualize upgradepkg /tmp/terminator-1.91-x86_64-1_SBo.tgz
É comum ao atualizar uma versão de programa utilizando o mesmo script SlackBuild da versão anterior que haja diferenças que impeçam a geração do pacote. Algumas vezes será algo simples como neste exemplo em outros casos poderá ser tão complexo que será necessário aguardar o desenvolvimento da atualização do script SlackBuild.
A utilização de scripts SlackBuilds pode ser exaustiva dependendo da quantidade de programas que se queira instalar ou se o programa tiver muitas dependências, existe uma ferramenta chamada sbopkg que automatiza o processo.
Para instalar programas de terceiros outra alternativa é a utilização da ferramenta slackpkg+.