Empacotamento Debian

De Wiki Tarrafa.org - Documentação Colaborativa e Livre

Edição feita às 15h29min de 18 de Junho de 2007 por 201.9.97.100 (Discussão)
(dif) ← Versão anterior | ver versão atual (dif) | Versão posterior → (dif)

Tabela de conteúdo

Instalando o pacote para gerar um Ambiente Chroot do Debian Etch

Instalando o debootstrap

  • No Shell como Root digite:
# apt-get install debootstrap

Instalando a distro no Ambiente Chroot

Pode ser instalado qualquer versão do debian, nesse momento vamos criar um pasta e instalar o Debian Etch nessa pasta.

  • Entre no seu diretorio home:
# cd ~
  • Crie a pasta etch:
# mkdir etch
  • Instalando o Debian Etch na pasta etch:
# debootstrap --arch i386 etch etch/ http://ftp.debian.org/debian/

Isso deve demorar um pouco, dependendo da sua conexão, pode tormar um café de uns 20 minutos, apos o termino dessa operação, teremos um Debian Etch na pasta etch.

Acessando o Chroot do Debian Etch

  • Entrando no Debian Etch
# chroot etch/

Pronto agora dentro do Debian Etch, tenho todas as ferramentas do debian, instaladas em um sistema basico, vou para a pasta /home, criar uma pasta com o nome pacotes.

  • Entrando na pasta
# cd /home
  • Criando a pasta pacotes
# mkdir pacotes
  • Entrando na pasta pacotes
# cd pacotes

Atualizando o sources.list

  • adicionando os repositorios debian
#echo "deb http://ftp.us.debian.org/debian etch main" >> /etc/apt/sources.list
#echo "deb-src http://ftp.us.debian.org/debian etch main" >> /etc/apt/sources.list
  • Atualizando a base de pacotes do apt
#apt-get update

Instalando softwares de desenvolvimento de pacotes .deb

#apt-get install dpkg-dev
#apt-get install build-essential
#apt-get install file autoconf automake dh-make debhelper devscripts fakeroot lintian

Alterando pacotes fontes .deb

  • Escolha um pacote da base do apt, para localizar um pacote digite:
#apt-cache search proftpd
  • Baixe os fontes
#apt-get source proftpd

Ele ira baixar os fontes para a pasta que o usuário se encontra no sistema, criara uma pasta proftpd-(versão), alem de criar os arquivos proftpd(versão).orig.tar.br que é o pacote tar original, proftpd(versão).diff.gz que contem as modificações do mantenedor do pacote Debian e o proftpd(versão).dsc arquivo de assinaturas do pacote.

  • Entre na pasta proftpd-(versão)
#cd proftpd-(versão)

Nessa pasta temos todos os fontes do programa proftpd, podemos modificar o conteudo dos arquivos, após as alteracões podemos refazer o pacote com o comando

#dpkg-buildpackage -us -uc

Caso apareça uma mensagem de erro no processo de gerar o pacote .deb, atente para os erros de dependências não instaladas, mas necessárias para gerar o pacote, instale com o apt e execute o dpkg-buildpackage -us -uc novamente. Após a geração do pacote, saia da pasta proftpd(versão), e execute.

#ls 

Ira te mostrar o pacote recem criado proftpd(versão).deb, iremos verificar se o mesmo esta com algum problema com o lintian.

#lintian proftpd(versão).deb

Caso apareça algum warning ou erro, procure no google pela mensagem informada, possivelmente você ira achar a solução, a geração de pacotes com erro ou warning podem comprometer o sistema no qual ira ser instalado o pacote, por isso recomendo a geração dos pacotes sem nenhum erro e com poucos warning.

Criando Pacotes Debian

O primeiro passo para cria pacotes debian, e entender que o dh_make que é o software para fazer a debianização inicial trabalha com 4 tipos de pacotes, sendo eles:

  • Binario Simples (s): Pacote com um binario simples.
  • Binario Multiplos (m): Pacotes com varios binarios.
  • Biblioteca - Lib (1): Biblioteca do sistema.
  • Modulo do Kernel (k): Modulos do kernel, devices modules.
  • Cdbs (b): Pacote sem binarios, web apps, themes, etc ...

Escolhendo um nome para o pacote

Para verificar se o nome do pacote escolhido já existe nos repositórios do Debian execute:

#dpkg -s nomedopacote 

ou

#dpkg -l '*nomedopacote*'

se o resultado não apresentar nenhuma ocorrência poderemos usar o nome escolhido.

Gerando um Tarball do pacote

  • O dh_make necessita de um pacote tarball como base para executar a debianização inicial de um pacote, porem antes de gerar esse tarball, vamos sub-dividir o pacote em diretorios, uma maneira simples de fazer essa organização é a seguinte:
#html/ (diretorio que contem as paginas)
#html/theme (diretorio de themas de paginas)
#etc/ (configurações diversas)
#doc/ (documentação)
  • Criando a pasta e os diretórios.
#mkdir teste-1.0/
#cd teste-1.0/
#mkdir -p html/theme
#mkdir etc/
#mkdir doc/

Após isso começaremos a organizar o nosso pacote teste, o próximo passo após a organização e o gerar o tarball do pacote teste.

  • Saia da pasta teste
#cd ..
  • Gerando o Tarball
#tar -zcvf teste-1.0.tar.gz teste-1.0/

O aplicativo tar ira gerar o teste-1.0.tar.gz da pasta teste/

obs: Tanto a pasta do pacote devera sequir essa ordem nomedopacote-versão como o tarball gerado tambem

Debianização Inicial

  • Entre no diretorio que contem os codigos fontes do seu programa
#cd teste-1.0/
  • Exporte as variáveis para o dh_make
#export DEBFULLNAME="seu nome aqui"
#export DEBEMAIL="seu e-mail aqui"
  • Execute o dh_make
#dh_make -f ../teste-1.0.tar.gz -c gpl

Ele te perguntara que tipo e o pacote, vamos informar que é um cdbs, digite:

#b 

Depois apenas confirme com a tecla <enter>, novamente tecle <enter>

Pronto o seu tarball já foi debianizado, agora vamos configurar o pacote.

A pasta debian/

O processo de debianização criará a pasta debian/ dentro da pasta do nosso pacote o teste-1.0, nessa pasta é que será feito todo o processo configuração da instalação do nosso pacote em um sistema Gnu/Debian, através do utilitário apt.

Vamos Conhecer os arquivos de configuração da pasta debian/

control

O arquivo control como o nome já diz, é um arquivo de controle, é contem vários valores utilizados por outros programas como o dpkg e dselect, abaixo o nosso control criado pelo dh_make:

Source: teste
Section: unknown
Priority: extra
Maintainer: Jamyl Guimaraes <jamylguimaraes@gmail.com>
Build-Depends: cdbs, cdbs, debhelper (>= 5)
Standards-Version: 3.7.2

Package: teste
Architecture: any 
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: <insert up to 60 chars description>
<insert long description, indented with spaces>

Source: Nome do pacote

Section - Nessa variável colocamos a sub-seção a qual pertence o pacote, dentro do main, contrib, non-free, temos as sub-seções 'admin' para ferramentas de administração, 'base' para ferramentas básicas, 'devel' para ferramentas de programação, 'doc' para documentação, 'mail' para clientes e daemons de email, 'net' para aplicativos e daemons de rede, 'x11' para programas gráficos entre outras. Vamos alterar a variavel de

Section: unknown

para

Section: base

Priority - Definimos aqui a prioridade do pacote normalmente usamos o valor optional (opcional) ou extra, outras opções poderam ser encontradas em http://www.debian.org/doc/debian-policy/ch-archive.html#s-priorities.

Priority: extra

Maintainer - Define o nome e <e-mail> do mantenedor do pacote
Build-Depends: - Dependência requerida para construir o pacote
Package: - Nome do seu pacote binario, normalmente o mesmo valor da variavel Source
Architecture: - Arquitetura do sistema alvo, any(qualquer uma) deixe que o dpkg-gencontrol faça isso por você.
Depends: - Nessa variável é que informamos as dependências requeridas, lembrando que o apt busca as dependências e instala junto com o pacote, ex: Depends: xmms,k3b
Description: - Definimos aqui a descrição do pacote.

Description: <insert up to 60 chars description>
<insert long description, indented with spaces>

para

Description: Pacote com o html de sistema teste de pacotes.
Aqui coloco a descrição completa e tal adsf asfds asdfs asdf

Para maiores detalher consulte o Guia do Mantenedor Debian em http://www.debian.org/doc/manuals/maint-guide/index.pt-br.html

changelog