Criando pacotes (.tgz) no Slackware

Started by vuln, 02 de October , 2006, 04:35:51 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

vuln

Criando pacotes (.tgz) no Slackware

==Introdução

Este tutorial ensina a como criar seu proprios pacotes .tgz, o que facilita a maneira como sua aplicacao é distribuida, e melhora as chances de uma implantacao bem sucedida.

Conteúdo


    * 1 Preparando o pacote
          o 1.1 Requisitos Necessários
          o 1.2 Source-code
          o 1.3 Compilando
          o 1.4 "Instalado"
    * 2 Criando o pacote
          o 2.1 Retirando símbolos de debug
          o 2.2 O comando
          o 2.3 O slack-desc
          o 2.4 Algumas explicações
    * 3 Final

Preparando o pacote

Isto aqui é uma espécie de introdução. Como o título já diz aqui será explicado como se pode criar um pacote instalável no Slackware. Vou tentar ser o mais breve possível.

Requisitos Necessários

Bom, para começar você precisa ter o Slackware instalado. =) Depois você precisa ter o pacote pkgtools. (Não se desespere, ele é instalado por default, então com quase toda certeza você deve tê-lo instalado no sistema)

Source-code

Isso mesmo, para você criar um pacote de algum programa para seu slack você vai precisar compilá-lo antes, para isso terá que pegar seu source-code, que geralmente vem com as extensões .tar.gz ou .tar.bz2

Descompactando .tar.gz: tar xfvz arquivo.tar.gz Descompactando .tar.bz2: tar xfjvp arquivo.tar.bz2

Após o source-code ser descompactado entre na pasta que foi gerada, geralmente tem o mesmo nome do arquivo mas sem o .tar.gz ou bz2 no final.

Compilando

Vou ser bem breve explicando as opções padrões de compilação.

Muitos usuários com pouca experiência compilam programas apenas com ./configure ; make ; make install o que não é uma boa idéia quando se está criando um pacote para o sistema, já que ele precisa estar dentro dos padrões. Vou explicar um jeito bem resumido de compilar seus programas dentro dos padrões do Slackware.

Estando dentro do diretório citado no final do item 1.2, o primeiro comando que você precisa executar é:

./configure --prefix=/usr --sysconfdir=/etc

Explicações:

    * --prefix=/usr define que os binários, bibliotecas e documentações devem ser instalados dentro de /usr e não dentro de /usr/local como é por padrão quando se usa somente ./configure
    * --sysconfdir=/etc define que os arquivos de configuração do programa devem ser instalados dentro de /etc e não dentro de /usr/local/etc como por padrão.

Feito o passo anterior seu source-code já estará configurado para ser compilado dentro dos padrões de um pacote Slackware, então basta executar make (este comando irá compilar o source-code).

Se tudo correr certo e você não receber nenhuma mensagem de ERROR então passe para o próximo item. (Descarte mensagens de WARNING, elas não são erros, servem apenas para advertir ao programador).



"Instalado"

Neste item eu vou explicar o comando que você precisa executar para "instalar" o programa para um diretorio temporário onde será criado o pacote posteriormente.

O comando a ser executado é:

# make install DESTDIR=/tmp/package-nomedoprograma/

Após executá-lo seu programa estará instalado em /tmp/package-nomedoprograma

Criando o pacote

Muito bem agora chegamos na parte de criação do pacote, no item seguinte será explicado como reduzir o tamanho do programa retirando seus símbolos de debug (que só servem para desenvolvedores ou hackers).

Retirando símbolos de debug

O programa usado para retirar os símbolos de debug é o strip, no entanto vou passar uma receita de bolo de como usá-lo diretamente em seu programa compilado.

O primeiro comando é: strip --strip-unneeded /tmp/package-nomedoprograma/usr/{,s}bin/* (Este comando irá retirar os símbolos desnecessários, usados pelo compilador, dos binários do programa)

O segundo comando é: strip --strip-debug /tmp/package-nomedoprograma/usr/lib/* Feito isto o tamanho do seu pacote gerado será bem reduzido.

O comando

O comando utilizado para a geração dos pacotes .tgz no Slackware é o makepkg que deve ser utilizado desta maneira: makepkg nomedoarquivo-versão.tgz e responder y nas perguntas que podem vir a aparecer e que serão explicadas no item 2.4

O slack-desc

O slack-desc é o arquivo onde vai estar a descrição do seu programa, aquela que vai aparecer quando você estiver instalando. Para que ele seja incluído no pacote você deve criar o diretorio /tmp/package-nomedoprograma/install e colocá-lo lá dentro com seu nome original: slack-desc

Abaixo segue um exemplo do arquivo slack-desc:

# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first ''|'' above the '':'' following the base package name, and the ''|''
# on the right side marks the last column you can put a character in. You must
# make exactly 11 lines for the formatting to be correct. It''s also
# customary to leave one space after the '':''.

|-----handy-ruler------------------------------------------------------|
xmms: xmms (audio player)
xmms:
xmms: XMMS is a cross-platform multimedia player. Since it uses the WinAmp
xmms: GUI, it can use WinAmp skins. It can play audio formats such as mp3,
xmms: mod, s3m, and ogg. It has support for input, output, general, and
xmms: visualization plugins.
xmms:
xmms:
xmms:
xmms:
xmms:

Obviamente que você precisa criar este arquivo antes do comando do item 2.2 ser executado.

Algumas explicações

Sobre as perguntas que podem aparecer ao executar o comando makepkg são duas:

A primeira é se você quer aplicar permissão de root em todos os arquivos.

A segunda é se você quer remover os link simbólicos para que sejam criados quando o programa for instalado.

Ambas as perguntas são medidas de segurança para o sistema, portanto se você pretende deixar ser sistema sempre seguro recomendo responder y nas duas.

Final

É isso ai, escrevi este texto aqui no meu trabalho, por falta do que fazer, mas com intuito de ajudar os leigos nesta distribuição que em minha opinião é a melhor. Slackware r0x! Caso sejam encontrados problemas no texto peço para que me enviem um e-mail relatando-os.

Agradeço a todos aqueles que me ajudaram sempre que precisei.



Dados do autor

Nome: Bruno R. da Silva Nickname: Blood_Brother ou Blutsbruder Nascido em: 14/04/1985 Cidade: Florianópolis Site pessoal: http://www.bloodcorp.tk E-Mail: < mailto:blood_brother@phreaker.net">blood_brother@phreaker.net> Ocupação: Estudante de Ciências da Computação na Universidade Federal de Santa Catarina (UFSC)
Experiencia Profissional: Administração de redes Windows e Linux, implementação de proxys e serviços de ftp, http, sshd e vnc.
Retirado de "http://underlinux.com.br/wiki/index.php/Tutoriais/Adm/tgz"

-----------------
Em especial para os colaboradores de repositórios de pacotes (.TGZ) para o Slackware no mundo! (by vuln)

Abraços e até mais.
"O amor por princípio, a Ordem por base, o progresso por objetivo."