Sunteți pe pagina 1din 64

Împachetare Debian

Tech Talks

Alex Eftimie
alex@rosedu.org

ROSEdu

16 decembrie 2009
1 Introducere

2 Not, iuni generale

3 Pachete .deb

4 Eyecandiness

5 Depozit personal

6 Demonstrat, ie
1 Introducere

2 Not, iuni generale

3 Pachete .deb

4 Eyecandiness

5 Depozit personal

6 Demonstrat, ie
Introducere - de unde pornim
Introducere - de unde pornim

O mare de programe; nu ne plac arhivele .tar.gz


Introducere - de unde pornim

O mare de programe; nu ne plac arhivele .tar.gz

Preconcept, ii despre ı̂mpachetare:


Introducere - de unde pornim

O mare de programe; nu ne plac arhivele .tar.gz

Preconcept, ii despre ı̂mpachetare:

este un proces dificil, generator de erori


Introducere - de unde pornim

O mare de programe; nu ne plac arhivele .tar.gz

Preconcept, ii despre ı̂mpachetare:

este un proces dificil, generator de erori


are multe dependent, e
Introducere - de unde pornim

O mare de programe; nu ne plac arhivele .tar.gz

Preconcept, ii despre ı̂mpachetare:

este un proces dificil, generator de erori


are multe dependent, e
presupune ı̂nvăt, area mai multe scripturi
1 Introducere

2 Not, iuni generale

3 Pachete .deb

4 Eyecandiness

5 Depozit personal

6 Demonstrat, ie
Sistem de pachete - de ce?
Sistem de pachete - de ce?

economie de spat, iu s, i timp


Sistem de pachete - de ce?

economie de spat, iu s, i timp

versionare
Sistem de pachete - de ce?

economie de spat, iu s, i timp

versionare

dependent, e
Sistem de pachete - de ce?

economie de spat, iu s, i timp

versionare

dependent, e

platforme
ı̂n prezent, Debian suportă 11 platforme, printre care: i386,
amd64, arm, atom, powerpc
Cum funct, ionează
Repository - pentru utilizatori

o bază de pachete
pentru o versiune a distribut, iei
Ubuntu: jaunty, karmic, lucid ..., Debian: stable, unstable,
testing
grupare pe componente
main - pachete ment, inute de Canonical
universe - comunitatea
restricted - drivere closed source
multiverse - codecuri cu probleme de copyright
binar sau sursă

o linie ı̂n /etc/apt/sources.list


deb http://archive.ubuntu.com/ubuntu/ karmic main universe restricted multiverse
deb-src http://archive.ubuntu.com/ubuntu/ karmic main universe restricted multiverse
1 Introducere

2 Not, iuni generale

3 Pachete .deb

4 Eyecandiness

5 Depozit personal

6 Demonstrat, ie
Tipuri de pachete

binare
sursă

reale
virtuale
Exemplu: ubuntu-desktop, upb-programare
Ce este un .deb?
Ce este un .deb?

o arhivă .ar care cont, ine:


Ce este un .deb?

o arhivă .ar care cont, ine:


data.tar.gz
changelog
fis, ierele propriu-zise
Ce este un .deb?

o arhivă .ar care cont, ine:


data.tar.gz
changelog
fis, ierele propriu-zise
control.tar.gz
md5sums
informat, ii despre pachet: versiune, responsabil, dependent, e
postinst, postrm
Generarea de pachete .deb

Pachete necesare: dh-make, devscripts


Generarea de pachete .deb

Pachete necesare: dh-make, devscripts

Într-un dosar cu numele numeprogram-versiune , rulăm


dh make
Generarea de pachete .deb

Pachete necesare: dh-make, devscripts

Într-un dosar cu numele numeprogram-versiune , rulăm


dh make
Obt, inem un dosar debian cu următoarele:
control
changelog
compat
dirs
rules
...

S, i alte fis, iere .ex, care nu ne interesează momentan.


debian/control (exemplu)

Source: jeopardy-client
Section: gnome
Priority: extra
Maintainer: Alex Eftimie <alex@eftimie.ro>
Build-Depends: debhelper (>= 7)
Standards-Version: 3.8.1

Package: jeopardy-client
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Simple jeopardy game client
A simple client for a jeopardy game, developed for the USO
debian/changelog (exemplu)

jeopardy-client (0.3-2) unstable; urgency=low

* Load questions at login


* Bigger window, sorted top

-- Alex Eftimie (alexef) <alex@eftimie.ro> Mon, 16 Nov 20

jeopardy-client (0.3-1) unstable; urgency=low

* Fixed terminate bug, score update


* Game over
* Code beautification

-- Alex Eftimie <alex@eftimie.ro> Fri, 13 Nov 2009 23:23:


...
debian/dirs s, i debian/compat (exemple)

dirs:
usr/bin
usr/share/jeopardy-client
usr/share/applications/
compat:
7
debian/rules (exemplu)

#!/usr/bin/make -f
# -*- makefile -*-
...
configure:
...
build:
...
install:
...

dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
Generarea de pachete .deb (cont.)

Pas, i:
Generarea de pachete .deb (cont.)

Pas, i:
Exportăm VERSION, DEBFULLNAME, DEBEMAIL
Generarea de pachete .deb (cont.)

Pas, i:
Exportăm VERSION, DEBFULLNAME, DEBEMAIL
Aducem toate fis, ierele ı̂ntr-un dosar numepachet-versiunea
Generarea de pachete .deb (cont.)

Pas, i:
Exportăm VERSION, DEBFULLNAME, DEBEMAIL
Aducem toate fis, ierele ı̂ntr-un dosar numepachet-versiunea
Creăm numepachet.orig.tar.gz
Generarea de pachete .deb (cont.)

Pas, i:
Exportăm VERSION, DEBFULLNAME, DEBEMAIL
Aducem toate fis, ierele ı̂ntr-un dosar numepachet-versiunea
Creăm numepachet.orig.tar.gz
Aducem s, i dosarul debian/
Generarea de pachete .deb (cont.)

Pas, i:
Exportăm VERSION, DEBFULLNAME, DEBEMAIL
Aducem toate fis, ierele ı̂ntr-un dosar numepachet-versiunea
Creăm numepachet.orig.tar.gz
Aducem s, i dosarul debian/
Apelăm sudo dpkg-buildpackage
Generarea de pachete .deb (cont.)

Pas, i:
Exportăm VERSION, DEBFULLNAME, DEBEMAIL
Aducem toate fis, ierele ı̂ntr-un dosar numepachet-versiunea
Creăm numepachet.orig.tar.gz
Aducem s, i dosarul debian/
Apelăm sudo dpkg-buildpackage

Felicitări, am obt, inut: numepachet versiunea.deb!


Generarea de pachete .deb (cont.)

Pas, i:
Exportăm VERSION, DEBFULLNAME, DEBEMAIL
Aducem toate fis, ierele ı̂ntr-un dosar numepachet-versiunea
Creăm numepachet.orig.tar.gz
Aducem s, i dosarul debian/
Apelăm sudo dpkg-buildpackage

Felicitări, am obt, inut: numepachet versiunea.deb!


... evident, putem s, i vom face toate asta printr-un script
Observat, ii

pe lângă .deb, am obt, inut:


un fis, ier .dsc - control, semnat
un fis, ier .changes - changelog + md5sum
Observat, ii

pe lângă .deb, am obt, inut:


un fis, ier .dsc - control, semnat
un fis, ier .changes - changelog + md5sum
Vor fi folosite la upload ı̂n repository.
Observat, ii 2 - GPG

GNU Privacy Guard - semnarea pachetelor


Trebuie să avem configurată o pereche de chei pentru
decriptare s, i criptare
Link ı̂n Bibliografie
Numele proprietarului cheii să corespundă cu numele din
changelog
Cheia se publică pe un server de chei
1 Introducere

2 Not, iuni generale

3 Pachete .deb

4 Eyecandiness

5 Depozit personal

6 Demonstrat, ie
Eyecandiness

meniuri - fis, iere .desktop


pictograme - stock icons
Fis, iere .desktop

Meniuri (atât KDE, cât s, i Gnome); grupare automată ı̂n


funct, ie de categorie
Scurtături pe spat, iul de lucru
Localizate ı̂n /usr/share/applications/
Fis, iere .desktop

Meniuri (atât KDE, cât s, i Gnome); grupare automată ı̂n


funct, ie de categorie
Scurtături pe spat, iul de lucru
Localizate ı̂n /usr/share/applications/

Exemplu:
[Desktop Entry]
Name=Jeopardy
GenericName=Jeopardy
Icon=/usr/share/icons/gnome/scalable/emotes/face-monkey.svg
Comment=a jeopardy game client
Exec=jeopardy-client
Terminal=false
StartupNotify=false
Type=Application
Categories=Game;Simulation;
Pictograme

Imagini PNG sau SVG


Localizate ı̂n /usr/share/
Dimensiuni standard: 24x24, 32x32, 48x48 ...
O gama largă ı̂n Stock Icons
1 Introducere

2 Not, iuni generale

3 Pachete .deb

4 Eyecandiness

5 Depozit personal

6 Demonstrat, ie
Ce este un repository de fapt?
Ce este un repository de fapt?

Doar o structură standard de directoare


Ce este un repository de fapt?

Doar o structură standard de directoare

Se poate servi peste HTTP sau FTP


Ce este un repository de fapt?

Doar o structură standard de directoare

Se poate servi peste HTTP sau FTP

Nu are un server dinamic ı̂n spate; poate sta pe un CD-ROM


Structura de fis, iere a unui repository

+-conf
+-db
+-dists
|-codename
| |-main
| | |-binary-i386
| | | |-Packages
| | | |-Packages.gz
| | | |-Release
| | |-binary-...
| | +-source
| |-contrib
| | |-binary-...
| ...
+-incoming
+-pool
|-main
| |-a
| |-b
| |-c
| |-...
Configurarea unui repository

Necesar: pachetul reprepro


Configurarea unui repository

Necesar: pachetul reprepro

Creăm un dosar, i.e. apt, vizibil peste HTTP, i.e.


/home/alex/public html/apt
Configurarea unui repository

Necesar: pachetul reprepro

Creăm un dosar, i.e. apt, vizibil peste HTTP, i.e.


/home/alex/public html/apt
Creăm ı̂n apt, un dosar incoming s, i unul conf
Configurarea unui repository

Necesar: pachetul reprepro

Creăm un dosar, i.e. apt, vizibil peste HTTP, i.e.


/home/alex/public html/apt
Creăm ı̂n apt, un dosar incoming s, i unul conf
Configurăm conf/distribution (vezi slide-ul următor)
Configurarea unui repository

Necesar: pachetul reprepro

Creăm un dosar, i.e. apt, vizibil peste HTTP, i.e.


/home/alex/public html/apt
Creăm ı̂n apt, un dosar incoming s, i unul conf
Configurăm conf/distribution (vezi slide-ul următor)
Includem pachete, printr-o simplă comandă: (structura de
fis, iere va fi actualizată automat)
reprepro -Vb . includedeb numedecod pachet.deb
Configurarea unui repository

Necesar: pachetul reprepro

Creăm un dosar, i.e. apt, vizibil peste HTTP, i.e.


/home/alex/public html/apt
Creăm ı̂n apt, un dosar incoming s, i unul conf
Configurăm conf/distribution (vezi slide-ul următor)
Includem pachete, printr-o simplă comandă: (structura de
fis, iere va fi actualizată automat)
reprepro -Vb . includedeb numedecod pachet.deb
Va trebui să configurăm upload, prin dupload
Repository conf/distribution (exemplu)

Origin: Prenume Nume


Label: label
Suite: unstable
Codename: numedecod
Version: 0.1
Architectures: i386 all source
Components: main non-free contrib
Description: a simple but useful repo
Dupload

Face upload unui pachet ı̂n repository, folosind ssh sau ftp
Un fis, ier de configurare, ~
/.dupload.conf
package config;
$config::cfg{’myrepo’} = {
fqdn => "repo.com",
login => "username",
method => "scpb",
incoming => "/home/alex/public_html/apt/incoming/",
dinstall\_runs => 1
};
$config::cfg{’myrepo’}{preupload}{’changes’} = ’/bin/true’;
Comanda este simplă: dupload --to myrepo
numeprogram-versiunea.changes
Observat, ie: pe server va trebui să facem importdeb, de preferat ı̂n cron
1 Introducere

2 Not, iuni generale

3 Pachete .deb

4 Eyecandiness

5 Depozit personal

6 Demonstrat, ie
Bibliografie / Legături

https://help.ubuntu.com/community/GnuPrivacyGuardHowto
http://library.gnome.org/devel/gtk/unstable/gtk-Stock-Items.html#
GTK-STOCK-ABOUT:CAPS
http://www.debian.org/doc/manuals/repository-howto/
repository-howto.en.html
The end
The end

Buh bye

S-ar putea să vă placă și