|
|
Riga 1: |
Riga 1: |
| Su debian abbiamo fondamentalmente due tipi di pacchetti: i binari e i
| | Spesso abbiamo la necessit� di installare la nuova versione di un pacchetto di cui proprio non possiamo fare a meno, che per� non � disponibile per il rilascio di Debian che abbiamo installato. |
| sorgenti. Partiamo dai primi.
| |
|
| |
|
| ==Pacchetti binari==
| | Il caso pi� frequente � probabilmente quello di un' installazione di Testing (Etch) con la necessit� di installare anche pacchetti presenti solo in Unstable o in Experimental, oppure di voler usare un repository con pacchetti particolari, ma compilati per una release di Debian diversa dalla nostra. |
|
| |
|
| I pacchetti binari sono archivi contenenti eseguibili, file di
| | APT � nostro fido alleato anche in questi frangenti, permettendoci di utilizzare fonti per pacchetti di releases diverse (e soddisfarne le dipendenze) senza costringerci ad un upgrade dell' intera distribuzione e senza dover impazzire per risolvere conflitti e inconsistenze. |
| configurazione e documentazione che assieme formano un'applicazione.
| |
| Sotto debian, i binari hanno il suffisso .deb (c'� la possibilit� anche
| |
| di usare rpm, ma questa � un'altra storia...).
| |
| Vediamo cosa contiene un archivio .deb:
| |
|
| |
|
| <pre> # ls
| | In questo how-to mostrer� come utilizzare pacchetti Debian provenienti da Testing, Unstable, Experimental, Marillat (multimedia/video) e Rarewares.org (multimedia/audio), ma le istruzioni sono facilmente riportabili anche ad altre situazioni (unstable + experimental, stable + testing, stable + unstable, stable + testing + unstable, ecc...). |
| apache_1.3.33-6_i386.deb
| |
| # ar -tv apache_1.3.33-6_i386.deb
| |
| rw-r--r-- 0/0 4 May 11 11:34 2005 debian-binary
| |
| rw-r--r-- 0/0 13852 May 11 11:34 2005 control.tar.gz
| |
| rw-r--r-- 0/0 369530 May 11 11:34 2005 data.tar.gz</pre>
| |
|
| |
|
| Abbiamo un file e due tarball. Procediamo estraendo questi ultimi.
| | Assicuriamoci di essere l' utente root e procediamo. |
|
| |
|
| <pre> # ar -x apache_1.3.33-6_i386.deb | | Per prima cosa editiamo il file '''/etc/apt/sources.list''' ed inseriamo gli archivi dei pacchetti Debian che utilizzeremo: |
| # ls
| | <pre> |
| apache_1.3.33-6_i386.deb control.tar.gz data.tar.gz debian-binary
| | ### Debian Ufficiale -- Sarge |
| # cat debian-binary
| | deb http://ftp.it.debian.org/debian/ testing main non-free contrib |
| 2.0</pre>
| |
|
| |
|
| Il file debian-binary stabilisce la versione del formato deb, in questo
| | ### Debian Ufficiale -- Sarge Sicurezza |
| caso la 2.0. Estraiamo gli archivi control.tar.gz e data.tar.gz.
| | deb http://security.debian.org/ testing/updates main contrib non-free |
|
| |
|
| <pre> # tar xvzf control.tar.gz
| | ### Debian Ufficiale -- Sid |
| ./
| | deb http://ftp.it.debian.org/debian/ unstable main non-free contrib |
| ./config
| |
| ./templates
| |
| ./postinst
| |
| ./preinst
| |
| ./prerm
| |
| ./postrm
| |
| ./conffiles
| |
| ./control
| |
| ./md5sums
| |
| # tar xvzf data.tar.gz
| |
| ./
| |
| ./etc/
| |
| ./etc/apache/
| |
| ./etc/apache/conf.d/
| |
| ./etc/init.d/
| |
| ./etc/init.d/apache
| |
| ./etc/logrotate.d/
| |
| ./etc/logrotate.d/apache
| |
| ./usr/
| |
| ./usr/lib/
| |
| ./usr/lib/apache/
| |
| ./usr/lib/apache/suexec.disabled
| |
| ./usr/lib/cgi-bin/
| |
| ./usr/sbin/
| |
| ./usr/sbin/apache
| |
| ./usr/sbin/apachectl
| |
| ./usr/share/
| |
| ./usr/share/bug/
| |
| ./usr/share/bug/apache/
| |
| ./usr/share/bug/apache/presubj
| |
| ./usr/share/doc/
| |
| ./usr/share/doc/apache/
| |
| ./usr/share/doc/apache/examples/
| |
| ...</pre>
| |
|
| |
|
| L'archivio control.tar.gz contiene le informazioni riguardanti il
| | ### Debian Ufficiale -- Experimental |
| pacchetto e le sue dipendenze e degli script che vengono lanciati prima
| | deb http://ftp.debian.org/debian/ ../project/experimental main |
| e dopo l'installazione o la rimozione.
| |
| Il file control contiene il nome del pacchetto, la sua versione, la
| |
| sezione, la priorit�, l'architettura per cui � stato compilato il
| |
| pacchetto, le dipendenze, il maintainer del pacchetto e la sua
| |
| descizione. Diamogli un'occhiata.
| |
|
| |
|
| <pre> # cat control
| | ### Multimedia -- Audio -- Rarewares |
| Package: apache
| | deb http://www.rarewares.org/debian/packages/unstable ./ |
| Version: 1.3.33-6
| |
| Section: web
| |
| Priority: optional
| |
| Architecture: i386
| |
| Depends: libc6 (>= 2.3.2.ds1-21), libdb4.2, libexpat1 (>= 1.95.8),
| |
| mime-support, apache-common (>= 1.3.33-6), apache-common (<< 1.3.34-0),
| |
| perl (>= 5.8.4-2), logrotate (>= 3.5.4-1), dpkg (>> 1.9.0), libmagic1,
| |
| debconf
| |
| Suggests: apache-doc
| |
| Conflicts: apache-modules, libapache-mod-perl (<= 1.17-1), jserv (<=
| |
| 1.1-3)
| |
| Replaces: apache-modules
| |
| Provides: httpd-cgi, httpd
| |
| Installed-Size: 700
| |
| Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>
| |
| Description: versatile, high-performance HTTP server
| |
| The most popular server in the world, Apache features a modular
| |
| design and supports dynamic selection of extension modules at runtime.
| |
| Some of its strong points are its range of possible customization,
| |
| dynamic adjustment of the number of server processes, and a whole
| |
| range of available modules including many authentication mechanisms,
| |
| server-parsed HTML, server-side includes, access control, CERN httpd
| |
| metafiles emulation, proxy caching, etc. Apache also supports multiple
| |
| virtual homing.
| |
| .
| |
| Separate Debian packages are available for PHP, mod_perl, Java
| |
| Servlet support, Apache-SSL, and other common extensions. More
| |
| information is available at http://www.apache.org/.</pre>
| |
|
| |
|
| Un pacchetto pu� avere priorit� required, ossia � necessario al funzionamento
| | ### Multimedia -- Video -- Marillat |
| del sistema, important, quindi costituisce la base del sistema, standard,
| | deb ftp://ftp.nerim.net/debian-marillat/ etch main |
| cio� i pacchetti comuni presenti su sistemi non troppo minimali, optional,
| | deb ftp://ftp.nerim.net/debian-marillat/ sid main |
| i pacchetti totalmente opzionali, quindi X11, Emacs, e via dicendo, e infine
| | </pre> |
| extra, che contiene pacchetti aventi caratteristiche particolari che li
| |
| distinguono dagli optional.
| |
| Oltre alle dipendenze vere e proprie(nel caso di sopra le libc, dpkg,
| |
| debconf, ecc.), abbiamo anche altri pacchetti citati, ossia i suggested
| |
| packages, quindi quelli che possono funzionare bene assieme al pacchetto
| |
| che si sta installando, i recommended, che comunemente vengono
| |
| installati assieme a quest'ultimo, i conflicts e i replaced packages,
| |
| rispettivamente i pacchetti con cui va in contrasto e che sostituisce, e
| |
| infine i provided services, i servizi che il pacchetto fornisce (in
| |
| questo caso, demone http con supporto cgi).
| |
| Guardiamo ora conffiles:
| |
|
| |
|
| <pre> # cat conffiles
| | A questo punto dobbiamo preparare due files normalmente non presenti sulla nostra debianbox: si tratta dei file '''preferences''' e '''apt.conf'''. |
| /etc/init.d/apache
| | Questi due file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo su come comportarsi in caso di conflitti e altri problemi. |
| /etc/logrotate.d/apache</pre>
| |
|
| |
|
| Vengono elencati i file di configurazione che verrano creati.
| | Creiamo il file preferences: |
| Gli scripts di cui parlavo prima sono postinst, postrm, preinst e prerm,
| | <pre> |
| che si occupano come gi� detto delle operazione pre e post
| | # touch /etc/apt/preferences |
| installlazione/rimozione.
| | </pre> |
| | editiamolo col nostro editor di fiducia e inseriamo queste direttive: |
| | <pre> |
| | Package: * |
| | Pin: release o=xmixahlx |
| | Pin-Priority: 950 |
|
| |
|
| L'archivio data.tar.gz contiene tutti i file che verranno effettivamente
| | Package: * |
| disposti nel filesystem.
| | Pin: release o=Unofficial Multimedia Packages |
| Diamo per esempio un'occhiata alla directory usr:
| | Pin-Priority: 900 |
|
| |
|
| <pre> # ls
| | Package: * |
| apache_1.3.33-6_i386.deb control.tar.gz md5sums prerm
| | Pin: release a=testing |
| conffiles data.tar.gz postinst templates
| | Pin-Priority: 850 |
| config debian-binary postrm usr
| |
| control etc preinst var
| |
| # ls usr
| |
| lib sbin share
| |
| # ls usr/sbin
| |
| apache apacheconfig apachectl</pre>
| |
|
| |
|
| ==Pacchetti sorgenti== | | Package: * |
| | Pin: release a=unstable |
| | Pin-Priority: 800 |
|
| |
|
| I pacchetti sorgenti sono costituiti da due archivi e un file di testo:
| | Package: * |
| un file .dsc che descrive il pacchetto, un archivio .orig.tar.gz che
| | Pin: release a=experimental |
| contiene i sorgenti originali del software, e un .diff.gz contenente le
| | Pin-Priority: 750 |
| patch applicate da debian al pacchetto.
| | </pre> |
|
| |
|
| <pre> # apt-get source irssi-text
| | Il pinning pu� essere orientato ad un archivio, un'origine, la versione di un pacchetto, un componente, ecc... |
| Reading Package Lists... Done
| |
| Building Dependency Tree... Done
| |
| Need to get 1168kB of source archives.
| |
| Get:1 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (dsc)
| |
| [691B]
| |
| Get:2 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (tar)
| |
| [1154kB]
| |
| Get:3 http://ftp.de.debian.org unstable/main irssi-text 0.8.9-3 (diff)
| |
| [13.9kB]
| |
| Fetched 1168kB in 11s (103kB/s)
| |
| dpkg-source: extracting irssi-text in irssi-text-0.8.9
| |
| # ls
| |
| irssi-text-0.8.9 irssi-text_0.8.9-3.dsc
| |
| irssi-text_0.8.9-3.diff.gz irssi-text_0.8.9.orig.tar.gz</pre>
| |
|
| |
|
| Il file .dsc contiene la versione del software, l'architettura per cui �
| | Con '''"o="''' si specifica l' origine (la distribuzione) del pacchetto, con '''"a="''' l'archivio (sarge,sid, stable, ecc...). |
| stato scritto, la dipendenze da soddisfare e gli hash dei due archivi
| |
| per verificarne l'integrit�.
| |
|
| |
|
| <pre> # cat irssi-text_0.8.9-3.dsc
| | Questo dato � reperibile in modo inequivocabile attraverso APT, andando a sbirciare all'interno del file "Release" che � contenuto in tutti i repository ufficiali. Per archivi personali e/o non ufficiali, invece, non � sempre e necessariamente presente (purtroppo). |
| -----BEGIN PGP SIGNED MESSAGE-----
| |
| Hash: SHA1
| |
|
| |
|
| Format: 1.0
| | Vediamo alcuni esempi: |
| Source: irssi-text
| |
| Version: 0.8.9-3
| |
| Binary: irssi-text
| |
| Maintainer: David Pashley <david@davidpashley.com>
| |
| Architecture: any
| |
| Standards-Version: 3.6.1
| |
| Build-Depends: libglib2.0-dev, perl (>= 5.8.1), libperl-dev (>= 5.8.1),
| |
| libncurses5-dev, debhelper (>= 3.0.18), libssl-dev, openssl,
| |
| autotools-dev
| |
| Files:
| |
| 1df516a770656ff0bec0ab62f9096bf6 1153560 irssi-text_0.8.9.orig.tar.gz
| |
| 37f128f0dafa596c006090a1036ec9b2 13944 irssi-text_0.8.9-3.diff.gz
| |
|
| |
|
| -----BEGIN PGP SIGNATURE-----
| | <pre> |
| Version: GnuPG v1.2.5 (GNU/Linux)
| | # cd /var/lib/apt/lists |
| | # cat www.rarewares.org_debian_packages_unstable_._Release |
| | Archive: unstable |
| | Origin: xmixahlx |
| | Label: xmixahlx_rarewares-unstable |
| | Architecture: i386 |
|
| |
|
| iD8DBQFCQU0ffDt5cIjHwfcRAoApAKCL5BUc7i9X3iQIQyapUJboWF9IPACgrWPd
| | # cat ftp.nerim.net_debian-marillat_dists_testing_main_binary-i386_Release |
| /t+qP8OkRmh1e6mUH8wz+ic=
| | Archive: testing |
| =TYfB
| | Component: main |
| -----END PGP SIGNATURE-----</pre>
| | Origin: Unofficial Multimedia Packages |
| | Label: Unofficial Multimedia Packages |
| | Architecture: i386 |
| | </pre> |
|
| |
|
| I file di control gi� visti nei pacchetti binari sono anche qui,
| | Dove: |
| contenuti nella cartella debian dell'archivio. | | * '''Archive''' = � l' archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc...); |
| | * '''Component''' = indica il tipo di componente (ad es.: main, contrib, non-free); |
| | * '''Origin''' = specifica il proprietario del repository; |
| | * '''Label''' = identifica il repository: potete inserire descrizioni, ecc...; |
| | * '''Architecture''' = l'architettura dei pacchetti contenuti nel repository (ad es.: i386, sparc, source, ecc...). |
|
| |
|
| <pre> # ls irssi-text-0.8.9
| | Possiamo vedere che nel file Release � contenuto proprio il dato che stavamo cercando: Origin. |
| AUTHORS README.cygwin config.sub findsyntax.pl ltmain.sh
| |
| COPYING TODO configure install-sh missing
| |
| ChangeLog acconfig.h configure.in irssi-config.in mkinstalldirs
| |
| INSTALL aclocal.m4 curses.m4 irssi-icon.png scripts
| |
| Makefile.am autogen.sh debian irssi-version.h.in src
| |
| Makefile.in colorless.theme default.theme irssi.conf stamp-h.in
| |
| NEWS config.guess docs irssi.spec stamp.h.in
| |
| README config.h.in file2header.sh irssi.spec.in syntax.pl
| |
| # ls irssi-text-0.8.9/debian
| |
| botti.1 conffiles copyright irssi-text.postinst prerm undocumented
| |
| changelog control dirs menu rules</pre>
| |
|
| |
| Nel caso si stia installando un pacchetto sorgente, � bene non seguire
| |
| la procedura ./configure;make;make install; perch� il pacchetto non
| |
| verr� tracciato, non si potr� prenderne informazioni tramite dpkg-query
| |
| e per la rimozione bisogner� procedere manualmente, con il rischio di
| |
| 'sporcare' la distro.
| |
| E' meglio usare strumenti quali dpkg-buildpackage e apt-build (per
| |
| cui rimando alle pagine di man) per avere i vantaggi della compilazione
| |
| senza 'sporcare' il sistema.
| |
|
| |
|
| ==Metapacchetti==
| | Ora creiamo il file apt-conf |
|
| |
|
| Esiste un tipo particolare di pacchetto detto metapacchetto. Questo � un
| | <pre> |
| pacchetto che in realt� non contiene alcun eseguibile o sorgente. Serve
| | # touch /etc/apt/apt.conf |
| semplicemente per installare tutto l'insieme di pacchetti (a volte a
| | </pre> |
| loro volta metapacchetti) che lo costituisce.
| |
| Un esempio � kde:
| |
|
| |
|
| <pre> # ls -l
| | editiamolo inserendo quanto segue: |
| total 6348
| |
| -rw-r--r-- 1 root root 6486276 Jan 26 17:32 kdebase_2.2.2-14.9_i386.deb</pre>
| |
|
| |
|
| Gi� le dimensioni lasciano presagire qualcosa: come pu� un pacchetto
| | <pre> |
| come kdebase occupare solo poco pi� di 6 Mb? Spacchettiamolo:
| | APT::Default-Release "testing"; |
| | APT::Cache-Limit 10000000; |
| | Apt::Get::Purge; |
| | APT::Clean-Installed; |
| | APT::Get::Fix-Broken; |
| | APT::Get::Fix-Missing; |
| | APT::Get::Show-Upgraded "true"; |
| | </pre> |
|
| |
|
| <pre> # ar -x kdebase_2.2.2-14.9_i386.deb
| | Facciamo l' update del database dei pacchetti: |
| # ls
| |
| control.tar.gz data.tar.gz debian-binary kdebase_2.2.2-14.9_i386.deb
| |
| # tar xvzf data.tar.gz
| |
| ./
| |
| ./usr/
| |
| ./usr/share/
| |
| ./usr/share/doc/
| |
| ./usr/share/doc/kdebase/
| |
| ./usr/share/doc/kdebase/README.pam
| |
| ./usr/share/doc/kdebase/README.Debian
| |
| ./usr/share/doc/kdebase/copyright
| |
| ./usr/share/doc/kdebase/README.gz
| |
| ./usr/share/doc/kdebase/changelog.Debian.gz
| |
| ./usr/share/doc/kde/
| |
| ./usr/share/doc/kde/HTML/
| |
| ./usr/share/doc/kde/HTML/en/
| |
| ./usr/share/doc/kde/HTML/en/kcontrol/
| |
| ./usr/share/doc/kde/HTML/en/kdebugdialog/
| |
| ./usr/share/doc/kde/HTML/en/kdesu/
| |
| ./usr/share/doc/kde/HTML/en/kdm/
| |
| ./usr/share/doc/kde/HTML/en/khelpcenter/
| |
| ./usr/share/doc/kde/HTML/en/khelpcenter/faq/
| |
| ./usr/share/doc/kde/HTML/en/khelpcenter/glossary/
| |
| ./usr/share/doc/kde/HTML/en/khelpcenter/quickstart/
| |
| ./usr/share/doc/kde/HTML/en/khelpcenter/userguide/
| |
| ./usr/share/doc/kde/HTML/en/khelpcenter/visualdict/
| |
| ...</pre>
| |
|
| |
|
| L'archivio data.tar.gz contiene solo documentazione e delle librerie.
| | <pre> |
| Diamo un'occhiata al control:
| | # apt-get update |
| | </pre> |
|
| |
|
| <pre> station:/opt# tar xvzf control.tar.gz
| | D'ora in avanti avremo due possibilit� per installare un nuovo pacchetto: il metodo che usiamo di solito e cio�: |
| ./
| |
| ./shlibs
| |
| ./postinst
| |
| ./preinst
| |
| ./prerm
| |
| ./postrm
| |
| ./conffiles
| |
| ./md5sums
| |
| ./control
| |
| station:/opt# cat control
| |
| Package: kdebase
| |
| Version: 4:2.2.2-14.9
| |
| Section: x11
| |
| Priority: optional
| |
| Architecture: i386
| |
| Depends: kdelibs3 (>= 4:2.2.2-1), libc6 (>= 2.2.4-4), libfam0,
| |
| libjpeg62, libkonq3 (>= 4:2.2.2-14.9), libpng2(>=1.0.12), libqt2 (>=
| |
| 3:2.3.1-1), libstdc++2.10-glibc2.2 (>= 1:2.95.4-0.010810), xlibs (>>
| |
| 4.1.0), zlib1g (>= 1:1.1.4), debianutils (>= 1.6), xfree86-common,
| |
| libpam-modules, kdewallpapers, kdebase-libs (= 4:2.2.2-14.9)
| |
| Recommends: kdebase-doc, konqueror, konsole, kate | kedit | kword,
| |
| libarts | libarts-alsa, kdebase-audiolibs | kdebase3-audiolibs, kscreensaver
| |
| Suggests: menu (>=1.5-5), kdm | x-display-manager, kde-i18n,
| |
| libpam-cracklib, xscreensaver, xscreensaver-gl, xearth, xplanet, usbutils
| |
| Provides: x-session-manager
| |
| Installed-Size: 16280
| |
| Maintainer: Christopher L Cheney <ccheney@debian.org>
| |
| Description: KDE core applications
| |
| This is a suite of all kde core applications :
| |
| Includes: kicker, kwin, kdesktop and others...</pre>
| |
|
| |
|
| In realt�, vediamo che a costituire il cuore di kde sono le sue
| | <pre> |
| dipendenze. Senza i metapacchetti bisognerebbe installare uno per uno i
| | # apt-get install nome_pacchetto |
| pacchetti che costituiscono kde.
| | </pre> |
|
| |
|
| | che utilizzer pacchetti proveniente dalla versione impostata come '''Default-Release''' in '''apt.conf''', oppure il comando |
|
| |
|
| | <pre> |
| | # apt-get install -t versione_di_debian nome_pacchetto |
| | </pre> |
|
| |
|
| ---- [[User:sync|sync]] | | che provveder� a installare il pacchetto da noi richiesto per la versione specificata (versione_debian), risolvendo automaticamente le dipendenze. |
| [[Categoria:Apt-Dev]] | | |
| | Happy debian! |
| | |
| | ---- |
| | |
| | Autore: [[User:Keltik|Keltik]]<br> |
| | Revisione: [[User:Nest|Nest]] <br> |
| | Verificato: [[Utente:TheNoise|~ The Noise]] |