Criando um pacote DEB manualmente

Este é um tutorial destinado as pessoas que desejam criar seu próprio pacote DEB e não encontram um material simples para elucidar esta tarefa.

[ Hits: 187.973 ]

Por: Rafael Brianezi da Silva em 08/08/2007


Entendendo o arquivo de controle (control)



Passo 4 - O arquivo de controle chamado "control" é de extrema importância para cada pacote deb, pois este traz informações como: nome do pacote, versão do pacote, nome do mantenedor, dependências relacionadas, descrições sobre a finalidade, entre muitas outras características.

Devido à grande importância deste arquivo, vou descrever rapidamente abaixo alguns dos campos que você poderá encontrar ao abrí-lo.

Package: (Obrigatório) - Este campo descreve o nome do pacote binário. O nome do pacote deve ser composto somente por letras minúsculas (a-z), dígitos (0-9), sinais de mais (+) e menos (-), e pontos (.). Deve ser formado por pelo menos dois caracteres e deve começar com um caráter alfanumérico.

Source: Especifica o nome do pacote fonte, mas este campo pode ser omitido de um arquivo de controle do pacote quando o pacote da fonte tem o mesmo nome e versão que o pacote binário.

Version: (Obrigatório) - Neste campo você obrigatoriamente deverá inserir a versão do pacote o qual você esta criando.

Section: (Recomendado) - Este campo especifica uma área de aplicação em que o pacote foi classificado.

Architecture: (Obrigatório) - Especifica a lista arquitetura(s) para a qual, o pacote é destinado. Exemplo de arquiteturas:

i386 ia64 alpha amd64 armeb arm hppa m32r m68k mips mipsel powerpc ppc64 s390 s390x sh3 sh3eb sh4 sh4eb sparc darwin-i386 darwin-ia64 darwin-alpha darwin-amd64 darwin-armeb darwin-arm darwin-hppa darwin-m32r darwin-m68k darwin-mips darwin-mipsel darwin-powerpc darwin-ppc64 darwin-s390 darwin-s390x darwin-sh3 darwin-sh3eb darwin-sh4 darwin-sh4eb darwin-sparc freebsd-i386 freebsd-ia64 freebsd-alpha freebsd-amd64 freebsd-armeb freebsd-arm freebsd-hppa freebsd-m32r freebsd-m68k freebsd-mips freebsd-mipsel freebsd-powerpc freebsd-ppc64 freebsd-s390 freebsd-s390x freebsd-sh3 freebsd-sh3eb freebsd-sh4 freebsd-sh4eb freebsd-sparc kfreebsd-i386 kfreebsd-ia64 kfreebsd-alpha kfreebsd-amd64 kfreebsd-armeb kfreebsd-arm kfreebsd-hppa kfreebsd-m32r kfreebsd-m68k kfreebsd-mips kfreebsd-mipsel kfreebsd-powerpc kfreebsd-ppc64 kfreebsd-s390 kfreebsd-s390x kfreebsd-sh3 kfreebsd-sh3eb kfreebsd-sh4 kfreebsd-sh4eb kfreebsd-sparc knetbsd-i386 knetbsd-ia64 knetbsd-alpha knetbsd-amd64 knetbsd-armeb knetbsd-arm knetbsd-hppa knetbsd-m32r knetbsd-m68k knetbsd-mips knetbsd-mipsel knetbsd-powerpc knetbsd-ppc64 knetbsd-s390 knetbsd-s390x knetbsd-sh3 knetbsd-sh3eb knetbsd-sh4 knetbsd-sh4eb knetbsd-sparc netbsd-i386 netbsd-ia64 netbsd-alpha netbsd-amd64 netbsd-armeb netbsd-arm netbsd-hppa netbsd-m32r netbsd-m68k netbsd-mips netbsd-mipsel netbsd-powerpc netbsd-ppc64 netbsd-s390 netbsd-s390x netbsd-sh3 netbsd-sh3eb netbsd-sh4 netbsd-sh4eb netbsd-sparc openbsd-i386 openbsd-ia64 openbsd-alpha openbsd-amd64 openbsd-armeb openbsd-arm openbsd-hppa openbsd-m32r openbsd-m68k openbsd-mips openbsd-mipsel openbsd-powerpc openbsd-ppc64 openbsd-s390 openbsd-s390x openbsd-sh3 openbsd-sh3eb openbsd-sh4 openbsd-sh4eb openbsd-sparc hurd-i386 hurd-ia64 hurd-alpha hurd-amd64 hurd-armeb hurd-arm hurd-hppa hurd-m32r hurd-m68k hurd-mips hurd-mipsel hurd-powerpc hurd-ppc64 hurd-s390 hurd-s390x hurd-sh3 hurd-sh3eb hurd-sh4 hurd-sh4eb hurd-sparc

Depends: Campo onde são declaradas todas as dependências necessárias para se fazer à instalação do pacote. O pacote não será configurado a menos que todos os pacotes alistados neste campo sejam configurados corretamente.

Installed-Size: Descreve a quantidade total de espaço em disco requerida para instalar o pacote nomeado. O espaço em disco é representado em kilobytes como número decimal simples.

Maintainer: (Obrigatório) - Contém o nome e/ou email do mantenedor do pacote.

Description: (Obrigatório) - Contém a descrição do pacote.

Página anterior     Próxima página

Páginas do artigo
   1. Criando passo-a-passo um pacote DEB
   2. Entendendo o arquivo de controle (control)
   3. Criando um arquivo de controle (control)
   4. Criando a estrutura de diretórios do pacote
   5. Criando o pacote DEB
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

dstat - Ferramenta de Monitoramento no Linux

Linux - Qual a dificuldade de usar?

Procurando software para gerenciar armazenamento... Pensou FreeNAS!

Como criar apresentações Flash usando o vnc2swf

Programação (II) - Modularização

  
Comentários
[1] Comentário enviado por scoob em 08/08/2007 - 07:13h

Só tenho uma palavra para definir seu trabalho:

"Qualidade"

Parabéns!!!

[2] Comentário enviado por tjpp em 08/08/2007 - 09:03h

?comentario=

No final da página 4 tem um erro: se o script-raf existir e for referenciado por outro pacote, ele não será gravado: o dpkg retornará erro, se não for usado o --force-overwrite (você teria que acrescentar o Replaces: no control).

Outro ponto importante é que você não tocou no problema de como explicitar as dependências. Eu achei o tutorial bem legal, mas pacotes criados com ele podem quebrar o sistema ou mesmo não funcionar (já que a dependência não foi instalada). O exemplo que você deu, exceto pelo que eu citei no primeiro parágrafo) vai funcionar, mas pacotes binários, ou para o X, podem dar problemas.

[]s

[3] Comentário enviado por tenchi em 08/08/2007 - 10:22h

Legal.
Uma dica para quem não quer criar toda a a árvore de diretórios na mão é o uso da opção DESTDIR= ou PREFIX=, nos programas que usam o autoconf e o cmake.
como em:
$ make install DESTDIR=/tmp/pacote

Se não funcionar, tente
$ make install PREFIX=/tmp/pacote

Fico com uma certa raiva quando nenhum destes funcionam, pois acho que não custa nada o desenvolvedor utilizar uma ferramenta padrão (autotools ou cmake) para facilitar o manuseio do código-fonte do seu programa. Aí tem uns que inventam e criam uns scripts que ninguém entende...
Boa dica mesmo. Usei o ubuntu durante uma época, e precisei muito de um tuto assim, mas não achei. O problema é que nem o próprio checkinstall, que cria um pacote um tanto quanto grosseiro, não é capaz de criar um pacote deb com todos os recursos, ou a maioria destes.

Bom texto.

[4] Comentário enviado por removido em 08/08/2007 - 11:26h

Muito bom amigo!
Parabéns!

[5] Comentário enviado por Felipe16 em 08/08/2007 - 11:31h

Muito legal. Há tempos que eu queria saber como se faz pacote .de
vlws pelo artigo

[6] Comentário enviado por TSM em 08/08/2007 - 20:08h

Legal seu artigo, muito bom.


[7] Comentário enviado por edirlf em 08/08/2007 - 23:28h

Muito massa esse artigo. Da minha parte, parabéns!!!
Ficou 10.

[8] Comentário enviado por mbsalgueiro em 13/08/2007 - 21:39h

Show seu tuto cara!!! parabens!!!!!!!
precisamos de mais como esse!!!

[9] Comentário enviado por Tilzao em 02/10/2007 - 13:18h

Show de Bola ! Me ajudou um montão !!!
Valeu !

[10] Comentário enviado por gabrielsp em 23/10/2007 - 15:47h

Parabéns! Muito bom! =D

[11] Comentário enviado por borisam em 22/09/2008 - 19:49h

Legal, estava procurando um tutorial assim, simples e prativo para começar.

Obrigado.

[12] Comentário enviado por Journeyman em 29/01/2009 - 16:57h

Muito boa.

Só um complemento que me foi muito útil.

Dentro da pasta DEBIAN da pra colocar, além do control mais alguns arquivos para função especificas

preinst - shell script para ser executado antes da cópia dos arquivos
postinst - shell script para ser executado DEPOIS da cópia dos arquivos
prerm - shell script para ser executado antes da remoção do pacote
postrm - shell script para ser executado DEPOIS da remoção do pacote

Todos tem que ter chmod +x (permissão de execução)

Abraços.

[13] Comentário enviado por hugutux em 11/08/2009 - 14:46h


Legal seu artigo, muito bom.

[14] Comentário enviado por chmod000 em 18/09/2009 - 16:32h

Parabéns pelo artigo! Realmente muito bom.

Aliás, é um dos primeiros artigos que sigo do início ao fim sem ter problemas.... uahuahuah já até criei meu .deb

Preciso só de mais umas dicas.

1) Como faço para instalar no menu do gnome, a partir do .deb gerado, um inicializador para o programa que criei?

2) Tem alguma forma de automatizar a instalação das dependências, ou isso só o apt faz?

Vou continuar pesquisando aqui, mas se você puder postar a resposta eu agradeço.

[]'s

[15] Comentário enviado por chmod000 em 18/09/2009 - 16:52h

uauhauhauau


Eu perguntei, e eu mesmo respondo...

É tudo na estrutura de diretórios! Com direito a ícone e tudo mais... (só falta a documentação)

Valeu raf-tiger!!!!!


--------------------------------------------8><--------------------------------------
$ ls -lhR twittator-package/
twittator-package/:
total 12K
drwxr-xr-x 2 feijo feijo 4,0K 2009-09-18 16:19 DEBIAN
drwxr-xr-x 3 feijo feijo 4,0K 2009-09-17 22:28 etc
drwxr-xr-x 4 feijo feijo 4,0K 2009-09-18 16:36 usr

twittator-package/DEBIAN:
total 12K
-rw-r--r-- 1 root root 317 2009-09-18 16:19 control
-rwxr-xr-x 1 root root 185 2009-09-18 16:17 postinst
-rwxr-xr-x 1 root root 160 2009-09-18 16:17 postrm

twittator-package/etc:
total 4,0K
drwxr-xr-x 3 feijo feijo 4,0K 2009-09-17 22:28 xdg

twittator-package/etc/xdg:
total 4,0K
drwxr-xr-x 2 feijo feijo 4,0K 2009-09-17 22:28 autostart

twittator-package/etc/xdg/autostart:
total 4,0K
-rw-r--r-- 1 feijo feijo 334 2009-09-17 22:28 twittator.desktop

twittator-package/usr:
total 8,0K
drwxr-xr-x 2 feijo feijo 4,0K 2009-09-17 21:14 bin
drwxr-xr-x 5 root root 4,0K 2009-09-18 16:45 share

twittator-package/usr/bin:
total 4,0K
-rwxr-xr-x 1 root root 1,8K 2009-09-18 10:57 twittator.sh

twittator-package/usr/share:
total 12K
drwxr-xr-x 2 root root 4,0K 2009-09-18 16:46 applications
drwxr-xr-x 2 root root 4,0K 2009-09-18 16:41 menu
drwxr-xr-x 2 root root 4,0K 2009-09-18 16:41 pixmaps

twittator-package/usr/share/applications:
total 4,0K
-rw-r--r-- 1 root root 160 2009-09-18 16:46 twittator.desktop

twittator-package/usr/share/menu:
total 4,0K
-rw-r--r-- 1 root root 188 2009-09-18 16:41 twittator

twittator-package/usr/share/pixmaps:
total 8,0K
-rw-r--r-- 1 feijo feijo 6,9K 2009-09-18 16:40 twittator.xpm

[16] Comentário enviado por brunojti em 23/09/2009 - 17:10h

Cara, ótimo tutorial.
Eu consegui fazer um .deb pro "DBDesigner" perfeitamente...
porém a instalação do DBDesigner exige que uma biblioteca seja instalada antes, e um arquivo precisa ser executado...
existe uma maneira em que eu consiga automatizar todo o processo pelo .deb?

desde já agradeço!
abraços

[17] Comentário enviado por removido em 19/10/2009 - 23:39h

Muito Bom.
Continue Assim.

[18] Comentário enviado por removido em 07/11/2009 - 09:06h

Excelente artigo,parabéns.

[19] Comentário enviado por yermandu em 19/03/2010 - 21:23h

Ta massa o artigo, falando nisso ja vou preparar a receita

[20] Comentário enviado por anderson1277 em 23/05/2010 - 19:33h

Vlw pelo tuto cara

[21] Comentário enviado por CotidianoLinux em 15/08/2010 - 16:49h

Sou um novato no mundo #Linux, estou usando o Ubuntu 10.04 e estava tentando criar um pacote .deb para um shell script que eu adaptei, o intuito dele é randomizar os papéis de parede. Estou usando .sh juntamente com zenity e estava querendo fazer um pequeno pacote de instalação para divulgar o script para a comunidade Linux. Achei muito bom o seu tutorial, deu pra entender como criar um pacote Debian facilmente. Vlw

Nick Lima

[22] Comentário enviado por onjahyr em 07/12/2010 - 20:07h

Ressucitando o tópico, alguém saberia como faço para criar o link no menu do Gnome (Ubuntu 10.10) para, ao clicar, seja solicitado a senha de root e em seguida abrir meu programa, bem como um ícone para este link? Meu programa configura o Grub e é necessário executar como root.

Agradeço a ajuda.

[23] Comentário enviado por fs.schmidt em 21/05/2011 - 00:09h

Parabéns pelo artigo !! Muito bem explicado e me ajudou bastante. VivaoLinux é uma grande comunidade graças a usuários como você.


[24] Comentário enviado por gudrade em 26/06/2011 - 15:13h

Parabéns pelo ótimo artigo! Irá me ajudar muito.

[25] Comentário enviado por user_debian em 19/03/2013 - 17:07h

Como faz para criar o atalho no menu após a instalação do pacote?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts