Empacotamento Debian Basico

download Empacotamento Debian Basico

of 49

description

.

Transcript of Empacotamento Debian Basico

Empacotamento Bsico

# Parte 1: Motivao

1. Importncia do Empacotamento(usar os slides da apresentaco do cincia livre)2. Poltica de Empacotamento Debian - Alta qualidade dos pacotes

# Parte 2: Informao de Background

1. FHS - Filesystem Hierarchy Standard2. Anatomia de Um pacote Debian1. Dissecando: dpkg-info, dpkg-deb2. Pacotes Binrios3. Pacotes Source

# Parte 3: Criando Um Pacote Manualmente

1. criar rvore de diretrios2. "instalar" contedos na rvore3. arquivo "copyright"4. arquivo "changelog" 5. DEBIAN/control6. DEBIAN/md5sums7. Empacotar: control.tar.gz + data.tar.gz + debian-binary = pacote.deb8. Instalar, Verificar, Remover

# Parte 4: Debianizando pacotes

1. ...2. dh_make3. ...

Licensing:

This image was created by Chris 73.

This file is licensed under the Creative Commons Attribution ShareAlike 2.5 License. In short: you are free to share and make derivative works of the file under the conditions that you appropriately attribute it, and that you distribute it only under a license identical to this one.

Fonte: http://commons.wikimedia.org/wiki/Image:Individually_wrapped_strawberries%2C_Japan.jpg

Importncia do Empacotamento

Vivendo Com
Um Sistema Operacional

Depois de instalado o sistema a tarefa de manuteno mais realizada pelo usurio a instalao e remoo de softwaresTomemos outro SO como exemplo:HiperDownloads, BaixaAcolNext, Next, Next, Finish...Duplicao de DLLsDesinstaladores sebososAs pessoas se acostumam com cada coisa...

Algum Quer Instalar Um Software Linux...

(...)char *category = libhal_device_get_property_string(ctx, udi, "info.category", NULL);if (category && (!strcmp (category, "net.80203") ||!strcmp (category, "net.80211"))){char *temp = libhal_device_get_property_string(ctx, udi, "net.interface", NULL);iface = g_strdup (temp);libhal_free_string (temp);}libhal_free_string (category);
(...)

Procura na internet e acha isso:NumSeiQ.tar.gz

Aquele Amigo
Esquisito D A Dica...

s compilar... :P

$ ./configure

(texto rolando tela acima...)

$ make

(mais texto rolando tela acima...)
$ make install

(ainda mais texto rolando...)

O Inferno de Cabea Para Baixo das 666 Dependncias

Programa

Depende de

A

B

C

D

E

F

J

K

G

H

I

Esforos Duplicados

progama.tar.gz

Programador

Descompacta

Compila

Executvel

Executvel

Executvel

Executvel

Surge o Empacotador!

progama.tar.gz

Programador

Descompacta

Empacotador

Compila

Executvel

Menos trabalho pra muita gente.

Empacotadores Orgulhosos, Repositrios Cheios e Usurios Felizes

Repositrio
de Softwares
Pr-compilados

Pacotes no Debian

RepositrioDebian

Packages.gz

Lista de pacotes disponveis

apt-get updateapt-get install foo

foo_0.2.3-1_i386.deb

O Paraso das
Dependncias Satisfeitas

Programa

Depende de

A

B

C

D

E

F

J

K

G

H

I

Informaes Interessantes pra Quem Pretende Empacotar

FHS
Filesystem Hierarchy Standard

dev/

/usr/

etc/

tmp/

bin/

doc/

lib/

share/

home/

bin/

mednafen_0.6.5-1_i386.debAnatomia de Um Pacote Binrio

verso - reviso Debiannomearquiteturadebian-controlcontrol.tar.gzdata.tar.gz

Anatomia de Um Pacote Binrio

Estruturalmente, arquivos .deb nada mais so que arquivos compactados com o utilitrio ar, contendo:debian-binary contm apenas a string 2.0 (verso do formato do pacote Debian)data.tar.gz imagem do pacote instalado no sistema de arquivoscontrol.tar.gz informaes de controle para as ferramentas de manipulao de pacotes

data.tar.gz

Contedo de data.tar.gz para o pacote libmad0-devExtrair isso na raiz do sistema quase o mesmo que instalar o pacote.

./usr/./usr/lib/./usr/lib/libmad.a./usr/lib/libmad.la./usr/lib/pkgconfig/./usr/lib/pkgconfig/mad.pc./usr/include/./usr/include/mad.h./usr/share/./usr/share/doc/./usr/share/doc/libmad0-dev/./usr/share/doc/libmad0-dev/changelog.Debian.gz./usr/share/doc/libmad0-dev/TODO./usr/share/doc/libmad0-dev/copyright./usr/share/doc/libmad0-dev/examples/./usr/share/doc/libmad0-dev/examples/minimad.c.gz./usr/share/doc/libmad0-dev/changelog.gz./usr/share/doc/libmad0-dev/CREDITS.gz./usr/share/doc/libmad0-dev/README.gz./usr/lib/libmad.so

control.tar.gz

Contedo de control.tar.gz para o pacote libmad0-devcontrol, md5sumsPouca coisa. Vejamos outro:
mozilla-thunderbirdconffiles, config, control, md5sums, postinst, postrm, preinst, prerm, templates

control.tar.gz

conffilesconfigcontrolmd5sumspostinst

postrmpreinstprermtemplatesshlibs

Dissecando Um Pacote Binrio

Os pacotes baixados pelo apt-get so guardados em /var/cache/apt/archives

Vamos copiar algum .deb para uma mesa de cirurgia em /tmp/lab

Dissecando Um Pacote Binrio

file pacote.debar -t pacote.debdpkg-deb --info pacote.debdpkg-deb --contents pacote.debdpkg-deb --field pacote.deb dependsar x pacote.debdpkg-deb --control pacote.debdpkg-deb --extract pacote.deb ./data

Criando Um Pacote Manualmente

Tema Para O Desktop

Vamos criar um pacote simples um tema para o Desktop, contendo:

Papel de Parede:
/usr/share/backgrounds/diad-background.png

Tema GDM:
/usr/share/gdm/themes/diad/*

Splash Screen:
/usr/share/pixmaps/splash/diad-splash.png

Criando Um Pacote Manualmente (1)

Crie a estrutura de diretrios$ mkdir -p diad-artwork/usr/share/backgrounds
$ mkdir -p diad-artwork/usr/share/pixmaps/splash
$ mkdir -p diad-artwork/usr/share/gdm/themes/diad
$ mkdir -p diad-artwork/usr/share/doc/diad-artwork
$ mkdir diad-artwork/DEBIANCopie contedo
$ cp diad-splash.png diad-artwork/usr/share/pixmaps/splash
$ cp diad-background.png diad-artwork/usr/share/backgrounds
$ cp diad diad-artwork/usr/share/gdm/themes/diad-artwork -r
$ chmod 644 diad-artwork/* -R

Criando Um Pacote Manualmente (2)

Estrutura de diretrios

diad-artwork/
|-- DEBIAN
`-- usr`-- share|-- backgrounds|-- doc| `-- diad-artwork|-- gdm| `-- themes| `-- diad`-- pixmaps`-- splash

Documentao (1)

diad-artwork/usr/share/doc/diad-artwork/copyright

This package was manually created by James Bond
on Mon, 30 Jul 2007, 08:25:00 +0000

It was downloaded from ...

Upstream Author: James Bond
Copyright:
[...]

Documentao (2)

diad-artwork/usr/share/doc/diad-artwork/changelog.Debian.gz

diad-artwork (1.0-1) unstable; urgency=low

* "License to Kill" release.

-- James Bond Mon, 30 Jul 2007 08:28:00 +0000

DEBIAN/control

Package: diad-artworkSection: miscPriority: extraMaintainer: James Bond Architecture: allVersion: 1.0-1Description: theme artwork for the Debian D, 2007Includes background and splash screen images, and GDM theme.

DEBIAN/md5sums

$ find usr -type f -exec md5sum {} \; > DEBIAN/md5sums

3a3346e545ad9d1058fa5a48ceada9e5 usr/share/backgrounds/diad-background.png93171425730b46aa4debbaa58568402f usr/share/doc/diad-artwork/copyrighte1cce7981a1dfd51f518f1c15e7a87cc usr/share/doc/diad-artwork/changelog.Debian.gz8f45891b27c85f01fd40bac603883650 usr/share/pixmaps/splash/diad-splash.png7f2d2f712840525f75ab34ecf540cd9f usr/share/gdm/themes/diad/GdmGreeterTheme.desktopeafe4de8c42ef34de37ec0b9a2f05d57 usr/share/gdm/themes/diad/background.svga826c77b077e0b782914f32ad5e5ddab usr/share/gdm/themes/diad/debsmith.png84513d7282b4cfc745c63d2b8ae971a7 usr/share/gdm/themes/diad/diad.xmladcc7b98011b1ed7f00695fbdb2afa86 usr/share/gdm/themes/diad/help.pngdba080eb88405fdd911b5cfb3b8d2bc0 usr/share/gdm/themes/diad/options.pngc588c56e88007469e55e0c084e830cd4 usr/share/gdm/themes/diad/screenshot.png0960f0c80ff0e503288d2ea5e704fbe8 usr/share/gdm/themes/diad/debsmiths.png

diad-artwork_1.0-1_all.deb

$ echo 2.0 > debian-binary
$ fakeroot
# tar cz -C diad-artwork/DEBIAN -f control.tar.gz .
# tar cz --exclude=DEBIAN -C diad-artwork -f data.tar.gz .# ar rcu diad-artwork.deb \
> debian-binary control.tar.gz data.tar.gz # exit$ file diad-artwork.deb $ dpkg-name diad-artwork.deb

Instalando e Removendo
Seu Novo Pacote

Instalando$ sudo dpkg -i diad-artwork_1.0-1_all.deb
Selecting previously deselected package diad-artwork.
(Reading database ... 221664 files and directories currently installed.)
Unpacking diad-artwork (from diad-artwork_1.0-1_all.deb) ...
Setting up diad-artwork (1.0-1) ...Verificando se est instalado
$ aptitude search python

Instalando e Removendo
Seu Novo Pacote

Removendo
$ sudo apt-get remove diad-artwork
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
diad-artwork
0 upgraded, 0 newly installed, 1 to remove and 40 not upgraded.
Need to get 0B of archives.
After unpacking 0B of additional disk space will be used.
Do you want to continue [Y/n]? y
(Reading database ... 221677 files and directories currently installed.)
Removing diad-artwork ...

Debianizando Pacotes Existentes

Debianizando

./DEBIAN./usr./usr/share...cdigo fonte
debianizado./pacote-0.1./pacote-0.1/src/*./pacote-0.1/debian/*./pacote-0.1/*

pacote-0.1-1_i386.deb

Debianizando

Vamos obter o cdigo fonte de uma aplicao qualquer
$ wget http://logicparser.googlecode.com/files/logicparser-0.7.2.tar.gz
$ tar -xvzf logicparser-0.7.2.tar.gz
$ cd logicparser-0.7.2

dh_make

Poderamos criar na mo todos os arquivos necessrios para criao do debMas o dh_make (pacote: dh-make) poderia fazer isso por ns... :)
$ cd logicparser-0.7.2
$ DEBFULLNAME="Marcelo Lira dos Santos" \
> DEBEMAIL="[email protected]" \
> dh_make --file ../logicparser-0.7.2.tar.gz \
> --single -c gplSero criados o diretrio logicparser_0.7.2/debian e o arquivo logicparser_0.7.2.orig.tar.gz

Modificando os Arquivos em debian/*

O dh_make cria vrios arquivos, muitos dos quais no precisaremos. Vamos apag-los:
$ rm debian/*.ex debian/*.EX README.DebianVejamos o que sobrou
$ ls debian
changelog compat control copyright dirs docs rules

Invoca o MakefileVoc j conhece esse.

debian/control

Source: logicparser
Section: misc
Priority: optional
Maintainer: Marcelo Lira dos Santos
Build-Depends: debhelper (>= 5), autotools-dev
Standards-Version: 3.7.2Package: logicparser
Architecture: i386
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Simple parser for logical expressions.
Parser of logical propositions. It generates a parsed
tree, a graph in DOT format, and renders it in PNG if
GraphViz is available. It also calculates the expression
based in values given by the user.

Criando o Pacote Binrio

fakerootusado para simular privilgios de roota princpio no serve pra exploitar
(to pensando que o cu perto)Usamos o rules para criar o pacote
$ fakeroot debian/rules binaryFora do diretrio do cdigo fonte estar o arquivo logicparser_0.7.2-1_i386.deb

Pacotes Fonte

Fatos:Alm de pacotes binrios o Debian possui pacotes fonte.Pacotes binrios so criados a partir de pacotes fonte.Pacotes fonte podem gerar mltiplos pacotes binrios.Exemplo:
o pacote fonte de uma biblioteca pode gerar pacotes binrios runtime, desenvolvimento e documentao

Anatomia de Um Pacote Fonte

Um pacote fonte no um arquivo, mas 3:foo_1.0-1.orig.tar.gz cdigo fonte originalfoo_1.0-1.diff.gz mudanas feitas no cdigo fonte original; pode ser o acrscimo do diretrio debian, ou mudanas na prpria aplicao para se adequar s polticas do Debian.foo_1.0-1.dsc descrio do pacote fonte.

Criando o Pacote Fonte

Devemos ter no presente diretrio, o arquivo orig do cdigo fonte, mais o diretrio com o cdigo fonte alterado (debian/* e outras coisas):
$ ls
logicparser-0.7.2 logicparser_0.7.2.orig.tar.gz

$ dpkg-source -b logicparser-0.7.2

$ ls
logicparser-0.7.2 logicparser_0.7.2.orig.tar.gz
logicparser_0.7.2-1.diff.gz logicparser_0.7.2-1.dsc

Criando o Pacote Fonte

Vamos copiar o pacote fonte para outro lugar onde podemos brincar em paz:
$ mkdir playground
$ cp logicparser_0.7.2* playground
$ cd playgroundUsamos o comando dpkg-source para aplicar as diferenas no pacote fonte original segundo as informaes em dsc
$ dpkg-source -x logicparser_0.7.2-1.dsc
$ ls
logicparser-0.7.2 logicparser_0.7.2-1.diff.gz logicparser_0.7.2-1.dsc logicparser_0.7.2.orig.tar.gz

Criando o Pacote Fonte

Finalmente construmos o pacote binrio:
$ cd logicparser-0.7.2
$ dpkg-buildpackage -rfakeroot -b -us -uc

$ cd ..
$ ls
logicparser-0.7.2 logicparser_0.7.2-1.dsc logicparser_0.7.2-1_i386.deb
logicparser_0.7.2-1.diff.gz
logicparser_0.7.2-1_i386.changes logicparser_0.7.2.orig.tar.gz

u = unsigned
no faz uso de assinaturas criptogrficas

Resumo Visual do
Processo de Empacotamento

foo-1.0.tar.gzfoo-1.0foo-1.0/debian/*foo_1.0-1_i386.debfoo_1.0-1.orig.tar.gz

foo_1.0-1.diff.gzfoo_1.0-1.dscUpstream Source

Rename

Unpack

Build

Build

Create

Working
Files

Debian packaging files and changes

Debian binary package

Debian source package

Descaradamente copiado de: http://liw.iki.fi/liw/talks/debian-packaging-tutorial.pdf

Autor: Marcelo Lira dos Santos

Chefe, posso usar algumas horas de trabalho pra fazer os slides do Dia D?Pro Dia D?
Claro que pode!

[meu chefe no INdT]

Referncias

Referncias

KRAFFT, Martin F. The Debian SystemThe Debian GNU/Linux FAQ
Chapter 6 - Basics of the Debian package management systemhttp://www.debian.org/doc/FAQ/ch-pkg_basics.en.htmlDebian Policy Manual http://www.debian.org/doc/debian-policy/Debian Packaging School: Lesson 1http://liw.iki.fi/liw/talks/debian-packaging-tutorial.pdf

Atribuio-Compartilhamento pela mesma licena 2.5
(http://creativecommons.org/licenses/by-sa/2.5/deed.pt)Voc pode:copiar, distribuir, exibir e executar a obracriar obras derivadasfazer uso comercial da obraSob as seguintes condies:Atribuio. Voc deve dar crdito ao autor original, da forma especificada pelo autor ou licenciante.Compartilhamento pela mesma Licena. Se voc alterar, transformar, ou criar outra obra com base nesta, voc somente poder distribuir a obra resultante sob uma licena idntica a esta.Para cada novo uso ou distribuio, voc deve deixar claro para outros os termos da licena desta obra.Qualquer uma destas condies podem ser renunciadas, desde que Voc obtenha permisso do autor.Qualquer direito de uso legtimo (ou "fair use") concedido por lei, ou qualquer outro direito protegido pela legislao local, no so em hiptese alguma afetados pelo disposto acima.Este um sumrio para leigos da Licena Jurdica
(na ntegra: http://creativecommons.org/licenses/by-sa/2.5/br/legalcode).
Termo de exonerao de responsabilidade: http://creativecommons.org/licenses/disclaimer-popup?lang=pt

Click to edit the title text format

Click to edit the title text format

Clique para editar o formato do texto em estrutura de tpicosSegundo Nvel da Estrutura de TpicosTerceiro Nvel da Estrutura de TpicosQuarto Nvel da Estrutura de TpicosQuinto Nvel da Estrutura de TpicosSexto Nvel da Estrutura de TpicosStimo Nvel da Estrutura de TpicosOitavo Nvel da Estrutura de TpicosNono Nvel da Estrutura de Tpicos

Clique para editar o formato do ttulo de texto

Clique para editar o formato do ttulo de texto

Clique para editar o formato do ttulo de texto

Click to edit the title text format

Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline LevelNinth Outline Level