Escolar Documentos
Profissional Documentos
Cultura Documentos
Bsico
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...
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...)
C
H
D
Esforos Duplicados
progama.tar.gz
Programador
Descompacta
Compila
Executvel
Executvel
Executvel
Executvel
Surge o Empacotador!
progama.tar.gz
Programador
Empacotador
Descompacta
Compila
Executvel
Menos
trabalho
pra muita
gente.
Empacotadores Orgulhosos,
Repositrios Cheios e Usurios Felizes
Repositrio
de Softwares
Pr-compilados
Pacotes no Debian
Repositrio
Debian
Lista de pacotes
disponveis
apt-get update
Packages.gz
foo_0.2.3-1_i386.deb
O Paraso das
Dependncias Satisfeitas
Programa
Depende de
C
H
D
Informaes
Interessantes pra
Quem Pretende
Empacotar
FHS
Filesystem Hierarchy Standard
bin/
dev/
etc/
home/
tmp/
usr/
bin/
doc/
lib/
share/
arquitetura
nome
mednafen_0.6.5-1_i386.deb
control.tar.gz
data.tar.gz
debian-control
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
control.tar.gz
conffiles
postrm
config
preinst
control
prerm
md5sums
templates
postinst
shlibs
Criando Um Pacote
Manualmente
/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
mkdir
mkdir
mkdir
mkdir
-p diad-artwork/usr/share/backgrounds
-p diad-artwork/usr/share/pixmaps/splash
-p diad-artwork/usr/share/gdm/themes/diad
-p diad-artwork/usr/share/doc/diad-artwork
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
Documentao (2)
diad-artwork/usr/share/doc/diad-artwork/changelog.Debian.gz
DEBIAN/control
Package: diad-artwork
Section: misc
Priority: extra
Maintainer: James Bond <007@england.co.uk>
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
93171425730b46aa4debbaa58568402f
e1cce7981a1dfd51f518f1c15e7a87cc
8f45891b27c85f01fd40bac603883650
7f2d2f712840525f75ab34ecf540cd9f
eafe4de8c42ef34de37ec0b9a2f05d57
a826c77b077e0b782914f32ad5e5ddab
84513d7282b4cfc745c63d2b8ae971a7
adcc7b98011b1ed7f00695fbdb2afa86
dba080eb88405fdd911b5cfb3b8d2bc0
c588c56e88007469e55e0c084e830cd4
0960f0c80ff0e503288d2ea5e704fbe8
usr/share/backgrounds/diad-background.png
usr/share/doc/diad-artwork/copyright
usr/share/doc/diad-artwork/changelog.Debian.gz
usr/share/pixmaps/splash/diad-splash.png
usr/share/gdm/themes/diad/GdmGreeterTheme.desktop
usr/share/gdm/themes/diad/background.svg
usr/share/gdm/themes/diad/debsmith.png
usr/share/gdm/themes/diad/diad.xml
usr/share/gdm/themes/diad/help.png
usr/share/gdm/themes/diad/options.png
usr/share/gdm/themes/diad/screenshot.png
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
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
cdigo fonte
debianizado
./pacote-0.1
./pacote-0.1/src/*
./pacote-0.1/debian/*
./pacote-0.1/*
./DEBIAN
./usr
./usr/share
...
pacote-0.1-1_i386.deb
Debianizando
Vamos obter o cdigo fonte de uma
aplicao qualquer
$ wget
http://logicparser.googlecode.com/files/logicparser0.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="setanta@gmail.com" \
dh_make --file ../logicparser-0.7.2.tar.gz \
--single -c gpl
Modificando os Arquivos em
debian/*
O dh_make cria vrios arquivos, muitos dos
quais no precisaremos. Vamos apaglos:
$ rm debian/*.ex debian/*.EX README.Debian
Voc j
conhece esse.
control
copyright
dirs
docs
Invoca o
Makefile
rules
debian/control
Source: logicparser
Section: misc
Priority: optional
Maintainer: Marcelo Lira dos Santos <meuemail@email.com>
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.
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
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
u = unsigned
no faz uso de
assinaturas
criptogrficas
Resumo Visual do
Processo de Empacotamento
Debian packaging files and changes
foo-1.0/debian/*
Upstream Source
foo-1.0.tar.gz
Unpack
Working
Files
Create
Rename
foo_1.0-1.orig.tar.gz
Build
foo_1.0-1_i386.deb
Build
foo_1.0-1.diff.gz
foo_1.0-1.dsc
Debian source package
Descaradamente copiado de: http://liw.iki.fi/liw/talks/debian-packaging-tutorial.pdf
Pro Dia D?
Claro que
pode!
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/chpkg_basics.en.html