Empacotamento Debian Básico
-
Upload
marcelo-lira -
Category
Technology
-
view
5.643 -
download
0
Transcript of Empacotamento Debian Básico
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 Standard 2. Anatomia de Um pacote Debian 1. Dissecando: dpkg-info, dpkg-deb 2. Pacotes Binrios 3. Pacotes Source
# Parte 3: Criando Um Pacote Manualmente
1. criar rvore de diretrios 2. "instalar" contedos na rvore 3. arquivo "copyright" 4. arquivo "changelog" 5. DEBIAN/control 6. DEBIAN/md5sums 7. Empacotar: control.tar.gz + data.tar.gz + debian-binary = pacote.deb 8. Instalar, Verificar, Remover
# Parte 4: Debianizando pacotes
1. ... 2. dh_make 3. ...
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 softwares
Tomemos outro SO como exemplo:
HiperDownloads, BaixaAcol
Next, Next, Next, Finish...
Duplicao de DLLs
Desinstaladores sebosos
As 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.deb
Anatomia 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 arquivos
control.tar.gz informaes de controle para as ferramentas de manipulao de pacotes
data.tar.gz
Contedo de data.tar.gz para o pacote libmad0-dev
Extrair 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-dev
control, md5sums
Pouca coisa. Vejamos outro:
mozilla-thunderbird
conffiles, config, control, md5sums, postinst, postrm, preinst, prerm, templates
control.tar.gz
conffiles
config
control
md5sums
postinst
postrm
preinst
prerm
templates
shlibs
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.deb
ar -t pacote.deb
dpkg-deb --info pacote.deb
dpkg-deb --contents pacote.deb
dpkg-deb --field pacote.deb depends
ar x pacote.deb
dpkg-deb --control pacote.deb
dpkg-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/DEBIAN
Copie 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-artwork
Section: misc
Priority: extra
Maintainer: James Bond
Architecture: all
Version: 1.0-1
Description: theme artwork for the Debian D, 2007
Includes background and splash screen images, and GDM theme.
DEBIAN/md5sums
$ find usr -type f -exec md5sum {} \; > DEBIAN/md5sums
3a3346e545ad9d1058fa5a48ceada9e5 usr/share/backgrounds/diad-background.png
93171425730b46aa4debbaa58568402f usr/share/doc/diad-artwork/copyright
e1cce7981a1dfd51f518f1c15e7a87cc usr/share/doc/diad-artwork/changelog.Debian.gz
8f45891b27c85f01fd40bac603883650 usr/share/pixmaps/splash/diad-splash.png
7f2d2f712840525f75ab34ecf540cd9f usr/share/gdm/themes/diad/GdmGreeterTheme.desktop
eafe4de8c42ef34de37ec0b9a2f05d57 usr/share/gdm/themes/diad/background.svg
a826c77b077e0b782914f32ad5e5ddab usr/share/gdm/themes/diad/debsmith.png
84513d7282b4cfc745c63d2b8ae971a7 usr/share/gdm/themes/diad/diad.xml
adcc7b98011b1ed7f00695fbdb2afa86 usr/share/gdm/themes/diad/help.png
dba080eb88405fdd911b5cfb3b8d2bc0 usr/share/gdm/themes/diad/options.png
c588c56e88007469e55e0c084e830cd4 usr/share/gdm/themes/diad/screenshot.png
0960f0c80ff0e503288d2ea5e704fbe8 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 deb
Mas 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 gpl
Sero 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.Debian
Vejamos 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.2
Package: 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
fakeroot
usado para simular privilgios de root
a princpio no serve pra exploitar
(to pensando que o cu perto)
Usamos o rules para criar o pacote
$ fakeroot debian/rules binary
Fora 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 original
foo_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 playground
Usamos 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 System
The Debian GNU/Linux FAQ
Chapter 6 - Basics of the Debian package management system
http://www.debian.org/doc/FAQ/ch-pkg_basics.en.html
Debian Policy Manual
http://www.debian.org/doc/debian-policy/
Debian Packaging School: Lesson 1
http://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 obra
criar obras derivadas
fazer uso comercial da obra
Sob 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 tpicos
Segundo Nvel da Estrutura de Tpicos
Terceiro Nvel da Estrutura de Tpicos
Quarto Nvel da Estrutura de Tpicos
Quinto Nvel da Estrutura de Tpicos
Sexto Nvel da Estrutura de Tpicos
Stimo Nvel da Estrutura de Tpicos
Oitavo Nvel da Estrutura de Tpicos
Nono 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 format
Second Outline Level
Third Outline Level
Fourth Outline Level
Fifth Outline Level
Sixth Outline Level
Seventh Outline Level
Eighth Outline Level
Ninth Outline Level