SDLMame e de quebra como criar .deb a partir de programas que não possuem “make install”
(Antes de ler, saiba que alguns caracteres como - - dois traços seguidos viram um traço longo –, as aspas duplas vira isso aqui : “”, sim este wiki modifica alguns caracteres. Então ao utilizar o famoso copiar/colar atente-se a isso.)
Melhor talvez do que rodar remakes de sucesso, é rodar o próprio game, apesar de ser meio “retro” para alguns, é de longe a melhor forma de reviver jogos originais. Nesse artigo vamos instalar o sdlmame, trata-se do “emulador” MAME, porém numa compatibilidade específica com SDL e com versões mais sincronizadas com o mame, na minha opnião é melhor que o xmame.
Vamos ao passo-a-passo :
1) Antes de prosseguir com a instalação e criaçao de pacote, certifique-se de que tenha acrescentado o repositório ‘multiverse’ no seu /etc/apt/sources.list :
deb http://br.archive.ubuntu.com/ubuntu/ edgy universe multiverse
deb-src http://br.archive.ubuntu.com/ubuntu/ edgy universe multiverse
se não estiverem habilitados, habilite-os e por fim atualize a base de dados do apt :
sudo apt-get update
2) Vá para o diretório /opt :
cd /opt
3) Faça o download do sdlmame na pasta /opt :
http://rbelmont.mameworld.info/?page_id=163
ou se preferir :
sudo wget -vc http://rbelmont.mameworld.info/sdlmame0110u1.zip
3) Descompacte o sdlmame e permaneça do diretorio descompactado :
unzip sdlmame0110u1.zip
renomeie o diretorio ’sdlmame0110u1′ para algo descreva melhor o nome, como :’sdlmame’ :
mv sdlmame0110u1 sdlmame
por fim, permaneça no diretório dos fontes
cd sdlmame/
4) Antes de prosseguir com a compilação, é necessário certificar-se de que voce possua as ferramentas GNU essenciais para a compilação, além disso alguns programas serão requisitados para criar um pacote .deb após a compilação e simplificar novas atualizações :
sudo apt-get -y install build-essential dpkg-dev debhelper devscripts fakeroot linda dh-make
5) Agora vamos baixar as dependencias para a compilacao :
sudo apt-get install -y libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-sound1.2-dev libexpat-dev libxinerama-dev x11proto-xinerama-dev
Vamos precisar dum icone para o sdlmame, vamos pegar emprestado de outro site :
wget -vc http://www.mame.net/mame.png
6) Compilação :
make
(ou se voce possuir um DualCore tente “make -j2″)
7) Precisamos instalar um frontend para o sdlmame, isto é necessário porque o sdlmame só funciona na linha de comando e com um front-end podemos navegar entre os games existentes, ver um screenshot de cada um deles e manter os preferidos numa lista de favoritos. Infelizmente, a maioria dos frontends para MAME rejeitam o sdlmame, então é preciso encontrar um frontend que permita o uso do sdlmame, eu achei este aqui :
http://it.geocities.com/pinguinogoloso/
Ele não é tão sofisticado quando o gxmame, mas ofereçe o básico : uma lista de games com screenshots, favoritos e roda em modo fullscreen tranquilamente. Vamos um passo-a-passo :
7.1) Criar um diretório ’sdlanza’ dentro do diretório principal do sdlmame e faça o download :
mkdir sdllanza
cd sdllanza
wget -vc http://it.geocities.com/pinguinogoloso/sdlanza.zip
unzip sdlanza.zip
7.2) Configure o frontend com o comando :
chmod +x INSTALL
./INSTALL
Responda corretamente as perguntas :
Enter the name of the execuble file for the XMAME program: [None=>DEMO mode] :
R: /opt/sdlmame/mamepm
Enter the directory where you have the roms of your MAME games :
R: Digite o local onde fica suas roms, como /opt/sdlmame/roms
7.3) Edite o o arquivo lanzamame.cfg e a quarta linha (atenção: exatamente a quarta linha) para suprimir suas necessidades de opções na linha de comando, tal como :
-video opengl -joystick -rompath /opt/sdlmame/roms -samplepath /opt/sdlmame/samples/ -inipath /opt/sdlmame/ini -cfg_directory /opt/sdlmame/cfg -nvram_directory /opt/sdlmame/nvram -memcard_directory /opt/sdlmame/memcard -input_directory /opt/sdlmame/inp -state_directory /opt/sdlmame/sta -artpath /opt/sdlmame/artwork -snapshot_directory /opt/sdlmame/snap -diff_directory /opt/sdlmame/diff -ctrlrpath /opt/sdlmame/ctrlr -cheat_file /opt/sdlmame/cheat.dat -cheat
Se voce tiver as roms, snapshots, cheat,… em outros locais então a linha acima deverá refletir exatamente essas mudanças, isso ocorrer por exemplo se voce tem um sistema com dual-boot onde a partição windows é a que abriga as roms.
7.5) Voce precisará copiar os screenshots dos games para /opt/sdlmame/sdlanza/images, os screenshots voce já sabe são as fotos de cada jogo, voce os encontra facilmente através do google inclusive um .zip com todos eles. Uma dificuldade que tive foi que o ’sdlanza’ só exibe os screenshots no formato .gif e normalmente os encontramos no formato .png, eu baixei todos os .png no diretório images e a seguir executei o comando :
mogrify -format gif *.png
E todos os *.png foram convertidos para GIF.
8) Criação dum pacote .deb :
A compilação gerará os binários que necessitamos como chdman, file2str, jedutil e o mais importante de todos : “mamepm” que é o sdlmame propriamente dito.
Sou um pouco exigente com programas que não possuem pacotes .deb, recuso-me a instalar a maioria deles num sistema desktop, mas no caso de jogos e emuladores é preciso abrir uma excessão, mas como abrir uma excessão se quem esta a fim de jogar vai entender lhufas de compilação ? Neste caso nem adianta o jogo ser opensource porque devido a dificuldade provavelmente este jogo nunca será instalado. Os repositórios do Ubuntu podem ajudar muito nessa necessidade, assim como os repositório de terceiros com muitos outros games, mas o legal mesmo é voce compartilhar aqueles que voce já possui no seu computador, afinal são opensource, não são ? :). Mas e aqueles jogos que não possuem um pacote .deb ?
Na maioria deles o “checkinstall” no lugar do “make install” vai resolver, porém há alguns programas que não possuem o processo de “make install”, alias nem mesmo o “./configure” existe. Quando isso ocorrer voce vai perceber que não será mais possivel usar o simples “checkinstall”. Sim, isso é triste e as regras de empacotamento do Debian é um pouco complexo (embora mais simples do que criar um .rpm) para um usuário comum, o que por sua vez impossibilita a maioria de entusiastas de criar seus próprios pacotes. Voce poderia empacotar alguns, mas convenhamos não é tão fácil assim. Para suprir essa lacuna, eu tive acesso à alguns documentos na internet que me permitiram criar um script um pouco genérico que facilitará o empacotamento desses tipos de programas. Parte dessa documentação está aqui :
Com ajuda de outros colegas e documentação farta, conseguí há um certo tempo atrás concluír um script que me permitiu empacotar qualquer diretório. Esse script era um hobby para mim e sempre dei pouca importancia a ele, mas para empacotar o “SDLMame” vou precisar dele e usa-lo como oportunidade para compartilhar com quem estiver lendo este texto, claro que antes passei ele por uma revisão e espero que gostem. Repetindo, a idéia desse script é criar um .deb a partir de qualquer pasta ou programa
, no caso de programas ele é muito útil especialmente quando não há um “make install” onde seria muito melhor o “checkinstall”, notorialmente jogos compilados são os mais comuns.
Faça o download desse script, gravando-o no diretório principal do seu sistema :
Renomei-o para criar_pacote_deb.sh e dê permissão de execução :
mv criar_pacote_sdlmame_deb.sh.txt criar_pacote_sdlmame_deb.sh
chmod +x criar_pacote_sdlmame_deb.sh
Ele já está editado com as informações necessárias para a criação dum .deb para sdlmame, porém facilmente voce adaptará para qualquer outro programa .
9) Antes de rodar o script, uma advertência : rode-o a partir do diretório onde esteja o programa compilado com os binários e pastas necessárias. Também tenha certeza de já ter feito o “make” antes e a compilação tenha dado certo. E lá vamos nós :
sudo ./criar_pacote_sdlmame_deb.sh
Se erros surgirem, tente debulhar o que está acontecendo rodando-o dessa forma :
sudo bash -x ./criar_pacote_sdlmame_deb.sh
No final, a seguinte mensagem surgirá :
**********************************************************************
[sucesso] Pacote criado com sucesso.
Para instalar :
sudo dpkg -i …/sdlmame-0.110.deb
Para remover :
sudo apt-get -y –purge remove sdlmame
fim.
**********************************************************************
Pronto ! Siga as instruções acima para criar o pacote ou remove-lo a seu bel-prazer e sobretudo : compartilhe!
Se alguem tiver idéias de como melhorar o script, faça e eu atualizarei-o.
Conclusões Finais :
- Estamos falando de software livre, então com o .deb criado, compartilhe !
- Visite a página do sdlmame porque com frequencia há atualizações sincronizadas com o Mame, e em todas as vezes que fizer essas atualizações re-edite o script que criei e atualize nele informações como o número da versão nova. O script é de fácil legibilidade, fique tranquilo.

