De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


makeself - como criar arquivos auto-expansíveis ou instaladores no GNU/Linux

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 03 de julho de 2018

Para distribuição de arquivos para sistemas GNU/Linux usamos com frequência os utilitários tar, zip ou rar. A distribuição em um determinado formato pressupõe que a pessoa que o receber possui o programa correspondente para fazer a expansão do arquivo.

Em determinadas situações, como quando queremos distribuir um software que seja auto-instalável, podemos usar um aplicativo que crie um arquivo e coloque junto um pequeno shell script para fazer a auto-extração dos arquivos e realizar a instalação dos arquivos extraídos.

Tudo isto pode ser feito por meio do aplicativo makeself, de autoria de Stéphane Peter.

O programa makeself suporta diversos algoritmos de compressão (gzip, bzip2, pbzip2, xa, lzo, lz4, compress) e formatos de codificação ou criptografia (base64, gpg, ssl). Os checksums md5 e crc também são suportados. Para exibir a lista completa de opções, digite:

$ makeself --help 

A sintaxe básica do programa makeself é:

makeself.sh [opções] [diretório_a_compactar] [arquivo_auto-executável] [label] [script-inicializacao] [argumentos_opcionais_para_o_script]

O argumento label é a mensagem a ser impressa enquanto o arquivo auto-executável é expandido.

A opção arquivo_auto-executável é o script ou comando a ser executado após a extração bem sucedida do arquivo. Normalmente um script deste tipo irá copiar o conteúdo extraído para os diretórios apropriados. Este script deve fazer parte do diretório que será compactado de forma a que seja incluído no arquivo gerado.

Vejamos um exemplo simples:

$ sudo makeself /etc etc.sh "Teste makeself" /etc/etc.sh
[... diversas linhas suprimidas ...]
./debconf.conf
./upstart-xsessions
./magic
CRC: 2170093478
MD5: 804c62254b72707ce8e4dd50a89f73fe

Self-extractable archive "etc.sh" successfully created.

O arquivo instalador criado chama-se etc.sh e contém os arquivos de configuração do sistema (diretório /etc). O arquivo etc.sh é um script bem simples, com o seguinte conteúdo:

#!/bin/bash

echo "Funcionou ...."

É claro, este é apenas um exemplo, você pode incluir qualquer ação que desejar neste script.

Vamos agora executar o arquivo etc.sh:

$ ./etc.sh --target etc
Usage: /usr/bin/makeself [params] archive_dir file_name label [startup_script] [args]
params can be one or more of the following :
    --version | -v  : Print out Makeself version number and exit

   [... várias linhas suprimidas ...] 

Do not forget to give a fully qualified startup script name
(i.e. with a ./ prefix if inside the archive).
Creating directory etc
Verifying archive integrity... All good.
Uncompressing   100%  
Funcionou ...

A diretiva --target instrui o programa makeself a criar o diretório etc dentro do diretório corrente e expandir o conteúdo do arquivo neste mesmo diretório.

Para instalar o programa makeself em sistemas Debian GNU/Linux e derivados, digite:

 $ sudo apt-get install makeself 

Veja também

makeself: self-extracting archive

Error: No site found with the domain 's2.dicas-l.com.br' (Learn more)