Gestione dei metapacchetti: differenze tra le versioni

nessun oggetto della modifica
(+ lista metapacchetti - split da glossario)
Nessun oggetto della modifica
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili}}
==Introduzione==
==Premessa==


Con questa guida vedremo di scoprire i metapacchetti e capire come utilizzarli/gestirli nel nostro sistema. Per capire alcuni concetti spiegati si darà per sottinteso la conoscenza del funzionamento del gestore di pacchetti '''Apt-Get'''. Per chi non conoscesse il sistema o semplicemente desideri un riassunto a riguardo, vi rimando a una nostra introduzione : [[Introduzione all' Apt System]]. Il concetto base da capire è quello di ''dipendenza''.
Questa guida riguarda il solo processo di creazione dei metapacchetti, la sezione relativa all'utilizzo/gestione è stata accorpata alla guida [[Introduzione all' Apt System]].
 
==Definizione==
 
Per la definizione di metapacchetto vi rimando al nostro glossario: [[Metapacchetto]] e alla spiegazione contenuta nella guida [[Pacchetti binari e sorgenti]].
 
== Lista dei metapacchetti ==
Si può ottenere una lista completa dei metapacchetti semplicemente elencando i pacchetti che contengono la parola ''metapackage'' nei tag o nelle descrizioni:
<pre>
$ aptitude search '(~Gmetapackage|~dmetapackage)' | less
</pre>
Se si vuole avere invece una lista dei metapacchetti installati sul sistema:
<pre>
$ aptitude search '~i(~Gmetapackage|~dmetapackage)'
</pre>
A questi si aggiungono le eccezioni comprendenti i metapacchetti che riguardano l'installazione del kernel; questi sono nella forma: <code>linux-image-*</code>
<pre>
$ aptitude search ~nlinux-image-*
</pre>
che sono dei metapacchetti che dipendono sempre dall'ultimo kernel Linux disponibile per la sotto-architettura specificata. In tal modo, installando il pacchetto adatto al proprio sistema, il kernel verrà automaticamente aggiornato non appena sia disponibile una nuova versione (si passerà ad esempio dal 2.6.15 a 2.6.17). Viceversa, se non si installa il metapacchetto, il kernel non verrà mai aggiornato poiché i kernel Debian hanno la versione come parte integrante del nome del pacchetto e quindi una nuova versione viene vista come un nuovo pacchetto e non come un aggiornamento, come giusto che sia.
 
==Installazione/Rimozione==
 
Capito cosa sono i metapacchetti, ci accorgeremo subito di un problema: se per l'installazione di una ''suite'', come ad esempio ''GNOME'', l'installazione di un solo metapacchetto ci permette l'installazione di tutti i pacchetti necessari, essendo quest'ultimi tutte dipendenze del metapacchetto, se si andrà a rimuovere un pacchetto della ''suite'' in questione, il metapacchetto precedentemente installato avrà una dipendenza non soddisfatta. Questo farà sì che ad esempio [[Aptitude]] rimuoverà tutti i pacchetti della ''suite'' in quanto risultanti come dipendenze di un pacchetto che non è più installato (il metapacchetto appunto); altri comandi, come ad esempio:
 
<pre># apt-get autoremove</pre>
 
porteranno allo stesso risultato, sempre per via di dipendenze installate per un pacchetto che non esiste più.<br /><br />
 
{{Box|NOTA BENE:|questo comportamento dei pacchetti è in realtà un sistema molto ben architettato per "pulire" il sistema da pacchetti "inutili" (o meglio, per meglio dire, non più utili). Ad esempio: se ho installato il pacchetto Y per soddisfare una dipendenza del pacchetto X, eliminato X il pacchetto Y non mi servirà più, essendo stato installato unicamente per far funzionare X. Immaginando di aver appena eliminato il pacchetto X, ''Aptitude'' andrà automaticamente ad eliminare il pacchetto Y "ricordandosi" di averlo installato come dipendenza del pacchetto X. <code>apt-get autoremove</code> "vedrà" il pacchetto Y come installato da ''dipendenza'' e lo eliminerà portando allo stesso risultato.}}
 
===Installare un metapacchetto===
 
In questo caso non occorre nessuna attenzione particolare: installeremo il metapacchetto come qualsiasi altro pacchetto con il nostro gestore preferito (aptitude, apt-get, synaptic,etc.), il quale si "porterà dietro" tutti i pacchetti del caso (come sue dipendenze).
 
===Rimuovere un metapacchetto===
 
Il problema di quest'azione è riassunto all'inizio di questo capitolo.
 
====Rimuovere l'intera ''suite''====
 
Se vogliamo semplicemente eliminare tutta la ''suite'' del metapacchetto andremo semplicemente a rimuoverlo con il nostro gestore preferito. Nel caso di ''aptitude'', provvederà lui stesso ad eliminare le dipendenze (dunque i pacchetti della ''suite''); nel caso di apt-get, dopo il classico
 
<pre># apt-get purge nomemetapacchetto</pre>
 
dovremo dare ancora:
 
<pre># apt-get autoremove</pre>
 
proprio per rimuovere le dipendenze installate per il metapacchetto.
 
====Rimuovere uno o più pacchetti della ''suite''====
 
In questo caso, come già detto in precedenza, la rimozione di uno o più pacchetti della suite, porterà alla rimozione del metapacchetto principale (essendo esso stesso senza una o più dipendenze soddisfatte). A questo punto, senza il metapacchetto che faceva da "scheletro" alla ''suite'', i pacchetti di quest'ultima verranno eliminati da ''aptitude'' o da ''apt-get autoremove''.<br />
Per eliminare dunque dei pacchetti da una ''suite'' utilizzeremo ''apt-get'' e ''aptitude'' in modo combinato. Facciamo un esempio:
 
* come ''suite'' prenderemo ''GNOME''. I metapacchetti che la installano sono ''gnome'' e ''gnome-desktop-environment''
* andremo ad eliminare il pacchetto ''evolution'' della ''suite'', senza eliminare quest'ultima.
 
Inizieremo dunque con ''apt-get'':
 
<pre># apt-get purge evolution</pre>
 
Lanciato il comando andremo ad eliminare 5 pacchetti: ''gnome'', ''gnome-desktop-environment'', ''evolution'',  ''evolution-exchange'', ''evolution-plugins'', tra i quali noteremo i due metapacchetti della ''suite'' in questione. Lo stesso ''apt-get'' ci suggerirà poi di utilizzare ''apt-get autoremove'' per eliminare le dipendenze non soddisfatte (che sono però in questo caso tutti i pacchetti della ''suite''). Per mantenere questi pacchetti daremo il comando:
 
<pre># aptitude keep-all</pre>
 
che andrà ad eliminare la loro eliminazione (scusate il gioco di parole). L'opzione ''keep-all'' di ''aptitude'' cancella tutte le azioni impostate per ogni pacchetto; qualsiasi azione d'installazione, rimozione o aggiornamento verrà rimossa dallo stato di tutti i pacchetti interessati.<br /><br />
 
A questo punto, avremo la nostra ''suite'' perfettamente funzionante con le "modifiche" apportate.


==Creare un metapacchetto==
==Creare un metapacchetto==


Come abbiamo visto in precedenza, i metapacchetti sono molto utili per installare ''suite'' di programmi con un solo comando (installando il metapacchetto appunto). Con il pacchetto '''equivs''' tutto è molto semplice; incominceremo con l'installarlo:
Come noto i metapacchetti sono molto utili per installare ''suite'' di programmi con un solo comando (installando il metapacchetto appunto). Con il pacchetto '''equivs''' tutto è molto semplice; incominceremo con l'installarlo:


<pre># aptitude install equivs</pre>
<pre># aptitude install equivs</pre>
2 853

contributi