Como criar um arquivo DEB manualmente?

42

Eu quero criar um arquivo DEB manualmente. Eu gostaria apenas de fornecer uma pasta que contenha dados para instalar, e um script para ser executado após a instalação.

Isso é possível?

    
por daisy 29.01.2012 / 11:09

7 respostas

53

Criando um pacote de origem

Minha recomendação é criar um pacote fonte. Instalar o build-essential , debhelper , dh-make . Altere para o diretório em que os arquivos que você deseja instalar são (o nome do diretório deve estar no formato $PACKAGE-$VERSION , por exemplo, myapp-4.2-1 para sua primeira tentativa de empacotamento do Myapp V4.2) e execute dh_make --createorig . Responda às perguntas. O Debhelper criará a infraestrutura básica necessária para construir um pacote, gerando arquivos em um subdiretório chamado debian , ambos alguns arquivos e modelos obrigatórios para arquivos opcionais. Você pode precisar modificar alguns desses arquivos:

  • Edite debian/rules para criar o que precisa ser construído e instalado os arquivos no lugar certo. Se você só precisa copiar alguns arquivos e não compilar, basta editar o arquivo debian/install para especificar quais arquivos precisam ser instalados onde.
  • Editar debian/copyright para adicionar informações de licença sobre o seu pacote e informações sobre onde obter a versão mais recente (se relevante).
  • Editar debian/changelog para remover a referência a um ITP (isso só é relevante se você estiver trabalhando para o projeto Debian). Renomeie debian/postinst.ex para debian/postinst e adicione sua pós-instalação comandos lá. Se você atualizar seu pacote mais tarde, execute debchange -i para adicionar uma entrada de changelog ou editar o arquivo no Emacs (com dpkg-dev- el instalado).

Execute dpkg-buildpackage -rfakeroot -us -uc para criar o pacote .deb (remova -us -uc se desejar assinar o pacote com sua chave PGP).

Criando um pacote binário diretamente

Se você decidir criar um pacote binário diretamente sem criá-lo a partir de um pacote fonte, o que não é realmente mais fácil porque não há tantas ferramentas para facilitar o processo, você precisará de alguma familiaridade básica com o formato deb pacotes. É descrito no Manual de Políticas Debian , em particular ch. 3 (formato dos pacotes binários) , ch. 5 (arquivos de controle) , ch. 6 (scripts de instalação) e apêndice B (manipulação de pacotes binários) .

Você garante que o pacote instale os arquivos esperados /usr/share/doc/copyright (contendo a licença do conteúdo do pacote, bem como onde encontrar a versão mais recente do pacote) e /usr/share/doc/changelog.Debian.gz (contendo o log de alterações do pacote deb ). Você não precisa disso se só usar o pacote internamente, mas é melhor tê-los.

No Debian e derivados

Se você tiver as ferramentas do Debian disponíveis, use dpkg-deb para construir o pacote. No diretório que contém os dados a serem instalados, adicione um diretório chamado DEBIAN no nível superior, contendo os arquivos de controle e os scripts do mantenedor.

$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42

O caminho mais difícil

Se você não tiver as ferramentas do Debian, construa um arquivo dos arquivos que você deseja empacotar chamado data.tar.gz , um arquivo separado dos arquivos de controle chamado control.tar.gz (sem subdiretórios) e um arquivo de texto chamado debian-binary e contendo o texto 2.0 .

cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz

Você precisa de pelo menos um arquivo de controle com os campos Package , Maintainer , Priority , Architecture , Installed-Size , Version e qualquer declaração de dependência necessária.

O script a ser executado após a instalação é chamado de postinst . Certifique-se de torná-lo executável. Vai ao lado de control .

Convertendo um pacote binário de um formato diferente

Se você já tem um pacote binário de outra distribuição, você pode usar o estrangeiro para convertê-lo.

    
por 31.01.2012 / 01:45
7

Primeiro, você precisa criar uma pasta de compilação e um arquivo de seus arquivos: tar czvf data.tar.gz files

Em seguida, na pasta de criação, você deve criar um arquivo de controle com algumas informações desejadas:

 Package: xxxxxx
 Version: 0.0.1
 Section: user/hidden 
 Priority: optional
 Architecture: armel
 Installed-Size: 'du -ks usr|cut -f 1'
 Maintainer: Your Name <[email protected]>
 Description: This is optional, but creates warnings if left out

Depois, você pode adicionar scripts de shell preinst, postint, prerm e postrm independentemente para controlar pré e pós-instalação e pré e pós remover o comportamento do arquivo .deb e, em seguida, criar o arquivo de controle com tar: tar czvf control.tar.gz control preinst postinst prerm postrm

Então você precisa de um arquivo debian-binary: echo 2.0 > debian-binary . Na sua pasta de construção, você deve ter agora esses arquivos: debian-binary control.tar.gz e data.tar.gz .

Finalmente, você precisa do ar package para criar o arquivo .deb: ar -r xxx.deb debian-binary control.tar.gz data.tar.gz

    
por 29.01.2012 / 19:42
3

Eu faço muitos pacotes, e fazer um completo não é um assunto trivial. Em uma nota positiva, arquivos e scripts são muito menos trabalhosos. Você pode criar um pacote desse tipo, muito simplesmente, com uma ferramenta conhecida como debreate .

O Debreate é uma GUI realmente simples, por apenas criar pacotes DEB simples. Você pode apenas especificar quais arquivos, para onde vão e se / o que deve ser executado em post / pre install / uninstall. Eu costumava fazer todos os meus pacotes da maneira padrão, mas depois que comecei a usar essa ferramenta, só voltaria quando necessário.

    
por 31.01.2012 / 02:08
2

Veja o Wiki Debian on Packaging , talvez equivs (ver link) já satisfaça suas necessidades.

A página da Wikipedia no formato de arquivo deb também inclui muitos links úteis.

    
por 29.01.2012 / 11:25
1

Corri para isso com o Zimbra 7 no Debian usando seus pacotes do Ubuntu. (Eu sou teimoso, eu gosto do Debian > bUbuntu apesar do Zimbra liberar apenas para o Ubuntu.) Não tenho certeza de como eu trabalhei com isso antes, estou certo de que não precisei fazer isso quando o instalei anteriormente!

mkdir new
for i in *.deb
 do echo 'date': working on $i
 ar x $i
 cd control
 rm * 2> /dev/null
 tar -xzpvf ../control.tar.gz
 tr "_" "-" < control > control2
 mv -v control2 control
 tar -czpvf ../control.tar.gz .
 cd ..
 ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control

Todos os seus novos arquivos .deb estarão em new/ .

Nota : isto foi no squeeze - o dpkg no wheezy tem o --force-bad-version agora.

    
por 11.09.2014 / 01:31
1

Para a criação rápida de pacotes, você pode programar o checkinstall do usuário. Ele faz uma instalação do programa, assiste a mudanças - e cria um pacote deb ou rpm dele.

    
por 01.02.2015 / 20:44
-4
$ apt-get install build-essential dh-make debhelper devscripts
$ wget http://nmap.org/dist/nmap-LAST.tar.bz2
$ tar xf nmap-LAST.tar.bz2
$ cd nmap-LAST
$ dh_make -s -e [email protected] -f ../nmap-LAST.tar.bz2
$ apt-get install libgtk2.0-dev flex bison libpcap0.8-dev \
  libpcre3-dev binutils-dev python-all-dev
$ dpkg-buildpackage
    
por 01.02.2012 / 07:46

Tags