Bom, agora que já temos o nosso programa funcionando e instalado, vem a seguinte questão:
“ O que fazer se um amigo meu gostou do meu programa e quer usar no
Linux dele?
Eu quero passar para ele o programa completo, com ícone e tudo mais, o que fazer?”
- Resposta simples: Empacote em um instalador
RPM ou
DEB, e distribua para seus amigos de acordo com o sistema deles,
nesta página vamos criar um RPM.
- O que é um RPM?
Lembra do Windows e os arquivos “setup.exe” que você clica e instala um programa? Sem muitos detalhes, um RPM ou DEB, é um arquivo desse para
o Linux, porém, diferente do Windows, que quase todos tem o mesmo nome “setup.exe”, um instalador no Linux tem o formato
"programa"+"versão"+"arquitetura" - “.deb” ou “.rpm”.
Vamos criar nosso RPM, primeiro, vamos ajustar todos os arquivos usados pelo nosso programa em uma única pasta. Digite no terminal:
mkdir ~/my-program
$ cd ~/my-program
$ mkdir opt
$ cp -r /opt/Ps3 opt/
$ mkdir -p usr/share/applications
$ cp -r /usr/share/applications/Ps3.desktop usr/share/applications/
$ mkdir -p usr/local/bin
$ cp /usr/local/bin/Ps3.sh usr/local/bin/
Muito importante notar, que ao digitar: "mkdir", eu não coloco a barra:
/ na frente do nome da pasta, a mesma
coisa quando estou copiando, porque se eu coloco:
mkdir -p /usr/share
. . .Eu estou tentando construir uma pasta onde já exite outra com o mesmo nome, e não é isso que queremos.
O que queremos é criar uma pasta dentro da pasta “my-program”, por isso não incluímos o
/ no começo.
Agora vamos criar o PostInstall, que vai fazer as tarefas após instalado o programa. Neste caso, estou escrevendo que vai colocar um ícone no desktop
do usuário:
mkdir -p opt/Ps3/bin
$ kwrite opt/Ps3/bin/postinstall.sh
Esse é o código do PostInstall:
Summary: Video converter for PS3 Media
Name: Ps3-video
Version: 1
Release: 0
Group: base
License: GPL
Source: Ps3-video-1-0.tar.gz
BuildRoot: /var/tmp/%{name}-buildroot
Requires: zenity => 2.32.1-3, mencoder => 4.4.1-0, lame => 3.98-2, festival => 1.96-1, sox => 14.3.0-5, libxvidcore4 => 1.2.2-0
%description
The GNU Ps3-video convert most kind of videos into a avi file playable on PS3 console, using the xvid and mp3 codecs.
%prep
%setup -q
%build
%install
cp -rvf $RPM_BUILD_DIR/Ps3-video-1 $RPM_BUILD_ROOT
%clean
if( [ $RPM_BUILD_ROOT != '/' ] ); then rm -rf $RPM_BUILD_ROOT; fi;
%files
/.
%post
echo "Your program has been installed in /usr/local/bin you may want to copy the /usr/share/applications/Ps3 to your desktop";
/opt/Ps3/bin/postinstall.sh
* Summary é o que vai aparecer, quando a pessoa selecionar o pacote com programas como
Synaptic, eu creio que as outras opções
você já sabe o que são.
* Source é o arquivo que vai conter o código-fonte, o nome deve ser: Nome_programa-versão-lancamento.tar.gz
* Requires seria as dependências do seu programa. Como eu disse no começo, onde apresentei o código do Script, porém, aqui seria mais detalhado
colocando o nome dos programas e a versão.
Como você vai saber a versão correta? Simples: digite no terminal: "apt-cache show programa"
apt-cache show stella
Package: stella
Priority: extra
Section: non-free/otherosfs
Installed-Size: 830
Maintainer: Tom Lear <tom@trap.mtview.ca.us>
Architecture: i386
[fonte vermelha] Version: 1.1-2 [fonte vermelha]
Depends: libc6 (>= 2.1), libstdc++2.10, xlib6g (>= 3.3.5-1)
Filename: dists/potato/non-free/binary-i386/otherosfs/stella_1.1-2.deb
Size: 483430
MD5sum: 11b3e86a41a60fa1c4b334dd96c1d4b5
Description: Atari 2600 Emulator for X windows
Stella is a portable emulator of the old Atari 2600 video-game console
written in C++. You can play most Atari 2600 games with it. The latest
news, code and binaries for Stella can be found at:
http://www4.ncsu.edu/~bwmott/2600
Assim, você deve procurar as dependências. Como no meu exemplo, o meu programa depende do Zenity, MEncoder, Lame, Festival, XVid e Sox.
Outra coisa que você vai notar também, é que no "%post" que é o que será feito depois de instalar. Eu estou chamando o Script
“postinstall.sh”, que vai colocar o ícone no desktop do usuário.
Esta técnica funcionava bem até algumas versões do
KDE, porém, agora com o KDE4, não é certo que em todas as distro isto vai
funcionar.
Também não testei no
Unity, porém no
Gnome e outras WM, funciona direitinho.
Agora, vamos copiar os arquivos do meu programa que salvei anteriormente na pasta “my-program” para a pasta SOURCES dentro de “src/rpm”.
Digite:
cd ~/my-program
$ cp -fr . ~/src/rpm/SOURCES/Ps3-video-1/
$ cd ~/src/rpm/SOURCES
Vale apena lembrar, que você deve colocar um ponto entre "cp -fr" e o caminho "~/src/. . . .", este ponto quer
dizer que você está copiando os arquivos e pasta do local onde você está para a pasta indicada.
Agora, vamos colocar o código-fonte em um Tarball.
tar -cf Ps3-video-1-0.tar Ps3-video-1;
$ gzip Ps3-video-1-0.tar
E finalmente, vamos rodar o comando mágico que vai dar o toque final no nosso programa, digite:
rpmbuild -ba ~/src/rpm/SPECS/Ps3-video-1-0.spec
Agora, vamos fazer o teste final. Como Root, vamos instalar o nosso programa pelo RPM.
Dependendo do seu sistema, seu arquivo pode estar em uma das pastas “iNNN”, dentro de “src/rpm/RPMS/”. No meu caso, como eu tenho um i586,
preciso digitar:
cd /home/mauricio/src/rpm/RPMS/i586
Após encontrar o arquivo RPM, vamos instalar:
sudo rpm -i Ps3-video-1-0.rpm
Depois de instalado perfeitamente, recebemos a mensagem que você colocar no final do seu arquivo “.spec”:
Your program has been installed in /usr/local/bin you may want to copy the /usr/share/applications/Ps3-video to your desktop
Como indicado no texto, copie o ícone dentro de “/usr/share/applications”, para o desktop.
Agora você pode clicar no ícone do programa e ver ele em operação.
Outro detalhe, o seu programa aparece na lista do Synaptic, mostrando que foi instalado com perfeição.