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

sexta-feira, 9 de maio de 2008

CakePHP 1.2 Scaffolding em Português

Scaffolding é uma estrutura provisória para auxiliar na construção de algum sistema, no caso do CakePHP ele funciona gerando listas e formulários que permitem inserção, atualização e exclusão de dados.
Como por padrão o CakePHP 1.2 tem o scaffold e inglês, fiz algo bem simples, e que pode ajudar quem está começando a utilizar este framework, traduzi o scaffold no braço, aqui estão os Arquivos, apenas descompacte e coloque os arquivos no diretório cake->libs->view da sua aplicação, conforme a figura abaixo:


Para remover a visualização dos resultados da query, alterei o arquivo dbo_source.php (comentei linhas 389 até 401) que está em cake->libs->model->datasources.
O cabeçalho padrão fica no arquivo default.ctp em cake->libs->view->layouts.
Veja os resultados abaixo.

Antes:


Depois:

Onde fica a página inicial?
Por padrão encontrei home.ctp em app->views->pages

Estou fugindo um pouco da forma padronizada, que é orientada nos tutoriais para CakePHP, mas ao verificar o conteúdo dos arquivos edit.ctp, index.ctp e view.ctp será possível entender um pouco como o scaffold funciona internamente.

Um bom tutorial de scaffold está em:
http://grahambird.co.uk/cake/tutorials/scaffolding.php