Eu quero criar um arquivo DEB manualmente. Gostaria apenas de fornecer uma pasta que contenha dados a serem instalados e um script a ser executado após a instalação.
Isso é possível?
Eu quero criar um arquivo DEB manualmente. Gostaria apenas de fornecer uma pasta que contenha dados a serem instalados e um script a ser executado após a instalação.
Isso é possível?
Respostas:
Minha recomendação é fazer um pacote de origem. Instale o build-essential , debhelper , dh-make . Mude para o diretório em que os arquivos que você deseja instalar estão (o nome do diretório deve estar no formato $PACKAGE-$VERSION
, por exemplo, myapp-4.2-1
para sua primeira tentativa de empacotar o Myapp V4.2) e execute dh_make --createorig
. Responda às perguntas. O Debhelper criará a infraestrutura básica necessária para criar um pacote gerando arquivos em um subdiretório chamado debian
, alguns arquivos obrigatórios e modelos para arquivos opcionais. Pode ser necessário modificar alguns desses arquivos:
debian/rules
para criar o que precisa para criar e instalar os arquivos no lugar certo. Se você apenas precisar copiar alguns arquivos e não compilar coisas, edite o arquivo debian/install
para especificar quais arquivos precisam ser instalados onde.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).debian/changelog
para remover a referência a um ITP (isso é relevante apenas se você estiver trabalhando no projeto Debian). Renomeie debian/postinst.ex
para debian/postinst
e adicione seus comandos de pós-instalação lá. Se você atualizar seu pacote posteriormente, execute debchange -i
para adicionar uma entrada no changelog ou edite o arquivo no Emacs (com o dpkg-dev-el instalado).Execute dpkg-buildpackage -rfakeroot -us -uc
para criar o .deb
pacote (remova -us -uc
se desejar assinar o pacote com sua chave PGP).
Se você decidir criar um pacote binário diretamente sem construí-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 dos pacotes deb. Está descrito no Manual de Políticas Debian , em particular ch. 3 (formato de pacotes binários) , cap. 5 (arquivos de controle) , cap. 6 (scripts de instalação) e apêndice B (manipulação de pacote binário) .
Você se certifica de que seu 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 registro de alterações do pacote deb). Você não precisa disso se quiser usar o pacote internamente, mas é melhor tê-lo.
Se você possui as ferramentas 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
Se você não possui as ferramentas Debian, construa um arquivo dos arquivos que deseja empacotar data.tar.gz
, um arquivo separado dos arquivos de controle chamados 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ário.
O script a ser executado após a instalação é chamado postinst
. Certifique-se de torná-lo executável. Vai ao lado control
.
Se você já possui um pacote binário de outra distribuição, pode usar alien para convertê-lo.
dch -i
.
ar
fazendo isso tar
não é?
dh_make --createorig
usados, é necessário export DEBEMAIL="me@example.com"
e export DEBFULLNAME="Firstname Lastname"
antecipadamente.
Primeiro, você precisa criar uma pasta de compilação e um arquivo morto de seus arquivos: tar czvf data.tar.gz files
Em seguida, na pasta de construçã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 <xxx@xxx.xx>
Description: This is optional, but creates warnings if left out
Em seguida, você pode adicionar scripts shell pré-instalar, pré-imprimir, prerm e postrm independentemente para controlar o comportamento de pré e pós-instalação e pré e pós-remoção do arquivo .deb e, em seguida, criar o arquivo de controle com o tar: tar czvf control.tar.gz control preinst postinst prerm postrm
Então você precisa de um arquivo debian-binária: 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
pacote para criar o arquivo .deb:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
poderia valer a pena sublinhar a ordem é importante: o controle deve vir antes de dados.
Eu faço muitos pacotes, e fazer um pacote completo não é uma questão trivial. Em uma nota positiva, arquivos e scripts são muito menos trabalhosos. Você pode criar esse pacote, de maneira muito simples, com uma ferramenta conhecida como debreate .
Debreate é uma GUI realmente simples, apenas para criar pacotes DEB simples. Você pode apenas especificar quais arquivos, para onde eles vão e se / o que deve ser executado na pós / pré-instalação / desinstalação. Eu costumava fazer todos os meus pacotes da maneira padrão, mas depois que comecei a usar essa ferramenta, voltarei apenas quando necessário.
Veja a Wiki Debian sobre Empacotamento , talvez equivs
(veja o link) já satisfaça seus requisitos.
A página da Wikipedia no deb
formato de arquivo também inclui muitos links úteis.
Encontrei isso com o Zimbra 7 no Debian usando seus pacotes Ubuntu. (Sou teimoso, gosto do Debian> bUbuntu, apesar de o Zimbra ter lançado apenas para o Ubuntu.) Não tenho certeza de como trabalhei nisso antes, tenho certeza 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 disponíveis new/
.
Nota : isso estava no aperto - o dpkg no wheezy tem --force-bad-version agora.
Para a criação rápida de pacotes, você pode usar o programa checkinstall. Ele instala o programa, observa as alterações - e cria um pacote deb ou rpm.
$ 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 youremail@site.org -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