Sessió 7 curs programació linux
Sessió 10. 30-V-2008. Creación de paquets Debian
====================================
<nom_del_paquet>_<numero_de_versio>-<numero_de_revisio_debian>.deb
Exemple:
Nom del paquet: apache2.2-common
Nom del fitxer: apache2.2-common_2.2.3-3.2build1_i386.deb
Gestor de paquets synaptic
selecciono un paquet qualsevol, i amb el botód dret, propietats, veig les dependències del paquet.
apache2 és un paquet tonto (dummy), en realitat he de mirar les dependències, que diu els paquets que s'instal.laran.
$ apt-cache depends apache2-mpm-worker
apt-cache depends apache2
apache2-mpm-worker
Depén: libapr1
...........
Depén: apache2.2-common
...............
quan vull esborrar un paquet, també he de mirar la llista de paquets que s'eliminaran. Per ex, si esborro el apache, em diu que també s'esborrarà el Moodle
nautilus -> navegador de fitxers
$ nautilus -> s'obre en la teva home
$ nautilus . -> s'obre en la carpeta on estàs
ex, $ sudo apt-get install apache2
/var/cache/apt/archives -> carpeta on estan els paquets
el format típic dels paquets és .deb, i si faig doble click em trobo amb els empaquetats tar.gz i un binari (que puc obrir amb gedit per veure què hi ha).
sempre hi ha la mateixa estructura:
- control.tar.gz -> fitxers de control, metainformació del paquet. Scripts de manteniment, md5sums dels fitxers, Llista de fitxers de configuració (conffiles), Metadades (fitxer control)
- data.tar.gz -> els arxius que s'instal.len
- debian-binary-> número de versión del formato deb
http://es.wikipedia.org/wiki/Deb -> dóna informació de com es crea un paquet
el sistema md5 és ideal per saber si el fitxer ha canviat o no. El Nero,... abans de crear una imatge la compara amb la que té el servidor.
per ex,
archives$ md5sum yelp_2.14.3-2_i386.deb -> calcula la suma md5 del paquet, i obtinc un número. Amb aquest número puc saber si s'ha modificat el paquet, i quin és el fitxer que s'ha modificat.
Jerarquia dels fitxers (molt important) FHS (File Hyerarchy System)
El binari és el codi objecte (en la terminologia C), no és el codi font
Els binaris dels programes es poden trobar a:
/bin -> executables bàsics del funcionament del sistema, per ex ls
/sbin (la s és de superusuari, són els binaris que només pot executar el root)
/usr/bin i /usr/sbin : executables secundaris
llibreries:
/lib -> jerarquia ppal
/usr/lib -> jerarquia secundària
les llibreries van en paquets apart
/etc -> fitxers de configuració
/etc/skel (esquelet) -> quan es genera un nou usuari, tot el que es col.loca aquí es col.loca a la seva home (d'aquesta manera es pot definir perfils d'usuari)
/usr -> jerarquia secundària on s'emmagatzema les dades de només lectura entre els usuaris.
/usr/src -> codi font dels programes
/usr és la carpeta que ocupa més. No cal fer una còpia d'aquest arxiu perquè amb l'us de les aplicacions el seu contingut no canvia. Si reinstal.lo una aplicació la política sempre és que sempre em respectarà el fitxer de configuració antic, o bé m'ho preguntarà (sap que els fitxers no són els mateixos gràcies al md5)
/var -> dades variables
/lost+found
/proc, /boot, /opt són carpetes que en realitat estan a la RAM
Pràctica
instal.lar ksnapshot -> fa captura de pantalles
sudo apt-get install ksnapshot
dpkg -l -> ensenya tots els paquets instal.lats en el sistema
dpkg -L ksnapshot -> ensenya tots els fitxers instal.lats d'aquesta paquet.
dpkg -L ksnapshot | grep bin -> miro els executables
dpkg -L ksnapshot | grep doc -> miro la documentació.
dpkg -L ksnapshot | grep doc -> Té manual? (man)
Debian Policy
és la gran avantatge de Debian respecte altres distribucions. És una sèrie de regles que ha d'acomplir els paquets.
Garanteix la qualitat dels paquets
Practica. Debianitzarem un dimoni. Servidor d'ecos.
seguir la wiki -> http://atenea.upc.edu/moodle/mod/resource/view.php?id=285373 -> de fet és http://acacha/dyndns.org/mediawiki
svn checkout https://svn.lafarga.cpl.upc.edu/dades/svn/plinux/sessio10 -> svn
si no funciona, instal.lar subversion -> sudo apt-get install subversion
ara sí que funciona el svn, i em baixo els fitxers de la sessió 10 (login i pwd: anonymous)
[Recordem!! no utilitzar les comandes com a superusuari si no és estrictament necessari]
La carpeta sessio10 està on l'hem executat
Per començar a programar amb C, si és que no puc o hi ha un problema, és important el paquet build-essential
Instal.lem totes les eines necessàries:
$ sudo apt-get install dh-make fakeroot build-essential devscripts debhelper
dh-make -> comanda per crear paquets
$ cd sessio10
$ cp -r echoDimoni echod-0.1
$ cd echod-0.1
$ dh_make -e creador.del.paquet@exemple.com --createorig
-> es crea la carpeta /debian, on estan les plantilles que et generaran el paquet
també ha creat la carpeta sessio10/echod-0.1.orig, que és la original
dins de echod-01, faig fakeroot (root fals), que és un aplicatiu que em dóna un prompt (#), en el que executo dpkg-buildpackage que és el que comença a treballar. Fixar-se que en el prompt em surt root. Al final, exit.
$ fakeroot
- dpkg-buildpackage
des de /echod-0.1, fer ls -l .. (el paquet es crea dins de /sessio10, però jo no em moc del directori /echod-0.1)
S'ha creat el paquet echod_0.1-1_i386.deb, i echod_0.1.orig.tar.gz
cat /etc/apt/sources.list -> llista dels llocs on Debian es descarrega els paquets (aquí veiem per exemple RedIris,...)
En el centre, com fer instal.lacions de paquets per als alumnes
1a poss: sudo apt-get install -d apache2 -> et descarregues el paquet sense instal.lar-lo. Ja el tens descarregat a la màquina, i després la instal.lació és molt ràpida
2a poss: fer un mirror, i a la nit es descarreguen les actualitzacions
canviar el fitxer sources.list i que apunti a una màquina local
(funciona com un proxy de paquets)
Per ex, és interessant fer un proxy per a Windows Update.
A la carpeta /debian és on hi ha tots els fitxers i plantilles que s'han de tocar abans de generar el paquet.
(no entrar mai a la carpeta debian. Tot ho farem des de la carpeta anterior)
sudo apt-get install lintian -> paquet per saber si un paquet acompleix la política de Debian
$lintian ../echod_0.1-1_i386.deb
E: error; W: warning
$ ls -l debian/
Editem el fitxer control, que és on posem informació del paquet:
$gedit debian/control
modifico la informació, i torno a generar el paquet
tornem a passar el lintian
debhelper -> guions de shell que ajuden a construir el paquet debian
a fitxer debian/rules (l'obrim amb gedit), veig la info de les intruccions a instal.lar
ficar el paquet és obligatori per a Debyan
debchange per crear una nova versió (posar un comentari per a la nova versió):
$ debchange nova versio (sense accents)
$ gedit debian/changelog -> veig el comentari que he introduït
es pot utilitzar dch en comptes de devchange
$ dch -i -> m'obre el Joe com a editor. Puc controlar l'editor per defecte a la variable EDITOR
aquest és el fitxer que s'encarrega de guardar la informació de les coses que s'han canviat entre versions
com que estem debianitzant un dimoni, hem d'instal.lar el fitxer d'inicialització:
/etc/init.d/echod
fer-ho seguint les instruccions (...)
ara, com que sap que és un dimoni, després de la instal.lació s'executa el dimoni.
mirar instruccions per què fer després de la instal.lació i abans de la desintal.lació. Per ex, abans de la desinst. es para el servei. (postremove, preinstall)
el binari el col.loca en usr/sbin/echod, així com la documentació, i ho fa de forma automàtica.
totes les aplicacions porten manual, i hi ha una plantilla per fer-lo.
els manpages estan en format lattex, sgml (tags) o xml (tags). Però no cal saber lattex si utilizem la plantilla, perquè és fàcil identificar els textos
/debian/manpage.1.ex (lattex), /debian/manpage.sgml.ex (sgml), /debian/manpage.xml.ex (xml)
Canvio el fitxer i copio la plantilla a
$ cp debian/manpage.l.ex debian/echod.1
$ gedit debian/manpages -> fitxer que indica on estan els manuals. Ho edito i fico el nom del fitxer del manual
Ho reinstal.lo i ja tinc el man: man echod
$ ps aux | grep echod -> per comprovar que ja està funcionant el servidor d'ecos
$ sudo /etc/init.d/echod stop
$ sudo /etc/init.d/echod start
=
Modelo Vista Controlador -> http://es.wikipedia.org/wiki/Modelo_Vista_Controlador
OpenBravo: http://www.globalcomarca.com/content/view/56/105/