Repository & pinning: differenze tra le versioni
(rimosse parti trattate altrove (con link alla guida), correzioni minori e uniformazione del contenuto dei repository) |
|||
Riga 9: | Riga 9: | ||
{{Versioni compatibili}} | {{Versioni compatibili}} | ||
= Introduzione = | = Introduzione = | ||
Esistono diverse distribuzioni ([[release]]) di Debian, e si rimanda per maggiori dettagli a [[La struttura della Distribuzione]]. E in una configurazione normale e consigliata di Debian non è necessario configurare il pinning. | |||
Il pinning entra invece in gioco qualora si preferiscano delle regole personalizzate per determinati pacchetti o repository, o se si vogliono utilizzare i repository di più [[release|distribuzioni]] di Debian. Inizialmente era necessario anche per utilizzare altri repository, quali i ''backports'' o gli ''experimental'', ma attualmente la necessità di configurarlo è venuta meno in molte situazioni, e pertanto si raccomanda agli utenti che non siano esperti riguardo il funzionamento di [[APT]] di non ricorrervi se non strettamente necessario. | |||
{{Warningbox|Installare pacchetti provenienti da distribuzioni e/o fonti differenti è sempre e comunque fonte di rischi, ed è sconsigliato. Questa guida presuppone la comprensione dei concetti esposti nella guida [[I repository ed il loro utilizzo]], nonché la conoscenza di [[apt-get]].}} | |||
{{Warningbox|Installare pacchetti provenienti da distribuzioni e/o fonti differenti è sempre e comunque fonte di rischi, ed è sconsigliato. Questa guida presuppone la comprensione dei concetti esposti nella guida [[I repository ed il loro utilizzo]], nonché la conoscenza di [[apt-get | |||
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: | ||
* Con "distribuzione" si intendono stable, testing e unstable. Ciascuna ha un singolo repository (fonte) principale (due con il repository dedicato agli aggiornamenti di sicurezza, mancante per la unstable) che è quello automaticamente dichiarato dall'installer di debian, ma ogni distribuzione può avere più fonti, ufficiali e non. | * Con "distribuzione" ([[release]], chiamata anche ''archive'' o ''suite'') si intendono oldstable, stable, testing e unstable. Ciascuna ha un singolo repository (fonte) principale (due con il repository dedicato agli aggiornamenti di sicurezza, mancante per la unstable) che è quello automaticamente dichiarato dall'installer di debian, ma ogni distribuzione può avere più fonti, ufficiali e non. | ||
* Con "fonti" si intendono i repository, ufficiali e non, che forniscono pacchetti relativi ad una o più distribuzioni. Ogni fonte può avere più copie di se stesso ( | * Con "fonti" si intendono i repository, ufficiali e non, che forniscono pacchetti relativi ad una o più distribuzioni. Ogni fonte può avere più copie di se stesso ([[mirror]]). | ||
{{Box|Importante|Il pinning è uno strumento per regolare la priorità in base al numero di versione dei pacchetti, e non alla fonte di provenienza. Non è possibile discriminare tra pacchetti aventi la stessa versione e provenienti da più repository, ovvero ad essere installato sarà quello proveniente dal repository elencato per primo nel file <code>sources.list</code>.}} | {{Box|Importante|Il pinning è uno strumento per regolare la priorità in base al numero di versione dei pacchetti, e non alla fonte di provenienza. Non è possibile discriminare tra pacchetti aventi la stessa versione e provenienti da più repository, ovvero ad essere installato sarà quello proveniente dal repository elencato per primo nel file <code>sources.list</code>.}} | ||
= Priorità come punteggio = | = Priorità come punteggio = | ||
La priorità viene gestita attraverso l'assegnazione di un punteggio ai vari pacchetti, sia installati che ancora da installare. Valgono le seguenti regole: | La priorità viene gestita attraverso l'assegnazione di un punteggio ai vari pacchetti, sia installati che ancora da installare. Valgono le seguenti regole: | ||
* priorità '''1''', caso particolare e poco comune. È quella di default per ''experimental'' ('''NotAutomatic: yes''' nel file ''Release'' del repository). Si veda il manuale per maggiori informazioni. | * priorità '''1''', caso particolare e poco comune. È quella di default per ''experimental'' ('''NotAutomatic: yes''' nel file ''Release'' del repository). Si veda il manuale per maggiori informazioni. | ||
* priorità '''100''' alla versione dei pacchetti già installati e quella dei backports ufficiali ('''NotAutomatic: yes''' e '''ButAutomaticUpgrades: yes''' nel file ''Release'' del repository). | * priorità '''100''' alla versione dei pacchetti già installati e quella dei backports ufficiali ('''NotAutomatic: yes''' e '''ButAutomaticUpgrades: yes''' nel file ''Release'' del repository). | ||
Riga 64: | Riga 57: | ||
== Priorità in caso di aggiornamento == | == Priorità in caso di aggiornamento == | ||
Se una versione di un pacchetto è già stata installata sul sistema, la lettura dei punteggi può generare confusione. In particolare si noti che: | Se una versione di un pacchetto è già stata installata sul sistema, la lettura dei punteggi può generare confusione. In particolare si noti che: | ||
* il downgrade è possibile solo con una priorità almeno pari a 1000, quindi sono ignorati tutti i repository con priorità minore di 1000 contenenti una versione inferiore a quella già installata; | * il downgrade è possibile solo con una priorità almeno pari a 1000, quindi sono ignorati tutti i repository con priorità minore di 1000 contenenti una versione inferiore a quella già installata; | ||
Riga 77: | Riga 69: | ||
= /etc/apt/apt.conf = | = /etc/apt/apt.conf = | ||
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. | 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. | ||
Per quanto riguarda il pinning l'unico parametro strettamente di rilievo è: | Per quanto riguarda il pinning l'unico parametro strettamente di rilievo è: | ||
Riga 87: | Riga 78: | ||
{{Warningbox| | {{Warningbox| | ||
* Tale priorità si applica alla distribuzione e non alla fonte, quindi ad ottenere la suddetta priorità non saranno solo i pacchetti appartenenti al repository principale (o ai due repository principali), ma anche quelli provenienti da altre fonti se il gestore di tale repository usa lo stesso valore per i parametri suite e codename di quelli principali, ad esempio ''stable'' e ''wheezy''. Per esempio ''backports'' non comporta problemi poiché i precedenti due parametri valgono ''nome_suite-backports'' e ''nome_codename-backports'', viceversa quello di ''deb-multimedia'' usa gli stessi identici valori di quelli principali. | * Tale priorità si applica alla distribuzione e non alla fonte, quindi ad ottenere la suddetta priorità non saranno solo i pacchetti appartenenti al repository principale (o ai due repository principali), ma anche quelli provenienti da altre fonti se il gestore di tale repository usa lo stesso valore per i parametri suite e codename di quelli principali, ad esempio ''stable'' e ''wheezy''. Per esempio ''backports'' non comporta problemi poiché i precedenti due parametri valgono ''nome_suite-backports'' e ''nome_codename-backports'', viceversa quello di ''deb-multimedia'' usa gli stessi identici valori di quelli principali. | ||
* Per quanto riguarda tutti i pacchetti della release | * Per quanto riguarda tutti i pacchetti della target release questa dichiarazione ha la precedenza su qualsiasi altra generica priorità definita nel file ''preferences'', ad eccezione di quei pacchetti per ciascuno dei quali sia stata definita una specifica priorità. | ||
* Questa direttiva influenza la priorità del repository principale di una release, nonché di quella relativa alla sua sicurezza, ad esempio | * Questa direttiva influenza la priorità del repository principale di una release, nonché di quella relativa alla sua sicurezza, ad esempio | ||
** <code>deb http://ftp.it.debian.org/debian/ wheezy main</code> | ** <code>deb http://ftp.it.debian.org/debian/ wheezy main</code> | ||
Riga 118: | Riga 109: | ||
= /etc/apt/preferences = | = /etc/apt/preferences = | ||
Questo è il file dove è possibile definire tutte le priorità che si vogliono, fermo restando quanto detto nella sezione dedicata ad <code>apt.conf</code>. La sintassi generale è la seguente: | Questo è il file dove è possibile definire tutte le priorità che si vogliono, fermo restando quanto detto nella sezione dedicata ad <code>apt.conf</code>. La sintassi generale è la seguente: | ||
<pre> | <pre> | ||
Riga 147: | Riga 137: | ||
== Blocco/retrocessione di pacchetti == | == Blocco/retrocessione di pacchetti == | ||
Il file <code>preferences</code> può essere usato per bloccare e/o retrocedere (downgrade) uno o più pacchetti (al limite tutti); in entrambi i casi è necessario definire un pin maggiore o uguale a 1000 per il pacchetto desiderato. Se per esempio nel file <code>preferences</code> fosse presente un record come il seguente: | Il file <code>preferences</code> può essere usato per bloccare e/o retrocedere (downgrade) uno o più pacchetti (al limite tutti); in entrambi i casi è necessario definire un pin maggiore o uguale a 1000 per il pacchetto desiderato. Se per esempio nel file <code>preferences</code> fosse presente un record come il seguente: | ||
Riga 162: | Riga 151: | ||
=== Retrocedere l'intero sistema === | === Retrocedere l'intero sistema === | ||
Nella maggior parte dei casi (o forse sempre) questa '''È UNA FOLLIA''', tuttavia per motivazioni didattiche si mostra come fare. In primis è necessario eliminare, se presente, dal file <code>apt.conf</code> il parametro ''default-release'', dopo di che aggiungere al file <code>preferences</code> un record come il seguente (sostituire a "stable" la versione desiderata, ad esempio "testing" se si vuole retrocedere da "unstable"). | Nella maggior parte dei casi (o forse sempre) questa '''È UNA FOLLIA''', tuttavia per motivazioni didattiche si mostra come fare. In primis è necessario eliminare, se presente, dal file <code>apt.conf</code> il parametro ''default-release'', dopo di che aggiungere al file <code>preferences</code> un record come il seguente (sostituire a "stable" la versione desiderata, ad esempio "testing" se si vuole retrocedere da "unstable"). | ||
<pre> | <pre> | ||
Riga 171: | Riga 159: | ||
A questo punto dovrebbe essere sufficiente digitare da terminale: | A questo punto dovrebbe essere sufficiente digitare da terminale: | ||
<pre># apt-get dist-upgrade</pre> | <pre># apt-get dist-upgrade</pre> | ||
= Esempi = | = Esempi = | ||
{{Box|Nota|Per il significato dei vari parametri dichiarati in <code>apt.conf</code>, nonché per la relativa sintassi, si vedano le guide dedicate ad [[apt-get]], ecc. Si ricordi inoltre che non sempre la definizione di tale file è necessaria ai fini del pinning.}} | |||
{{Box|Nota|Per il significato dei vari parametri dichiarati in <code>apt.conf</code>, nonché per la relativa sintassi, si vedano le guide dedicate ad [[apt-get | |||
== Release pura == | == Release pura == | ||
Non serve il pinning se si usano i repository ufficiali di una sola release di Debian, ma può essere prudente definire un file <code>apt.conf</code> se si dovessero aggiungere altri repository in seguito e ci si dimenticasse di definire correttamente un pinning. | Non serve il pinning se si usano i repository ufficiali di una sola release di Debian, ma può essere prudente definire un file <code>apt.conf</code> se si dovessero aggiungere altri repository in seguito e ci si dimenticasse di definire correttamente un pinning. | ||
Riga 187: | Riga 171: | ||
== Stable con backports obbligati == | == Stable con backports obbligati == | ||
Si supponga di voler usare tutti i pacchetti della stable, con l'eccezione di quelli relativi a libreoffice. | Si supponga di voler usare tutti i pacchetti della stable, con l'eccezione di quelli relativi a libreoffice. | ||
=== sources.list === | === sources.list === | ||
<pre> | <pre> | ||
deb http://ftp.it.debian.org/debian/ stable main | deb http://ftp.it.debian.org/debian/ stable main | ||
deb http://security.debian.org/ stable/updates main | #deb-src http://ftp.it.debian.org/debian/ stable main | ||
deb http://ftp.it.debian.org/debian/ wheezy-backports main | deb http://security.debian.org/ stable/updates main | ||
#deb-src http://security.debian.org/ stable/updates main | |||
deb http://ftp.it.debian.org/debian/ wheezy-backports main | |||
#deb-src http://ftp.it.debian.org/debian/ wheezy-backports main | |||
</pre> | </pre> | ||
=== apt.conf === | === apt.conf === | ||
<pre> | <pre> | ||
APT | APT | ||
Riga 230: | Riga 214: | ||
=== Osservazioni === | === Osservazioni === | ||
Per come è definito <code>preferences</code> l'installazione della versione di libreoffice da repository non ''backports'' è impossibile, anche usando l'opzione <code>-t</code> da riga di comando. | Per come è definito <code>preferences</code> l'installazione della versione di libreoffice da repository non ''backports'' è impossibile, anche usando l'opzione <code>-t</code> da riga di comando. | ||
== Testing con unstable== | == Testing con unstable== | ||
La distribuzione principale sia testing, quella secondaria unstable. Lo scopo è far sì che '''non''' vengano recuperati in automatico da unstable tutti i pacchetti già disponibili in testing. | |||
La distribuzione principale sia testing, quella secondaria unstable. Lo scopo è far sì che in automatico | |||
=== sources.list === | === sources.list === | ||
<pre> | <pre> | ||
deb http://ftp.it.debian.org/debian/ testing main | deb http://ftp.it.debian.org/debian/ testing main | ||
deb http://security.debian.org/ testing/updates main | #deb-src http://ftp.it.debian.org/debian/ testing main | ||
deb http://ftp. | deb http://security.debian.org/ testing/updates main | ||
#deb-src http://security.debian.org/ testing/updates main | |||
deb http://ftp.it.debian.org/debian unstable main | |||
#deb-src http://ftp.it.debian.org/debian unstable main | |||
</pre> | </pre> | ||
=== apt.conf === | === apt.conf === | ||
<pre> | <pre> | ||
APT | APT | ||
Riga 269: | Riga 252: | ||
=== preferences === | === preferences === | ||
< | Non è necessario configurare alcun pinning, ma è sufficiente l'uso di <code>Default-Release</code> nel file <code>apt.conf</code>. | ||
< | |||
</ | |||
=== Osservazioni === | === Osservazioni === | ||
# Usando le azioni ''install'' e ''upgrade'' senza specificare l'opzione '''-t unstable''' si installano/aggiornano pacchetti prelevando le versioni da testing, a meno che un pacchetto sia presente solo in unstable, nel qual caso sarà prelevato da lì. Le dipendenze saranno risolte se possibile usando testing, altrimenti usando unstable. | # Usando le azioni ''install'' e ''upgrade'' senza specificare l'opzione '''-t unstable''' si installano/aggiornano pacchetti prelevando le versioni da testing, a meno che un pacchetto sia presente solo in unstable, nel qual caso sarà prelevato da lì. Le dipendenze saranno risolte se possibile usando testing, altrimenti usando unstable. | ||
# Digitando <code>apt-get | # Digitando <code>apt-get -t unstable install vattelapesca</code> si installerà la versione "vattelapesca" appartenente ad unstable, così come le sue dipendenze. Si noti che dopo l'avvenuta installazione, successivi aggiornamenti tramite comandi del tipo <code>apt-get upgrade</code> o <code>apt-get dist-upgrade</code> continueranno a installare la versione più recente, anche prelevandola automaticamente da ''unstable'', almeno finché la versione in testing non diverrà equivalente a quella in unstable. | ||
# Una volta che la versione in testing divenisse uguale a quella presente in unstable, successive versioni presenti soltanto in unstable non sarebbero aggiornate automaticamente, ma servirebbe specificare nuovamente l'opzione '''-t'''/'''--target-release'''. | |||
== Testing con deb-multimedia == | == Testing con deb-multimedia == | ||
Sia testing l'unica distribuzione d'interesse, nonché quella obiettivo. Si supponga di voler usare anche la fonte ''www.deb-multimedia.org'', ma con l'unico scopo di installare solo quei pacchetti che non sono presenti nel repository principale. | Sia testing l'unica distribuzione d'interesse, nonché quella obiettivo. Si supponga di voler usare anche la fonte ''www.deb-multimedia.org'', ma con l'unico scopo di installare solo quei pacchetti che non sono presenti nel repository principale. | ||
Riga 293: | Riga 265: | ||
=== sources.list === | === sources.list === | ||
Abilitiamo anche le sezioni ''contrib'' e ''non-free'': | |||
<pre> | <pre> | ||
deb http://ftp.it.debian.org/debian/ testing main contrib non-free | deb http://ftp.it.debian.org/debian/ testing main contrib non-free | ||
Riga 308: | Riga 280: | ||
Get | Get | ||
{ | { | ||
AutomaticRemove "true"; | AutomaticRemove "true"; | ||
Fix-Broken "true"; | Fix-Broken "true"; | ||
Riga 348: | Riga 319: | ||
== Mix di varie release == | == Mix di varie release == | ||
In questo how-to mostrerò come utilizzare pacchetti Debian provenienti da Testing, Unstable, Experimental e deb-multimedia (audio/video) ma le istruzioni sono facilmente riportabili anche ad altre situazioni (unstable + experimental, stable + testing, stable + unstable, stable + testing + unstable, ecc.). | In questo how-to mostrerò come utilizzare pacchetti Debian provenienti da Testing, Unstable, Experimental e deb-multimedia (audio/video) ma le istruzioni sono facilmente riportabili anche ad altre situazioni (unstable + experimental, stable + testing, stable + unstable, stable + testing + unstable, ecc.). | ||
=== Impostare i repository === | === Impostare i repository === | ||
Assicuriamoci di essere l'utente root e procediamo. | Assicuriamoci di essere l'utente root e procediamo. | ||
Per prima cosa editiamo il file <code>/etc/apt/sources.list</code> ed inseriamo gli archivi dei pacchetti Debian che utilizzeremo, per esempio: | Per prima cosa editiamo il file <code>/etc/apt/sources.list</code> ed inseriamo gli archivi dei pacchetti Debian che utilizzeremo, per esempio (con ''contrib'' e ''non-free'' abilitati): | ||
<pre> | <pre> | ||
### Debian Ufficiale -- Testing | ### Debian Ufficiale -- Testing | ||
deb http://ftp.it.debian.org/debian/ testing main contrib non-free | deb http://ftp.it.debian.org/debian/ testing main contrib non-free | ||
#deb-src http://ftp.it.debian.org/debian/ testing main contrib non-free | |||
### Debian Ufficiale -- Testing Sicurezza | ### Debian Ufficiale -- Testing Sicurezza | ||
deb http://security.debian.org/ testing/updates main contrib non-free | deb http://security.debian.org/ testing/updates main contrib non-free | ||
#deb-src http://security.debian.org/ testing/updates main contrib non-free | |||
### Debian Ufficiale -- Sid | ### Debian Ufficiale -- Sid | ||
deb http://ftp.it.debian.org/debian/ unstable main contrib non-free | deb http://ftp.it.debian.org/debian/ unstable main contrib non-free | ||
#deb-src http://ftp.it.debian.org/debian/ unstable main contrib non-free | |||
### Debian Ufficiale -- Experimental | ### Debian Ufficiale -- Experimental | ||
deb http://ftp.it.debian.org/debian/ experimental main contrib non-free | deb http://ftp.it.debian.org/debian/ experimental main contrib non-free | ||
#deb-src http://ftp.it.debian.org/debian/ experimental main contrib non-free | |||
### deb-multimedia -- Audio/Video -- Marillat | ### deb-multimedia -- Audio/Video -- Marillat | ||
deb http://www.deb-multimedia.org testing main non-free | deb http://www.deb-multimedia.org testing main non-free | ||
deb http://www.deb-multimedia.org | #deb-src http://www.deb-multimedia.org testing main non-free | ||
</pre> | </pre> | ||
=== Configurare apt === | === Configurare apt === | ||
A questo punto dobbiamo preparare due file normalmente non presenti sulla nostra debianbox: si tratta dei file <code>/etc/apt/preferences</code> e <code>/etc/apt/apt.conf</code>. | A questo punto dobbiamo preparare due file normalmente non presenti sulla nostra debianbox: si tratta dei file <code>/etc/apt/preferences</code> e <code>/etc/apt/apt.conf</code>. | ||
Questi due file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo su come comportarsi in caso di conflitti e altri problemi. | Questi due file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo su come comportarsi in caso di conflitti e altri problemi. | ||
==== Il file <code>apt.conf</code> ==== | ==== Il file <code>apt.conf</code> ==== | ||
Ora creiamo il file <code>/etc/apt/apt-conf</code> | Ora creiamo il file <code>/etc/apt/apt-conf</code> | ||
Riga 386: | Riga 357: | ||
ed editiamolo inserendo quanto segue: | ed editiamolo inserendo quanto segue: | ||
<pre> | <pre> | ||
APT::Cache-Limit 15000000; | APT::Cache-Limit 15000000; | ||
Riga 399: | Riga 369: | ||
==== Il file <code>preferences</code> ==== | ==== Il file <code>preferences</code> ==== | ||
Creiamo il file <code>/etc/apt/preferences</code>: | Creiamo il file <code>/etc/apt/preferences</code>: | ||
<pre># touch /etc/apt/preferences</pre> | <pre># touch /etc/apt/preferences</pre> | ||
ed editiamolo col nostro editor di fiducia e inseriamo queste direttive: | ed editiamolo col nostro editor di fiducia e inseriamo queste direttive: | ||
<pre> | <pre> | ||
Package: * | Package: * | ||
Pin: release a=unstable | Pin: release a=unstable | ||
Pin-Priority: | Pin-Priority: 400 | ||
</pre> | |||
Si noti che ''experimental'' ha un ''Pin-Priority'' implicito pari a 1, e che quelli non specificati hanno un valore di 500, pertanto non è necessario impostare regole per ''deb-multimedia'' e ''testing'', che sarebbero equivalenti, ed ''experimental''. | |||
Pin-Priority | |||
Facciamo l'update del database dei pacchetti: | Facciamo l'update del database dei pacchetti: | ||
<pre># apt-get update</pre> | <pre># apt-get update</pre> | ||
D'ora in avanti avremo due possibilità per installare un nuovo pacchetto: il metodo che usiamo di solito e cioè: | D'ora in avanti avremo due possibilità per installare un nuovo pacchetto: il metodo che usiamo di solito e cioè: | ||
<pre># apt-get install nome_pacchetto</pre> | <pre># apt-get install nome_pacchetto</pre> | ||
che utilizzerà pacchetti proveniente dalla versione impostata come '''Default-Release''' in '''apt.conf''', oppure il comando | 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> | <pre># apt-get install -t versione_di_debian nome_pacchetto</pre> | ||
che provvederà a installare il pacchetto da noi richiesto per la versione specificata (versione_debian), risolvendo automaticamente le dipendenze. | che provvederà a installare il pacchetto da noi richiesto per la versione specificata (versione_debian), risolvendo automaticamente le dipendenze. | ||
= Comandi utili = | = Comandi utili = | ||
È possibile visualizzare l'elenco delle priorità relative a tutti i repository e pacchetti dichiarati col seguente comando: | È possibile visualizzare l'elenco delle priorità relative a tutti i repository e pacchetti dichiarati col seguente comando: | ||
<pre># apt-cache policy</pre> | <pre># apt-cache policy</pre> | ||
Se si volesse visualizzare solo la priorità per un singolo singolo pacchetto, ad esempio nano, si può digitare: | Se si volesse visualizzare solo la priorità per un singolo singolo pacchetto, ad esempio nano, si può digitare: | ||
<pre># apt-cache policy nano</pre> | <pre># apt-cache policy nano</pre> | ||
Si | Si veda anche la guida di [[apt-get]]. | ||
= Approfondimenti = | = Approfondimenti = | ||
Riga 463: | Riga 413: | ||
: [[Utente:Wtf|Wtf]] | : [[Utente:Wtf|Wtf]] | ||
: [[Utente:xtow|xtow]] (versione preunione) | : [[Utente:xtow|xtow]] (versione preunione) | ||
:[[Utente:HAL 9000|HAL 9000]] | : [[Utente:HAL 9000|HAL 9000]] | ||
|Verificata_da = | |Verificata_da = | ||
: [[Utente:TheNoise|TheNoise]] (versione preunione) | : [[Utente:TheNoise|TheNoise]] (versione preunione) | ||
: [[Utente:Wtf|Wtf]] | : [[Utente:Wtf|Wtf]] | ||
:[[Utente:HAL 9000|HAL 9000]] | : [[Utente:HAL 9000|HAL 9000]] 11:48, 30 ago 2014 (CEST) | ||
|Numero_revisori = 3 | |Numero_revisori = 3 | ||
}} | }} |
Versione delle 09:48, 30 ago 2014
|
Repository e Pinning | ||
---|---|---|
| ||
Una rapida panoramica su uno dei temi più importanti in Debian: il funzionamento e la configurazione dei repository, ed il pinning ovvero la possibilità di attingere dai repository dei diversi rami, cercando di mantenere il sistema più stabile possibile.
| ||
Link agli articoli: |
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione
Esistono diverse distribuzioni (release) di Debian, e si rimanda per maggiori dettagli a La struttura della Distribuzione. E in una configurazione normale e consigliata di Debian non è necessario configurare il pinning.
Il pinning entra invece in gioco qualora si preferiscano delle regole personalizzate per determinati pacchetti o repository, o se si vogliono utilizzare i repository di più distribuzioni di Debian. Inizialmente era necessario anche per utilizzare altri repository, quali i backports o gli experimental, ma attualmente la necessità di configurarlo è venuta meno in molte situazioni, e pertanto si raccomanda agli utenti che non siano esperti riguardo il funzionamento di APT di non ricorrervi se non strettamente necessario.
ATTENZIONE Installare pacchetti provenienti da distribuzioni e/o fonti differenti è sempre e comunque fonte di rischi, ed è sconsigliato. Questa guida presuppone la comprensione dei concetti esposti nella guida I repository ed il loro utilizzo, nonché la conoscenza di apt-get. |
Prima di procedere nella descrizione operativa del pinning è fondamentale capire come gestisce la priorità dei pacchetti APT e sapere che:
- Con "distribuzione" (release, chiamata anche archive o suite) si intendono oldstable, stable, testing e unstable. Ciascuna ha un singolo repository (fonte) principale (due con il repository dedicato agli aggiornamenti di sicurezza, mancante per la unstable) che è quello automaticamente dichiarato dall'installer di debian, ma ogni distribuzione può avere più fonti, ufficiali e non.
- Con "fonti" si intendono i repository, ufficiali e non, che forniscono pacchetti relativi ad una o più distribuzioni. Ogni fonte può avere più copie di se stesso (mirror).
Priorità come punteggio
La priorità viene gestita attraverso l'assegnazione di un punteggio ai vari pacchetti, sia installati che ancora da installare. Valgono le seguenti regole:
- priorità 1, caso particolare e poco comune. È quella di default per experimental (NotAutomatic: yes nel file Release del repository). Si veda il manuale per maggiori informazioni.
- priorità 100 alla versione dei pacchetti già installati e quella dei backports ufficiali (NotAutomatic: yes e ButAutomaticUpgrades: yes nel file Release del repository).
- priorità 500 alle versioni che non appartengono alla distribuzione obiettivo, dove con quest'ultimo termine si deve intendere "Default Release", "Target Release". Di default non è impostata una "Default Release", e quindi ogni repository a parte backports ed experimental ha una priorità di 500.
- priorità 990 alle versioni che appartengono alla distribuzione obiettivo, posto che sia definita.
Piccolo esempio teorico. Si supponga quanto segue:
- si desidera installare il pacchetto "vattelapesca" appartenente alla propria distribuzione (si supponga testing);
- il suddetto pacchetto è presente in tre fonti: repoA, repoB, repoC; tutte correttamente specificante nel file
source.list
; - tutti i pacchetti presenti in repoA appartengono alla distribuzione installata, in repoB e repoC sono contenuti pacchetti appartenenti ad un'altra distribuzione (ad esempio unstable e stable rispettivamente);
- la versione di "vattelapesca" in repoA è la 1.4, in repoB la 2.0 e in in repoC la 1.1;
- nel sistema è installata la versione 1.3 di "vattelapesca";
- non esiste un file
preferences
o comunque non è stata specificata una priorità per nessuna delle tre distribuzioni considerate; - non è stato dichiarato il parametro Default Release in un eventuale file
apt.conf
, ovvero non è stata definita una distribuzione obiettivo.
Nel momento in cui l'utente esegue il comando apt-get install vattelapesca
sarà assegnata una priorità di 500 ai "vattelapesca" di repoA, repoB e repoC.
Il pacchetto da repoC viene immediatamente scartato perché implicherebbe la retrocessione (downgrade) dello stesso. A questo punto APT sceglierà tra repoA e repoB in base alla versione, e quindi a essere installato sarà quello da repoB e non da repoA come desiderato.
Il problema evidentemente non può che esplodere quando si tenta di aggiornare tutti i pacchetti di sistema.
La soluzione è quella di assegnare manualmente un punteggio ai vari pacchetti, singolarmente o raggruppandoli. Prima però è necessario capire il significato dei vari punteggi (Pin-Priority). Nel seguito si indicherà col termine "candidato" il pacchetto o gruppo di pacchetti proveniente dalla generica fonte dichiarata nel file sources.list
.
- Pin minore di 0 (negativo), l’installazione automatica del candidato è impedita a priori.
- Pin compreso tra 1 e 99, il candidato sarà installato solo se sono verificate entrambe queste condizioni: non esistono candidati appartenenti ad altre distribuzioni, e 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.
- 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
apt.conf
). - 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.
- Pin 1000 o superiore, il candidato sarà installato se non esistono altri candidati con pin maggiore, anche se ciò comportasse la retrocessione di versione (downgrade) del candidato.
IMPORTANTE Si noti che gli intervalli sopra specificati sono la diretta conseguenza della procedura di assegnamento automatico di APT. |
Posto per esempio di assegnare priorità 44 al pacchetto "vattelapesca" di stable e contestualmente di non dichiarare alcuna priorità per i "vattelapesca" di testing e unstable (assunto che i tre repository siano in sources.list
), un candidato vattelapesca di stable potrà essere installato solo se:
- Non esistono altri candidati dello stesso pacchetto provenienti dalle altre fonti, infatti APT assegnerebbe a loro automaticamente una priorità di 500 (500 > 44).
- Nessun candidato di "vattelapesca" è mai stato installato, infatti alla versione installata di "vattelapesca" sarebbe assegnata una priorità di 100 (100 > 44), a prescindere dalla sua versione, ovvero anche quando questa fosse inferiore a quella del nuovo candidato di stable disponibile.
Nota * APT può derogare alle regole generali sopra esposte in casi particolari per soddisfare le varie dipendenze dei pacchetti. |
Priorità in caso di aggiornamento
Se una versione di un pacchetto è già stata installata sul sistema, la lettura dei punteggi può generare confusione. In particolare si noti che:
- il downgrade è possibile solo con una priorità almeno pari a 1000, quindi sono ignorati tutti i repository con priorità minore di 1000 contenenti una versione inferiore a quella già installata;
- i pacchetti installati hanno priorità 100, e quindi un pacchetto può essere aggiornato automaticamente se esiste un repository con una priorità di almeno 100 che contenga una versione più recente di quella installata.
Per esempio la stable di default ha priorità 500 (ma quanto scritto varrebbe anche con una priorità fino a 990), mentre i backports ne hanno una di 100. Ciò significa che non si può installare (automaticamente) una versione di un pacchetto dai backports che si trovi in entrambi i repository.
Ma se si è già installato un pacchetto dai backports, impostando manualmente la target release, quel pacchetto verrà aggiornato automaticamente quando saranno disponibili nuovi aggiornamenti, perché:
- la priorità della stable non è sufficiente al downgrade, dato che servirebbe una priorità di almeno 1000, e pertanto il repository è ignorato;
- la versione dei backports è più recente di quella installata e la loro priorità è (almeno) pari a 100.
Si noti che con una priorità superiore a 990 per la stable sarebbe impossibile installare i backports, anche manualmente. Tale priorità potrebbe essere assegnata dopo la loro installazione, ma sempre senza superare 1000 per evitare il downgrade.
/etc/apt/apt.conf
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 e Aptitude per alcuni brevi esempi contenenti alcui dei parametri più comuni. Per quanto riguarda il pinning l'unico parametro strettamente di rilievo è:
APT::Default-Release "distribuzione_voluta";
che equivale alla dichiarazione in riga di comando dell'opzione -t distribuzione_voluta sia in Apt-Get che Aptitude. Tale dichiarazione attribuisce priorità 990 a tutti i pacchetti appartenenti alla distribuzione specificata.
ATTENZIONE
|
Si noti inoltre che:
- Le dichiarazioni di parametri da riga di comando hanno sempre la precedenza su quelli definiti in un file di configurazione, quindi usare un comando del tipo
apt-get install pacchetto -t distribuzione_taldeitali
sorpassa qualunque distribuzione obiettivo (Default-Release) dichiarata nel fileapt.conf
. Perciò avere un pinning a 990 in preferences non è necessariamente equivalente a impostare una Default-Release. - Comandi del tipo
apt-get install pacchetto/distribuzione_taldeitali
non cambiano la target release, ma si limitano a dire di prelevare lo specifico pacchetto dalla distribuzione indicata invece che da quella predefinita. Questo implica che le dipendenze continueranno ad essere risolte in base alla distribuzione obiettivo eventualmente specificata inapt.conf
e/o in base al file preferences e/o in accordo all'algoritmo predefinito. - Definire una distribuzione obiettivo in
apt.conf
è equivalente a dichiarare inpreferences
(si veda la prossima sezione) quanto segue
Package: * Pin: release a=distribuzione_voluta Pin-Priority: 990
- Qualora si sia definita una distribuzione obiettivo in
apt.conf
allora quasiasi dichiarazione inpreferences
riguardante tutti i pacchetti di una certa distribuzione sarà ignorata, ad esempio definire
Package: * Pin: release a=testing Pin-Priority: 1000
- è del tutto inutile se poi si usa l'opzione -t testing. Non è invece inutile una dichiarazione del seguente tipo:
Package: specifico pacchetto o espressione regolare Pin: release a=testing Pin-Priority: 1000
File multipli L'utente può, invece di creare un unico file di nome apt.conf, creare più file di nome arbitrario in /etc/apt/apt.conf.d/ (si veda il manuale) |
/etc/apt/preferences
Questo è il file dove è possibile definire tutte le priorità che si vogliono, fermo restando quanto detto nella sezione dedicata ad apt.conf
. La sintassi generale è la seguente:
Package: nome pacchetto o espressione regolare Pin: parametro da usare per identificare la versione desiderata Pin-Priority: numero
Un paio di esempi del tutto arbitrari:
Package: vlc Pin: release a=testing Pin-Priority: 991 Package: virtualbox4* Pin: Release o=Oracle Corporation Pin-Priority: 780
Nel primo esempio si è definito il pinning per il pacchetto di nome "vlc", richiedendo che le versioni appartenenti alla distribuzione testing abbiano priorità 991. Nel secondo invece sfruttando una semplicissima espressione regolare si impone che tutti i pacchetti il cui nome inizia per "virtualbox4" e appartenenti al repository la cui origine è definita come "Oracle Corporation" abbiano priorità 780.
Il pinning può essere orientato ai campi "Suite", "Origin", "Label" e "Codename" del file "Release" di un certo repository (si veda i repository ed il loro utilizzo), nonché all'indirizzo del repository stesso. Si noti che per archivi personali e/o non ufficiali può non essere presente (purtroppo) un file "Release". È utile infine evidenziare un paragrafo del manuale di apt_preferences:
Suggerimento Specificare nel file sources.list sempre per primi il o i repository principali della distribuzione obiettivo.
|
File multipli È possibile creare più file di nome arbitrario in /etc/apt/apt.preferences.d/ invece di creare un unico file di nome preferences, (si veda il manuale). |
Blocco/retrocessione di pacchetti
Il file preferences
può essere usato per bloccare e/o retrocedere (downgrade) uno o più pacchetti (al limite tutti); in entrambi i casi è necessario definire un pin maggiore o uguale a 1000 per il pacchetto desiderato. Se per esempio nel file preferences
fosse presente un record come il seguente:
Package: nome_pacchetto Pin: version 1.0.1 Pin-Priority: 1001
a seguito del comando apt-get install nome_pacchetto
si avrebbero i seguenti due casi:
- Se nel sistema non esiste una versione del suddetto pacchetto oppure se già installato la sua versione è più vecchia di 1.0.1, allora il pacchetto viene aggiornato normalmente, ma una volta terminata l'installazione questo pacchetto non verrà mai più aggiornato.
- Se il pacchetto è già stato installato e la sua versione è più recente di 1.0.1 allora il pacchetto presente nel sistema viene disinstallato e sostituito con quello avente versione 1.0.1. Terminata l'installazione il pacchetto non verrà mai più aggiornato.
Per permettere nuovamente l'aggiornamento del pacchetto è necessario eliminare il record.
Retrocedere l'intero sistema
Nella maggior parte dei casi (o forse sempre) questa È UNA FOLLIA, tuttavia per motivazioni didattiche si mostra come fare. In primis è necessario eliminare, se presente, dal file apt.conf
il parametro default-release, dopo di che aggiungere al file preferences
un record come il seguente (sostituire a "stable" la versione desiderata, ad esempio "testing" se si vuole retrocedere da "unstable").
Package: * Pin: release a=stable Pin-Priority: 1001
A questo punto dovrebbe essere sufficiente digitare da terminale:
# apt-get dist-upgrade
Esempi
Nota Per il significato dei vari parametri dichiarati in apt.conf , nonché per la relativa sintassi, si vedano le guide dedicate ad apt-get, ecc. Si ricordi inoltre che non sempre la definizione di tale file è necessaria ai fini del pinning.
|
Release pura
Non serve il pinning se si usano i repository ufficiali di una sola release di Debian, ma può essere prudente definire un file apt.conf
se si dovessero aggiungere altri repository in seguito e ci si dimenticasse di definire correttamente un pinning.
Ciò avrebbe effetto sul repository principale e su quello della sicurezza. Ma non sugli eventuali updates o proposed-updates, che non sarebbero più aggiornati automaticamente, salvo che per i pacchetti già installati da quei repository. Per riabilitare gli aggiornamenti automatici è necessario impostare un pinning a 990, pari a quello della Default-Release.
In una release pura i pacchetti dei backports continuano a restare disabilitati per la loro prima installazione, salvo presenti soltanto lì o li si scelga come target release, ma i pacchetti installati dai backports vengono aggiornati automaticamente senza bisogno di pinning. Il che corrisponde al loro comportamento di default anche in assenza di una Default-Release.
Stable con backports obbligati
Si supponga di voler usare tutti i pacchetti della stable, con l'eccezione di quelli relativi a libreoffice.
sources.list
deb http://ftp.it.debian.org/debian/ stable main #deb-src http://ftp.it.debian.org/debian/ stable main deb http://security.debian.org/ stable/updates main #deb-src http://security.debian.org/ stable/updates main deb http://ftp.it.debian.org/debian/ wheezy-backports main #deb-src http://ftp.it.debian.org/debian/ wheezy-backports main
apt.conf
APT { Default-Release "stable"; Cache-Limit 36000000; Get { AutomaticRemove "true"; Fix-Broken "true"; Purge "true"; Show-Upgraded "true"; } } Aptitude { Autoclean-After-Update "true"; Auto-Fix-Broken "true"; Purge-Unused "true"; }
preferences
Package: libreoffice* Pin: release n=wheezy-backports Pin-Priority: 992
Osservazioni
Per come è definito preferences
l'installazione della versione di libreoffice da repository non backports è impossibile, anche usando l'opzione -t
da riga di comando.
Testing con unstable
La distribuzione principale sia testing, quella secondaria unstable. Lo scopo è far sì che non vengano recuperati in automatico da unstable tutti i pacchetti già disponibili in testing.
sources.list
deb http://ftp.it.debian.org/debian/ testing main #deb-src http://ftp.it.debian.org/debian/ testing main deb http://security.debian.org/ testing/updates main #deb-src http://security.debian.org/ testing/updates main deb http://ftp.it.debian.org/debian unstable main #deb-src http://ftp.it.debian.org/debian unstable main
apt.conf
APT { Default-Release "testing"; Cache-Limit 36000000; Get { AutomaticRemove "true"; Fix-Broken "true"; Purge "true"; Show-Upgraded "true"; } } Aptitude { Autoclean-After-Update "true"; Auto-Fix-Broken "true"; Purge-Unused "true"; }
preferences
Non è necessario configurare alcun pinning, ma è sufficiente l'uso di Default-Release
nel file apt.conf
.
Osservazioni
- Usando le azioni install e upgrade senza specificare l'opzione -t unstable si installano/aggiornano pacchetti prelevando le versioni da testing, a meno che un pacchetto sia presente solo in unstable, nel qual caso sarà prelevato da lì. Le dipendenze saranno risolte se possibile usando testing, altrimenti usando unstable.
- Digitando
apt-get -t unstable install vattelapesca
si installerà la versione "vattelapesca" appartenente ad unstable, così come le sue dipendenze. Si noti che dopo l'avvenuta installazione, successivi aggiornamenti tramite comandi del tipoapt-get upgrade
oapt-get dist-upgrade
continueranno a installare la versione più recente, anche prelevandola automaticamente da unstable, almeno finché la versione in testing non diverrà equivalente a quella in unstable. - Una volta che la versione in testing divenisse uguale a quella presente in unstable, successive versioni presenti soltanto in unstable non sarebbero aggiornate automaticamente, ma servirebbe specificare nuovamente l'opzione -t/--target-release.
Testing con deb-multimedia
Sia testing l'unica distribuzione d'interesse, nonché quella obiettivo. Si supponga di voler usare anche la fonte www.deb-multimedia.org, ma con l'unico scopo di installare solo quei pacchetti che non sono presenti nel repository principale.
Nota Questo esempio non permette di retrocedere automaticamente pacchetti già installati da deb-multimedia. |
sources.list
Abilitiamo anche le sezioni contrib e non-free:
deb http://ftp.it.debian.org/debian/ testing main contrib non-free deb http://security.debian.org/ testing/updates main contrib non-free deb http://www.deb-multimedia.org testing main non-free
apt.conf
APT { Cache-Limit 36000000; Get { AutomaticRemove "true"; Fix-Broken "true"; Purge "true"; Show-Upgraded "true"; } } Aptitude { Autoclean-After-Update "true"; Auto-Fix-Broken "true"; Purge-Unused "true"; }
preferences
Package: * Pin: Release o=Unofficial Multimedia Packages Pin-Priority: 101 Package: * Pin: Release a=Testing Pin-Priority: 990 Package: * Pin: release o=Debian Pin-Priority: -10
Osservazioni
- Poiché entrambe le fonti, principale e deb-multimedia, appartengono alla distribuzione testing in teoria questo caso non sarebbe gestibile tramite pinning, tuttavia sotto l'ipotesi di voler installare da deb-multimedia solo i pacchetti non presenti nella fonte principale il problema è risolvibile. Evitando di definire in
apt.conf
una distribuzione obiettivo e definendo inpreferences
prima il record relativo a deb-multimedia si ottiene di riuscire ad assegnare la priorità desiderata, nonostante il fatto che il secondo record si applichi in teoria anche a deb-multimedia. Si noti che stanti così le cose dovrebbe essere in realtà possibile attribuire pin superiori, fino a 989, a deb-multimedia, senza che per questo i suoi candidati ottengano la precedenza su quelli del repository principale. Qualora invece si desiderasse dare la precedenza ai pacchetti di deb-multimedia sarebbe sufficiente definire la distribuzione obiettivo inapt.conf
risultando perfino inutile definire un filepreferences
, visto che come già detto di norma i candidati di deb-multimedia hanno numero di versione maggiore di queli del repository principale. - L'utilizzo dell'opzione -t in questo caso è inutile, visto che si lavora per ipotesi con una sola distribuzione.
- L'installazione di tutti i pacchetti provenienti da distribuzioni differenti da testing è completamente impedita, anche nel caso si aggiungessero repository relativi ad altre distribuzioni (a meno ovviamente di non aggiungere opportuni record in
preferences
). - La definizione di un file
apt.conf
in questo esempio non è necessaria ai fini del pinning.
Mix di varie release
In questo how-to mostrerò come utilizzare pacchetti Debian provenienti da Testing, Unstable, Experimental e deb-multimedia (audio/video) ma le istruzioni sono facilmente riportabili anche ad altre situazioni (unstable + experimental, stable + testing, stable + unstable, stable + testing + unstable, ecc.).
Impostare i repository
Assicuriamoci di essere l'utente root e procediamo.
Per prima cosa editiamo il file /etc/apt/sources.list
ed inseriamo gli archivi dei pacchetti Debian che utilizzeremo, per esempio (con contrib e non-free abilitati):
### Debian Ufficiale -- Testing deb http://ftp.it.debian.org/debian/ testing main contrib non-free #deb-src http://ftp.it.debian.org/debian/ testing main contrib non-free ### Debian Ufficiale -- Testing Sicurezza deb http://security.debian.org/ testing/updates main contrib non-free #deb-src http://security.debian.org/ testing/updates main contrib non-free ### Debian Ufficiale -- Sid deb http://ftp.it.debian.org/debian/ unstable main contrib non-free #deb-src http://ftp.it.debian.org/debian/ unstable main contrib non-free ### Debian Ufficiale -- Experimental deb http://ftp.it.debian.org/debian/ experimental main contrib non-free #deb-src http://ftp.it.debian.org/debian/ experimental main contrib non-free ### deb-multimedia -- Audio/Video -- Marillat deb http://www.deb-multimedia.org testing main non-free #deb-src http://www.deb-multimedia.org testing main non-free
Configurare apt
A questo punto dobbiamo preparare due file normalmente non presenti sulla nostra debianbox: si tratta dei file /etc/apt/preferences
e /etc/apt/apt.conf
.
Questi due file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo su come comportarsi in caso di conflitti e altri problemi.
Il file apt.conf
Ora creiamo il file /etc/apt/apt-conf
# touch /etc/apt/apt.conf
ed editiamolo inserendo quanto segue:
APT::Cache-Limit 15000000; Apt::Get::Purge; APT::Clean-Installed; APT::Get::Fix-Broken; APT::Get::Fix-Missing; APT::Get::Show-Upgraded "true";
Nota: la sintassi usata in quest'esempio, pur essendo differente da quella dei precedenti, è del tutto equivalente. Anche in questo caso è bene sottolineare che la definizione di un file apt.conf
non è necessaria ai fini del pinning.
Il file preferences
Creiamo il file /etc/apt/preferences
:
# touch /etc/apt/preferences
ed editiamolo col nostro editor di fiducia e inseriamo queste direttive:
Package: * Pin: release a=unstable Pin-Priority: 400
Si noti che experimental ha un Pin-Priority implicito pari a 1, e che quelli non specificati hanno un valore di 500, pertanto non è necessario impostare regole per deb-multimedia e testing, che sarebbero equivalenti, ed experimental.
Facciamo l'update del database dei pacchetti:
# apt-get update
D'ora in avanti avremo due possibilità per installare un nuovo pacchetto: il metodo che usiamo di solito e cioè:
# apt-get install nome_pacchetto
che utilizzerà pacchetti proveniente dalla versione impostata come Default-Release in apt.conf, oppure il comando
# apt-get install -t versione_di_debian nome_pacchetto
che provvederà a installare il pacchetto da noi richiesto per la versione specificata (versione_debian), risolvendo automaticamente le dipendenze.
Comandi utili
È possibile visualizzare l'elenco delle priorità relative a tutti i repository e pacchetti dichiarati col seguente comando:
# apt-cache policy
Se si volesse visualizzare solo la priorità per un singolo singolo pacchetto, ad esempio nano, si può digitare:
# apt-cache policy nano
Si veda anche la guida di apt-get.
Approfondimenti
Manpages
man apt.conf
man apt_preferences
Guida scritta da: Keltik | Debianized 80% |
Estesa da:
| |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |