I repository ed il loro utilizzo: differenze tra le versioni

Riga 121: Riga 121:


Prima di procedere nella descrizione operativa del pinning è '''fondamentale''' capire come gestisce la priorità dei pacchetti APT e sapere che:
Prima di procedere nella descrizione operativa del pinning è '''fondamentale''' capire come gestisce la priorità dei pacchetti APT e sapere che:
* col termine distribuzione si intendono stable, testing e unstable. Ciascuna distribuzione ha un suo singolo repository (due se si conteggia anche l'eventuale repository dedicato agli aggiornamenti di sicurezza).
* Col termine distribuzione si intendono stable, testing e unstable. Ciascuna distribuzione ha un suo singolo repository (fonte) principale (due se si conteggia anche l'eventuale repository dedicato agli aggiornamenti di sicurezza) che è quello automaticamente dichiarato dall'installer di debian, ma si tenga presente che ogni distribuzione può avere più fonti sia ufficiali che non ufficiali.
* col termine fonti si intendono genericamente i repository, ufficiali (es. stable, testing, unstable e backports) o meno (es. deb-multimedia), che forniscono pacchetti relativi ad una o più distribuzioni.
* Col termine fonti si intendono genericamente i repository, ufficiali (es. stable, testing, unstable e backports) o meno (es. deb-multimedia), che forniscono pacchetti relativi ad una o più distribuzioni. Ogni fonte può avere più copie di se stesso (mirrors).
* Il pinning nasce come strumento per regolare la priorità in base al numero di versione dei pacchetti, e non alla loro fonte. È tuttavia possibile gestire anche questo secondo caso, almeno in parte, prestando attenzione.
* Il pinning nasce come strumento per regolare la priorità in base al numero di versione dei pacchetti, e non alla loro fonte. È tuttavia possibile gestire anche questo secondo caso, almeno in parte, prestando attenzione.


Riga 150: Riga 150:
La soluzione è, come facilmente intuibile, quella di assegnare manualmente un punteggio ai vari pacchetti, singolarmente o raggruppandoli. Prima però è necessario capire il significato dei vari punteggi (pin). Nel seguito si indicherà col termine "candidato" il pacchetto o gruppo di pacchetti proveniente dalla generica fonte dichiarata nel file <code>sources.list</code>.
La soluzione è, come facilmente intuibile, quella di assegnare manualmente un punteggio ai vari pacchetti, singolarmente o raggruppandoli. Prima però è necessario capire il significato dei vari punteggi (pin). Nel seguito si indicherà col termine "candidato" il pacchetto o gruppo di pacchetti proveniente dalla generica fonte dichiarata nel file <code>sources.list</code>.


* Pin minore di 0 (negativo), l’installazione del candidato è impedita a priori (salvo apposito comando).
* Pin '''minore di 0''' (negativo), l’installazione del candidato è impedita a priori (salvo apposito comando).
* Pin compreso tra 1 e 99, il candidato sarà installato solo se sono verificate entrambe le seguenti due condizioni: primo non esistono candidati appartenenti ad altre distribuzioni, secondo nel sistema non è già installata una versione (anche inferiore) del candidato.
* Pin compreso '''tra 1 e 99''', il candidato sarà installato solo se sono verificate entrambe le seguenti due condizioni: primo non esistono candidati appartenenti ad altre distribuzioni, secondo nel sistema non è già installata una versione (anche inferiore) del candidato.
* Pin compreso tra 100 e 499, il candidato sarà installato solo se non esistono candidati appartenenti ad altre distribuzioni e se la versione eventualmente già installata non è superiore a quella del candidato.
* Pin compreso tra 100 e 499, il candidato sarà installato solo se non esistono candidati appartenenti ad altre distribuzioni e se la versione eventualmente già installata non è superiore a quella del candidato.
* Pin compreso tra 500 e 989, il candidato sarà installato solo se non esistono candidati appartenenti alla distribuzione obiettivo e se la versione eventualmente già installata non è superiore a quella del candidato. Si noti che il semplice fatto di aver installato una certa distribuzione, per esempio testing, non significa aver definito la distribuzione obiettivo, che può essere solo definita manualmente dall'utente (il come sarà spiegato nella discussione del file <code>apt.conf</code>).
* Pin compreso '''tra 500 e 989''', il candidato sarà installato solo se non esistono candidati appartenenti alla distribuzione obiettivo e se la versione eventualmente già installata non è superiore a quella del candidato. Si noti che il semplice fatto di aver installato una certa distribuzione, per esempio testing, non significa aver definito la distribuzione obiettivo, che può essere solo definita manualmente dall'utente (il come sarà spiegato nella discussione del file <code>apt.conf</code>).
* Pin compreso tra 990 e 999, il candidato sarà installato solo se non esistono altri candidati con pin maggiore e se la versione eventualmente già installata non è superiore a quella del candidato.
* Pin compreso tra '''990 e 999''', il candidato sarà installato solo se non esistono altri candidati con pin maggiore e se la versione eventualmente già installata non è superiore a quella del candidato.
* Pin 1000 o superiore, il candidato sarà installato se non esistono altri candidati con pin maggiore, è quindi possibile la retrocessione di versione (downgrade) se la versione eventualmente già installata è superiore a quella del candidato. Es. è possibile installare la versione 1.1 di un pacchetto anche se ad essere già installata è la 1.2 o superiore.
* Pin '''1000 o superiore''', il candidato sarà installato se non esistono altri candidati con pin maggiore, è quindi possibile la retrocessione di versione (downgrade) se la versione eventualmente già installata è superiore a quella del candidato. Es. è possibile installare la versione 1.1 di un pacchetto anche se ad essere già installata è la 1.2 o superiore.


=== Il file /etc/apt/apt.conf ===
=== /etc/apt/apt.conf ===
<pre>
 
APT::Default-Release "testing";
Questo file insieme ad altri permette di definire le opzioni di APT e relativi strumenti senza bisogno di digitarli sempre da riga di comando. Si vedano le guide dedicate ad [[Apt-get | Apt-Get]] e [[Aptitude]] per alcuni brevi esempi contenenti alcui dei parametri più comuni.
APT::Cache-Limit 24000000;
Per quanto riguarda il pinning l'unico parametro strettamente di rilievo è:
Apt::Get::Purge;
 
APT::Clean-Installed;
<pre>APT::Default-Release "distribuzione_voluta";</pre>
APT::Get::Fix-Broken;
 
APT::Get::Fix-Missing;
che equivale alla dichiarazione in riga di comando dell'opzione '''-t distribuzione_voluta''' sia in [[Apt-get | Apt-Get]] che [[Aptitude]]. Tale dichiarazione attribuisce priorità 990 a tutti i pacchetti appartenenti alla distribuzione specificata
APT::Get::Show-Upgraded "true";
 
APT::Force-LoopBreak=true;
{{Warningbox|Tale priorità di applica alla distribuzione e non alla fonte, quindi ad ottenere la suddetta priorità non saranno solo i pacchetti appartenenti al repository ufficiale (o ai due repository ufficiali), ma anche quelli provenienti da altre fonti se contrassegnati dal gestore del repository come appartenenti alla tal distribuzione}}
APT::Get::AllowUnauthenticated 1;
</pre>
Andiamo ad analizzare questo esempio riga per riga:
# specifichiamo la versione di Debian predefinita, quella che vogliamo utilizzare di default (nel mio caso e negli esempi successivi la testing);
# specifichiamo la dimensione della cache;
# ordiniamo il purge dei pacchetti;
# ordiniamo la pulizia della cache;
# chiediamo di sistemare automaticamente i pacchetti che presentano dipendenze non soddisfatte;
# chiediamo di sistemare i pacchetti non possibili da installare;
# chiediamo di mostrare gli upgrade dei pacchetti;
# chiediamo di forzare il ''loop'' dei pacchetti con dipendenze non soddisfatte;
# autorizziamo l’installazione di pacchetti non autenticati.
Essendo  questo un argomento molto complesso, per scoprire tutte le funzioni  disponibili e per approfondire il funzionamento di quelle appena  elencate, vi rimando al manuale e agli help:
<pre>
# apt-get --help
# aptitude --help
man apt.conf
</pre>


=== Il file /etc/apt/preferences ===
=== Il file /etc/apt/preferences ===
2 894

contributi