Anda di halaman 1dari 41

Anatoma de un Paquete Debian debian/rules

Margarita, Diciembre de 2008.

Who the fuck is this? :]

Nombre: Muammar El Khatib Contacto: muammar@debian.org.ve Mantenedor de paquetes Debian. Miembro de Debian Venezuela http:!!""".debian.org.ve# $seudo %icenciado en &u'mica $ura. $(gina personal: http:!!muammar.me )log: http:!!muammar.me!blog *$* +e,: -./0.12-

Contenido

3ntroducci4n 3nstalar 5 Desinstalar paquetes 6$7# &u8 es un paquete .deb 7ipos de paquetes .deb Versiones de un .deb Contenido de un .deb Entendiendo a dp+g Maintainer 9cripts

Introduccin
6l principio solo hab'a tar.gz Necesidad de un sistema que mane:ara paquetes.

D$K*

6dvanced $ac+aging 7ool =>>?. : :> : ?. ?> ?@

;$M

;ed <at se adelanta.

Introduccin
Configuracin y Uso Bsico de AP

!etc!apt!sources.list
deb http://host/debian distribution section1 section2 section3 deb-src http://host/debian distribution section1 section2 section3

Nota: %'neas que comiencen con A son ignoradas por 6$7 comentarios# El archivo !etc!apt!sources.list puede contener muchas , diversas l'neas. 6$7 sabe c4mo arreglarselas con archivos de tipo: http= Btp= Bile archivos locales como por e:emplo un directorio contenindo en un sistema de archivos montado de tipo 39C1DD0 Biles,stem# , ssh.

Ena vez conBigurado el sistema= se procede a e:ecutar:

A apt@get update o A aptitude update

Introduccin
obe,:!home!muammarA aptitude update <it http:!!Btp.us.debian.org unstable ;elease.gpg 3gn http:!!Btp.us.debian.org unstable!main 7ranslation@enFE9 3gn http:!!Btp.us.debian.org unstable!non@Bree 7ranslation@enFE9 3gn http:!!Btp.us.debian.org unstable!contrib 7ranslation@enFE9 <it http:!!Btp.us.debian.org eGperimental ;elease.gpg 3gn http:!!Btp.us.debian.org eGperimental!main 7ranslation@enFE9 3gn http:!!Btp.us.debian.org eGperimental!non@Bree 7ranslation@enFE9 3gn http:!!Btp.us.debian.org eGperimental!contrib 7ranslation@enFE9 2etched --.0+) in Ds -D-0)!s# ;eading pac+age lists... Done

Introduccin
6$7 descarga e indeGa todos los paquetes disponibles en los repositorios en !"ar!#ib!a$t!#ists. %os listados son almacenados segHn la siguiente convenci4n:

ft$.debian.org%debian%dists%unstab#e%main%binary&amd'(%Pac)ages *************** ++++++ ************** ++++ ** Mirror direc. rama ,ecc. i$o Ar-uitecture

Introduccin
$ara una lista completa de mirrors de Debian visitar: http:!!""".debian.org!mirror!mirrorsFBull 6ctualizar un sistema basado en 6$7 es sencillo= solo ha, que e:ecutar apt@ get upgrade o aptitude saBe@upgrade:
A apt@get @u upgrade ;eading $ac+age %ists... Done )uilding Dependenc, 7ree... Done 7he Bollo"ing pac+ages have been +ept bac+ cpp gcc lilo 7he Bollo"ing pac+ages "ill be upgraded adduser ae apt autoconB debhelper dp+g@dev esound esound@common Btp indent ipchains isapnptools libaudioBile@dev libaudioBile0 libesd0 libesd0@dev libgt+-.. libgt+-..@dev libloc+Bile- libne"t0 liborbit@dev liborbit0 libstdcII..-0@glibc... libtiBBJg libtiBBJg@dev modconB orbit procps psmisc .1 pac+ages upgraded= 0 ne"l, installed= 0 to remove and J not upgraded. Need to get K0KK)!K0KK+) oB archives. 6Bter unpac+ing --D-+) "ill be used. Do ,ou "ant to continueL MN!nO

Introduccin
$asar de una rama estable= prueba= inestable# a otra= al menos en Debian P# es bastante B(cil= se e:ecuta: A apt@get dist@upgrade o= A aptitude dist@upgrade 55 aptitude Bull@upgrade. $ara ello solo se debe cambiar el archivo sources.list para que apunte a la versi4n a la cual se quiere actualizar el sistema.

./em$#o0 Versi4n actual: deb http:!!Btp.us.debian.org!debian! testing main non@Bree contrib deb@src http:!!Btp.us.debian.org!debian! testing main non@Bree contrib Versi4n a la que se quiere me:orar: deb http:!!Btp.us.debian.org!debian! unstable main non@Bree contrib deb@src http:!!Btp.us.debian.org!debian! unstable main non@Bree contrib

Instalar desinstalar !aquetes


1nsta#acin
obe,:!home!muammarA apt@get install amsn ;eading pac+age lists... Done )uilding dependenc, tree ;eading state inBormation... Done 7he Bollo"ing eGtra pac+ages "ill be installed: amsn@data 7he Bollo"ing NEQ pac+ages "ill be installed: amsn amsn@data 0 upgraded= . ne"l, installed= 0 to remove and 0 not upgraded. Need to get 0)!JK.K+) oB archives. 6Bter this operation= --.DM) oB additional dis+ space "ill be used. Do ,ou "ant to continue MN!nOL

Instalar desinstalar !aquetes


%as siguientes opciones de apt@get podr'an ser Htiles -h -d -f -s -y -u This help text. Download only - do NOT install or unpack archives Attempt to continue if the integrity check fails No-act. Perform ordering simulation Assume es to all !ueries and do not prompt "how a list of upgraded packages as well

7ambien es posible instalar , desintalar paquetes al mismo tiempo en una sola l'nea= para ellos basta con agregar un & al Binal del paquete que desea ser desinstalado:

Instalar desinstalar !aquetes

obe,:!home!muammarA apt@get install amsn pidgin@ ;eading pac+age lists... Done )uilding dependenc, tree ;eading state inBormation... Done 7he Bollo"ing pac+ages "ere automaticall, installed and are no longer required: libpurple0 libsilc@-.-@. pidgin@data libgaduJ libhesiod0 libpurple@bin libmean"hile libzeph,rJ Ese >apt@get autoremove> to remove them. 7he Bollo"ing pac+ages "ill be ;EMCVED: pidgin pidgin@guiBications 7he Bollo"ing NEQ pac+ages "ill be installed: amsn 0 upgraded= - ne"l, installed= . to remove and 0 not upgraded. Need to get 0)!./0+) oB archives. 6Bter this operation= .0/J+) dis+ space "ill be Breed. Do ,ou "ant to continue MN!nOL

Instalar desinstalar !aquetes


Desinsta#acin
# apt-get remove gnome-panel $eading Package %ists... Done &uilding Dependency Tree... Done The following packages will 'e $()O*(D+ gnome-applets gnome-panel gnome-panel-data gnome-session , packages upgraded- , newly installed- . to remove and / not upgraded. Need to get ,& of archives. After unpacking /..0)& will 'e freed. Do you want to continue1 2 3n4 2ota0 En este caso los archivos de conBiguraci4n son de:ados intactos= es decir= no son removidos del sistema. 9i se agrega un 3 los paquetes son instalados en vez de removidos. $ara removerlos= se usa la opci4n @@purge , la l'nea quedar'a: A apt@get @@purge remove gnome@panel

Instalar desinstalar !aquetes


.#iminacin de arc4i"os de $a-uetes no uti#i5ados
Cuando 6$7 descarga los archivos necesarios listados en !etc!a$t!sources= estos son guardados en !"ar!cac4e!a$t!arc4i"es. Con el paso del tiempo este dep4sito local: -# Crecer mucho. .# Ccupar espacio en disco. $ara eliminar este espacio de manera segura sin romper la estabilidad del sistema= en Debian se dispone con a$t&get c#ean , a$t&get autoc#ean # apt-get autoclean $eading Package %ists... Done &uilding Dependency Tree... Done Del gpm /./5.0-// 2/.6k&4 Del logrotate 7.6.5-8 290.6k&4

"u# es un !aquete $deb


Definicin
Es el tipo de paquetes usado en Debian. Es interpretado por D$K*. )(sicamente son contenedores ar. %a estructura que tienen estos contenedores .deb es la siguiente: R debian@binar, @ nHmero de versi4n del Bormato deb R control.tar.gz @ toda la metainBormaci4n del paquete R data.tar.gz @ los archivos que se instalan 2ota0 los archivos instalados son precompilaciones de la arquitectura hu8sped.

%i!os de !aquetes $deb

,ing#e&binaries

- binario I documentaci4n I archivos Mu#ti$#e&binaries

n binarios a partir del mismo tarball I documentaci4n I archivos Meta Pac)ages

3nstalaci4n de n paquetes= el meta paquete solo contiene como dependencia estos n paquetes a instalar. ,ource Pac)ages

El paquete Buente S orig.tar.g5 3 .diff.g5 3 .dsc 6a$t&get source $a-uete7

&ersiones de un $deb
8b/eti"o
Entender toda la inBormaci4n que puede contener una versi4n de un paquete .deb

tcl@tlsF-:-.K.0.dBsg@1.JIb-FiJTD.deb

U6lguna idea de lo que signiBican todos esos nHmerosL

&ersiones de un $deb

2 J

&ersiones de un $deb

&ersiones de un $deb
i$
%as versiones son usadas por dp+g para resolver dependencias. En ocasiones los paquetes declaran dependencias con versiones espec'Bicas para evitar conBlictos. Con d$)g &&com$are&"ersions se puede tener una idea de c4mo dp+g interpreta las versiones. E:emplo: V dp+g @@compare@versions K...0 gt K...- 55 echo true WW echo Balse fa#se
V dp+g @@compare@versions K...0IdBsg@-..Ib- gt K...-IdBsg@. 55 echo true WW echo Balse

fa#se

Contenido de un $deb

Contenido de un $deb

9igura ms digerib#e 07

Contenido de un $deb
'control$tar$()*

Contenido de un $deb
'control$tar$() + detallado*
conffi#es es una lista de archivos de conBiguraci4n que se encuentran en !"ar!#ib!d$)g!info!. 9on dispuestos por los mantenedores para que dp+g los mantenga , pregunte si pueden ser o no sobre escritos.

contro# fi#e este archivo muestra las dependencias , cierta inBormaci4n de los paquetes.

debconf contiene un archivo conBig que no es m(s que un script que genera una serie de preguntas 5 acciones#= , un template que sirve de Brontend mantienen las traducciones#.

Maintainer scri$ts estos se encargan de conBigurar los paquetes cuando se instalan= desinstalan= o se actualizan en un sistema basado en Debian. %os maintainer scripts son:

R R R R

prerm postrm preinst postinst

Contenido de un $deb
'data$tar$()*
data.tar.gz contiene todos los archivos precompilados para las arquitecuras hu8spedes que van a ser instalados en el sistema. muammar@obe,:X!src!main!programs!eterm!e:emploV tar tvzB data.tar.gz dr"Gr@Gr@G root!root 0 .00T@01@0Y -1:-D .! dr"Gr@Gr@G root!root 0 .00T@01@0Y -1:-D .!usr! dr"Gr@Gr@G root!root 0 .00T@01@0Y -1:-D .!usr!lib! @r"@r@@r@@ root!root KKJ1DT .00T@01@0Y -1:-D .!usr!lib!libEterm@0.1.K.so @r"@r@@r@@ root!root 1K0 .00T@01@0Y -1:-D .!usr!lib!libEterm.la dr"Gr@Gr@G root!root 0 .00T@01@0Y -1:-D .!usr!share! dr"Gr@Gr@G root!root 0 .00T@01@0Y -1:-D .!usr!share!menu! @r"@r@@r@@ root!root --. .00T@0T@J- -Y:0J .!usr!share!menu!eterm dr"Gr@Gr@G root!root 0 .00T@01@0Y -1:-D .!usr!share!man! dr"Gr@Gr@G root!root 0 .00T@01@0Y -1:-D .!usr!share!man!man-! @r"@r@@r@@ root!root .--/T .00T@01@0Y -1:-D .!usr!share!man!man-!Eterm.-.gz En base a la instalaci4n de estos archivos= se genera !"ar!#ib!d$)g!$a-uete.#ist

,ntendiendo a d!k(
d$)g &i

,ntendiendo a d!k(
',stados*
%os estados de los paquetes son archivos que residen en !"ar!#ib!d$)g!status en los sistemas Debian. %os estados son: R not@installed Z paquete no instalado. R conBig@Biles Z en el sistema solo eGisten archivos de conBiguraci4n. R halB@installed Z la instalaci4n del paquete de alguna manera no se complet4. R unpac+ed Z los archivos se desempacaron pero no Bueron conBigurados. R halB@conBigured Z la conBiguraci4n Ball4. R installed Z paquete instalado completamente. d$)g es quien asigna los estados de manera autom(tica.

,ntendiendo a d!k(
',stados*
d$)g puede veriBicar los estados de los paquetes:

muammar@obe,:XV dp+g @@status amsn $ac+age: amsn 9tatus: install o+ installed $riorit,: optional 9ection: G-3nstalled@9ize: TD0 Maintainer: Muammar El Khatib [muammarel+hatib@gmail.com\ 6rchitecture: iJTD Version: 0.1/..Xdebian@;eplaces: amsn@data Depends: libcD \S ../@-#= libgcc- \S -:Y.-.-#= lib:pegD.= libpng-.@0 \S -...-J@Y#= libstdcIID \S Y.-.-#= libG--@D= zlib-g \S -:-.-.Y#= amsn@data S 0.1/..Xdebian@-#= t+T.K= tcl@tls= libsnac+. 9uggests: ice"easel W iceape W galeon W +onqueror= soG= doc+er= tclsh ConBlicts: amsn@data [S 0.1./.-Xdebian@-# Description: 6n M9N messenger "ritten in 7cl 6 ver, nice M9N compatible messenger application. Qor+s prett, much li+e its Qindo"s based counterpart. $erBect Bor +eeping in touch "ith those Briends "ho have not ,et seen the light. <omepage: http:!!amsn.sourceBorge.net!

-aintainer .cri!ts
Definicin
9on $C93] scripts e:ecutados en distintas Bases de la instalaci4n de un paquete. Dichos scripts reciben distintos argumentos tales como: R install R conBigure R remove R upgrade R purge

-aintainer .cri!ts 'An/lisis*

Diagrama de una instalaci4n eGitosa

-aintainer .cri!ts
$ero qu8 tal si algo BallaL %eer de Murph, en Qi+ipedia# 06

-aintainer .cri!ts
:u; 4ace entonces un Maintainer scri$t< 7areas requeridas para el Buncionamiento correcto de los paquetes como: R Crear!Eliminar usuarios. R Detener!E:ecutar servicios. R 2i:ar permisos de archivos. R Crear bases de datos. Cada una de las tareas o acciones= es evaluada , retorna = 4 0 si el proceso termina de manera satisBactoria o no. 6hora veamos c4mo Bunciona la desinstalaci4n de un paquete

-aintainer .cri!ts

-aintainer .cri!ts
El estado Binal de un paquete removido es config&fi#es. Por -u;< %a raz4n es que en Debian cuando se desinstala un paquete con la opci4n ^remove_ ,a sea usando apt o dp+g= se remueven todos los archivos menos los de conBiguraci4n , todos los que se encuentren en: !"ar!#ib!d$)g!info!>.conffi#es . Cmo se e#iminan #os arc4i"os de configuracin< $ara llevar a cabo esta remoci4n= es necesario usar la opci4n ^@@purge_ En la l(mina siguiente se muestra

-aintainer .cri!ts

-aintainer .cri!ts
0!(rade1com!le2o]

-aintainer .cri!ts

6hora= qu8 pasa si algo se peta durante la actualizaci4n. `@AVaa5 le, de Murph,

-aintainer .cri!ts

Conclusiones
d$)g resulta ser un mane:ador de paquetes bastante inteligente , bien elaborado en el sentido de que si algo sale mal en la instalaci4n el sistema no queda inutilizable.

9i se usa algHn sistema Debian o basado en el= errores del tipo:

d$)g de"o#"i e# estado $erencito en $ost$roceso migue#ito &uiere decir que el maintainer script Ball4 , es un bug que debe ser re$ortado. 6$7 es una herramienta que me permite descargar los paquetes desde los repositorios= , mane:arlos de manera sencilla.

9e demuestra que mucha de la estabilidad de los sistemas Debian se debe a su mane:ador de paquetes.

.itios de inter#s 3 4otas

http:!!""".debian.org http:!!muammar.me!Biles Descargar esta presentaci4n# http:!!""".debian.org!doc!debian@polic,! $olic, de Debian#

%a ma,or'a de los diagramas Bueron tomados de unas presentaciones hechas por ;en8 Ma,orga que puedes encontrar en:

http:!!rma,orga.org!tal+s! , Margarita Manterola en el "i+i de Debian Qomen: http:!!"omen.debian.org!"i+i!English!Maintainer9cripts

5r6c76s !8r 9u a:;nc7n


Cada "e5 -ue usas sistemas $ri"ati"os ?afa se saca un moco@@ Me/or em$ie5a a usar ,oftAare Bibre ya@ 07

Anda mungkin juga menyukai