Como criar um arquivo .deb
Este é um tutorial sobre como criar um arquivo .deb básico a partir de um determinado script de amostra. Neste tutorial, primeiro criamos um exemplo de programa no bash que mostra apenas 'OLÁ DO PROGRAMA'. Então criamos um arquivo de controle para o programa para fazer um instalador debian. Finalmente eles são empacotados em um arquivo .deb
.
Etapas:
-
crie um programa de exemplo no bash
mkdir "$HOME/create_deb/pgmdir"
gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
cole o seguinte código nele
#!/bin/bash
echo 'HELLO FROM PROGRAM' | zenity --text-info
-
Tornar o programa executável
chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
-
Crie um arquivo de controle para o pacote debian
Crie um arquivo chamado control
dentro da pasta DEBIAN
mkdir "$HOME"/create_deb/DEBIAN
gedit "$HOME"/create_deb/DEBIAN/control
e cole os detalhes a seguir
Package: hellodeb
Version: 0.1
Architecture: all
Maintainer: totti
Installed-Size: 6
Depends: zenity, bash
Section: testing
Priority: optional
Homepage: http://askubuntu.com
Description: This is my first debian package.
Guided by Totti Torvalds.
In Description new line start with a space.
Você pode editar o conteúdo, se quiser. Leia mais sobre o formato deste arquivo aqui e aqui .
-
Crie o script postinst
, que é executado imediatamente após a instalação do pacote
gedit "$HOME"/create_deb/DEBIAN/postinst
depois, cole
#!/bin/sh
set -e
echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
e torná-lo executável
chmod +x "$HOME/create_deb/DEBIAN/postinst"
-
Crie o script prerm
, que é executado antes da remoção do pacote
#!/bin/sh
set -e
echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
e torná-lo executável
chmod +x "$HOME/create_deb/DEBIAN/prerm"
-
Crie estrutura de pacotes e copie programas, dados, etc.
Crie uma estrutura de seus programas instalados e seus dados. Neste exemplo, colocamos o arquivo em /bin
.
mkdir -p "$HOME"/create_deb/bin
cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
-
Compile o arquivo .deb .
dpkg-deb --build "$HOME"/create_deb .
O .
nomeará automaticamente o arquivo .deb
com a versão, o arco etc. Ou o seu nome personalizado
dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
Ou se você criar o arquivo .deb com
debuild -k'your GPG key here' -S
então você pode enviá-lo para o Ubuntu Launchpad com
dput ppa:<lp-username>/<ppa-name> packet-source.changes
como descrito aqui (fonte: crie um pacote .deb a partir de scripts ou binários )
-
Instale o pacote .deb
recém-criado.
Você pode abri-lo com software-center
, mas pode não permitir a instalação. Então, eu recomendo usar o gerenciador de pacotes gdebi
.
sudo apt-get install gdebi
gdebi "$HOME"/create_deb/hellodeb.deb
Agora você pode instalá-lo. Durante a instalação, você verá um diálogo do gtk
Instalando o programa: zenity_hello.sh ......
-
Após instalar, abra um terminal e digite zenity_hello
. Se o programa estiver instalado corretamente e tudo estiver OK, você verá um diálogo gtk
OLÁ DO PROGRAMA
-
Removendo o pacote
sudo apt-get remove zenity_hello
Publique seu repositório em 2 minutos
Como o OP quer uma forma simples de publicar seus pacotes, estou dando um truque fácil.
requisito: conta dropbox (ou qualquer outro serviço, por ex. github ) com uma pasta pública.
-
Crie uma pasta dentro da sua pasta Public-Dropbox onde você coloca seus arquivos * .deb:
mkdir ~/Dropbox/Public/deb-packages
ou crie essa pasta em outro lugar e coloque um link simbólico em sua pasta Pública:
mkdir ~/deb-packages
cd ~/Dropbox/Public
ln -s ~/deb-packages/ deb-packages
-
Entre nessa pasta e crie um script que, quando executado, cria o Packages.gz, contendo todas as informações necessárias sobre seus pacotes deb.
criar:
gedit import.sh
coloque isso aqui:
#!/bin/bash
dpkg-scanpackages . /dev/null |gzip > Packages.gz
torne-o executável:
chmod x import.sh
-
Copie alguns arquivos * .deb para a pasta. Pode ser o seu próprio ou algum que não esteja disponível através de outros repositórios. Então vá para a pasta e execute o script que colocamos lá:
cd ~/deb-packages/
./import.sh
Isso deve criar o chamado arquivo Packages.gz , que o apt procura saber quais pacotes estão localizados neste repositório.
É isso
Agora, aguarde até que o Dropbox sincronize a pasta e pegue o URL público do Packages.gz
. Deve ser algo como isto:
http://dl.getdropbox.../Packages.gz
Livre-se do final desse link, coloque mais algumas palavras e agora você pode usar e preencher a seguinte linha para o sources.list:
deb http://dl.getdropbox.../deb-packages ./
É isso que você tem seu próprio repositório deb em execução. Sempre sincronizado localmente, mas disponível para qualquer pessoa, a qualquer hora, em qualquer lugar.
NOTA: dpkg-scanpackages
está disponível em dpkg-dev
referência