sexta-feira, 16 de maio de 2008

Como criar um pacote de instalação deb (Ubuntu)

Os arquivos de extensão DEB, são pacotes de instalação de programas para sistemas operacionais derivados do Debian, como o Ubuntu.
Lembrando que é possível gerar um pacote de instalação e incluir as dependências de bibliotecas necessárias, ou seja, gerar um pacote com apenas o programa executável e na hora de instalar em outro computador a instalação irá incluir o download e instalação destas bibliotecas.

Para iniciar o processo, precisamos de um software para instalar, então escolhi o jogo DR Quebra- Cabeça do meu amigo DiogoRBG.

A estrutura inicial da distribuição do jogo não está tão organizada(executável windows com linux), mas vou pegar somente o que será utilizado:

Conforme a figura acima, temos:
1 - Arquivos auxiliares, imagens e outros para que o jogo funcione;
2 - Binário, executável ou o próprio jogo compilado;
3 - Licença de uso ou algum aviso;

Esta ordem acima não é muito importante para criar o pacote de instalação DEB, mas a próxima seqüencia deve ser feita.

Crie uma pasta principal(exemplo: /drquebracabeca), e crie dentro dela uma pasta com o nome DEBIAN, isso mesmo tudo maiúsculo, crie também uma seqüencia de diretórios onde o programa será instalado (exemplo: /usr/lib/drquebracabeca)

Observe que na figura coloquei algumas pastas e arquivos extras, mas vou explicar como fiz tudo. Acredito que a forma como criei este pacote pode esclarecer algumas questões.

Na pasta DEBIAN coloque um arquivo com o nome control, o conteúdo deste arquivo contém as descrições e parâmetros necessários para construir o pacote de instalação. Verifique o que coloquei no control:

Package:drquebracabeca
Priority: optional
Version:0.1.1
Architecture:i386
Maintainer: Diogo RBG
Section: misc
Installed-Size: 720
Depends: libsdl1.2debian(>=1.2), libsdl-gfx1.2-4(>=1.2-4),
libsdl-image1.2(>= 1.2), libjpeg62, libpng12-0(>= 1.2-0),
zlib1g
Description: DR Quebra-Cabeça
No DR Quebra-Cabeça você tem a liberdade de montar um quebra
cabeça como quiser!
Não existem posições determinadas para cada peça, você só
precisa juntar uma à outra e pronto!

Pacote DEB criado por http://renedet.blogspot.com

Alguns parâmetros importantes:
Package é o nome do programa, procure manter o mesmo, pois quando mudar a versão a mais nova substituí a antiga;
Version é a versão do programa, mude sempre que lançar uma nova versão;
Architecture é a arquitetura do processador que o programa foi desenvolvido;
Maintainer o desenvolvedor que criou e distribuí o programa;
Installed-Size tamanho do programa (em Kb) depois que ele for instalado;
Depends são todas as dependências e bibliotecas necessárias para que o programa funcione;
Description é a descrição sobre o software, para que serve e outras informações uteis para quem vai instalar o programa;

O comando básico para gerar o pacote de instalação chama-se
dpkg-deb, utilize da seguinte forma:
dpkg-deb -b pastadopacote/ nomedopacote.deb


Exemplo:
dpkg-deb -b drquebracabeca/ drquebracabeca.deb


Extras:
Dentro da pasta usr coloquei mais duas pastas: bin e share
A pasta bin contém um script bash chamado drquebracabeca.sh, que será o nosso executável, e ele contém os comandos:

#!/bin/bash
cd /usr/lib/drquebracabeca/
./drquebracabeca
Fiz este script shell, pois na pasta da instalação do jogo /usr/lib/drquebracabeca contém uma pasta de recursos para o jogo funcionar, como as imagens do jogo.

Em share temos a pasta applications, que contém o arquivo drquebracabeca.desktop que descreve o botão para iniciar o jogo em Aplicações->Jogos->DR Quebra Cabeça, o conteúdo deste arquivo:

[Desktop Entry]
Comment=DR Quebra Cabeça
Name=DR Quebra Cabeça
Exec=/usr/bin/drquebracabeca.sh
Icon[pt_BR]=/usr/lib/drquebracabeca/arquivos/icone.ico
Encoding=UTF-8
Terminal=false
Name[pt_BR]=DR Quebra Cabeça
Comment[pt_BR]=DR Quebra Cabeça
Type=Application
Icon=/usr/lib/drquebracabeca/arquivos/icone.ico
Categories=Game;


As opções importantes para este atalho:
Exec é o comando para executar o jogo;
Categories coloque Game se for um jogo, e já estará no item Jogos de Aplicações;

Instalador DR Quebra Cabeça Ubuntu

Links adicionais de como criar um pacote deb:
http://diegohs25.blogspot.com
http://www.vivaolinux.com.br
http://synthesize.us

7 comentários:

Diogo_RBG disse...

Meu programa serviu de exemplo \o/

Criar pacotes Debian é realmente muito simples !
Vou seguir seu passos pra distribuir meu jogos em pacotes pro Debian !

Renan Fernandes disse...

Muito bom!
É por essas e outras que sou apaixonado por SL. Como giria o velho guru:
"Colher informações é o primeiro passo para a sabedoria, compartilhar estas informações é o primeiro para uma comunidade."

Parabéns,
Saúde e paz.

DjOnY disse...

Opa.. muito simples mesmo, testei e funcionou, parabéns pelo post!

Renê Dettenborn disse...

No arquivo control na propriedade Description se for ter várias linhas deixe um espaço no inicio de cada linha e um espaço e um . para uma linha em branco.

Raul disse...

E como faço pra instalar arquivos dentro da pasta do usuário?
Quero instalar um arquivo dentro da pasta $HOME/.local/

Como deve fica a estrutura de pastas para isso?

Renê Dettenborn disse...

Ola Raul, pelo que entendi você quer que o teu programa seja instalado apenas para um usuário em: /home/raul/.local
A solução que achei foi executar um script depois da instalação:
1- crie a pasta postinst em DEBIAN (/DEBIAN/postinst)

2-e dentro de postinst coloque o nome_do_teu_script.sh
O script que for colocado na pasta /DEBIAN/postinst será executado depois da instalação.

3-Agora você terá que ver na net como fazer este script copiar os arquivos de execução para pasta do usuário corrente (/home/raul/.local), recomendo os comandos: mv, cp e rm

Mais sobre postinst
http://colmeia.tuxfamily.org/wordpress/?p=67

Raul disse...

Renê, eu já havia pensado nisso, e até já fiz alguns testes com postinst e postrm, eu só perguntei porque achei que havia algum outro método através da estrutura de pastas, mais de qualquer forma muito obrigado pela ajuda...

AbraxX!!!