Idioma
Categoria
Pesquisar

Compilando e gerando pacotes no Salckware com SlackBuilds

Como compilar programas e gerar pacotes no slackware, o que são Scripts SlackBuilds?

Compilando e gerando pacotes no Salckware com SlackBuilds
Em Terminal Por Rudi Drusian Lange
Publicado em
Última atualização

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.

screenshot-slackbuilds-terminator_01

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 psutilscreenshot-slackbuilds-terminator_02.

screenshot-slackbuilds-terminator_03

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+.

Repositórios Slackbuilds