dpkg
e o apt
para acreditarem que algum pacote está instalado mesmo que em realidade seja apenas um shell vazio. Isto permite satisfazer dependências num pacote quando o programa correspondente foi instalado fora do escopo do sistema de pacotes. Este método funciona, porém deve mesmo assim ser evitado sempre que possível, já que não garantias de que o programa instalado manualmente se comportará exatamente como o pacote correspondente faria e outros pacotes dependentes dele poderiam não funcionar corretamente.
equivs-control
e equivs-build
(do pacote equivs package). O comando equivs-control arquivo
cria um arquivo de cabeçalho de pacotes Debian que deve ser editado para conter o nome do pacote desejado, seu número de versão, o nome do mantenedor, suas dependências e sua descrição. Outros campos, sem um valor padrão são opcionais e podem ser excluídos. Os campos Copyright
, Changelog
, Readme
e Extra-Files
não são campos padrões nos pacotes Debian; eles só fazem sentido no âmbito da equivs-build
, e eles não serão mantidos nos cabeçalhos do pacote gerados.
Exemplo 15.2. Cabeçalho do pacote falso libxml-libxml-perl
Section: perl Priority: optional Standards-Version: 3.8.4 Package: libxml-libxml-perl Version: 1.57-1 Maintainer: Raphael Hertzog <hertzog@debian.org> Depends: libxml2 (>= 2.6.6) Architecture: all Description: Fake package - module manually installed in site_perl This is a fake package to let the packaging system believe that this Debian package is installed. . In fact, the package is not installed since a newer version of the module has been manually compiled & installed in the site_perl directory.
equivs-build arquivo
. Voilà: o pacote foi criado no diretório atual e pode ser manejado como qualquer outro pacote Debian seria.
falcot-data-1.0
que conterá o pacote fonte. O pacote irá logicamente, ser chamado falcot-data
e terá o número de versão 1.0
. O administrador então coloca os documentos em um subdiretório data
. Então ele chama o comando dh_make
(do pacote dh-make) para adicionar os arquivos necessários para o processo de criação do pacote, o qual será armazenado em um subdiretório debian
:
$
cd falcot-data-1.0
$
dh_make --native
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch or cdbs? [s/i/m/l/k/n/b]
i
Maintainer name : Raphael Hertzog Email-Address : hertzog@debian.org Date : Mon, 11 Apr 2011 15:11:36 +0200 Package Name : falcot-data Version : 1.0 License : blank Usind dpatch : no Type of Package : Independent Hit <enter> to confirm: Currently there is no top level Makefile. This may require additional tuning. Done. Please edit the files in the debian/ subdirectory now. You should also check that the falcot-data Makefiles install into $DESTDIR and not in / . $
Arquitetura: qualquer
). binário Indep atua como contraparte, e leva a um único pacote binário que não é dependente da arquitetura alvo ( Arquiitetura: Todas
). Neste caso, a escolha último é mais relevante uma vez que o pacote contém apenas os documentos e não programas binários, para que possa ser usado de forma semelhante em computadores de todas arquitecturas.
dh_make
criou uma pasta debian
com muitos arquivos. Alguns são necessários, em particular rules
, control
, changelog
e copyright
. Arquivos com extensão ex
são exemplos de arquivos que podem ser utilizados, modificando-os (e removendo a extensão), se for o caso. Quando eles não são necessários, entao é recomendado removê-los. O arquivo compat
deve ser mantido, uma vez que é necessário para o funcionamento correto do conjunto de programas debhelper (todos começando com o prefixo dh_
) utilizado em diferentes estágios do pacote do processo de construção.
direitos autorais
deve conter informações sobre os autores dos documentos incluídos no pacote, e as licenças relacionadas. No nosso caso, estes são documentos internos e sua utilização é limitada para dentro da empresa Corp Falcot. O padrão changelog
é geralmente apropriado; substituir o "lançamento inicial" com uma explicação mais detalhada e alterar da distribuição instável
para interna
é suficiente . O arquivo de controle
também foi atualizado: a seção foi alterada para variada e a página inicial
, os campos Vcs-Git
e Vcs-Browser
foram removidos. O campo Dependencia
foi completado com iceweasel | www-browser
, de modo a assegurar a disponibilidade de um navegador web capaz de exibir os documentos no pacote.
Exemplo 15.3. O arquivo control
Source: falcot-data Section: misc Priority: optional Maintainer: Raphael Hertzog <hertzog@debian.org> Build-Depends: debhelper (>= 7.0.50~) Standards-Version: 3.8.4 Package: falcot-data Architecture: all Depends: iceweasel | www-browser, ${misc:Depends} Description: Internal Falcot Corp Documentation This package provides several documents describing the internal structure at Falcot Corp. This includes: - organization diagram - contacts for each department. . These documents MUST NOT leave the company. Their use is INTERNAL ONLY.
Exemplo 15.4. O arquivo changelog
falcot-data (1.0) internal; urgency=low * Initial Release. * Let's start with few documents: - internal company structure; - contacts for each department. -- Raphael Hertzog <hertzog@debian.org> Mon, 11 Apr 2011 20:46:33 +0200
Exemplo 15.5. O arquivo copyright
This work was packaged for Debian by Raphael Hertzog <hertzog@debian.org> on Mon, 11 Apr 2011 20:46:33 +0200 Copyright: Copyright (C) 2004-2011 Falcot Corp License: All rights reserved.
rules
geralmente contém um conjunto de regras usado para configurar, construir e instalar o software em um subdiretório específico (nomeado após a geração do pacote binário). O conteúdo desta pasta é depois arquivado dentro do pacote Debian, como se fosse a raiz do sistema de arquivos. No nosso caso, os arquivos serão instalados na pasta debian/falcot-data/usr/share/falcot-data/
, para que a instalação do pacote gerado irá implantar os arquivos em /usr/share/falcot-data/
. O arquivo rules
é utilizado como um Makefile
, com alguns objetivos padrões (incluindoclean
e binary
, utilizados, respectivamente, para limpar a pasta de origem e gerar o pacote binário).
debhelper
. Tal é o cado dos arquivos gerados pelo dh_make
. Para instalar nossos arquivos, nós simplesmente configuramos o comportamento do comando dh_install
criando o seguinte arquivo debian/falcot-data.install
:
data/* usr/share/falcot-data/
debian/menu.ex
sem sua extensão e editando o seguinte:
Exemplo 15.6. O arquivo menu
?package(falcot-data):needs=X11|wm section=Help\ title="Internal Falcot Corp Documentation" \ command="/usr/bin/x-www-browser /usr/share/falcot-data/index.html" ?package(falcot-data):needs=text section=Help\ title="Internal Falcot Corp Documentation" \ command="/usr/bin/www-browser /usr/share/falcot-data/index.html"
needs
, quando definido como X11|wm
indica que esta entrada só faz sentido em uma interface gráfica. Portanto, só poderá ser integrado nos menus das aplicações (X11) e gerenciadores de janelas (por isso o wm
). O estado do campo section
onde a entrada deve ser exibida no menu. No nosso caso, a entrada será no menu Ajuda. O campo title
contém o texto que será exibido no menu. Finalmente, o campo command
descreve o comando a executar quando o usuário seleciona o item do menu.
debian/menu
é o suficiente para habilitar o menu no pacote, desde que o comando dh_installmenu
seja automaticamente invocado por dh
durante o processo de criação do pacote.
dpkg-buildpackage -us -uc
de dentro do diretório falcot-data-1.0
.