Sto cercando di padroneggiare come funziona il pinning di APT in Debian, ma ho difficoltà a capire come risolve le priorità.
Ho un file source.list
che ha le seguenti voci in questo ordine esatto:
deb <repository> stretch main deb <repository> testing main deb <repository> unstable main
Il seguente repository contiene questi pacchetti per ramo:
- stretch contiene il pacchetto
dependency version 1.0
; - testing contiene il pacchetto
dependency version 2.0
; - unstable contiene i pacchetti
program
edependency version 2.0
;
Il pacchetto program
dipende da dependency version 2.0
.
Devo installare il pacchetto program
, ma desidero installare il minor numero di pacchetti possibile da unstable
, quindi creo il seguente preferences
file per bloccare questo ramo:
Package: * Pin: release a=unstable Pin-Priority: -1
Se non metto nd correttamente come funziona, dovrebbe installare i pacchetti da unstable
solo quando lo dico esplicitamente ad APT.
Creo anche un apt.conf
per assicurarti che il ramo stable
sia quello predefinito:
APT::Default-Release "stable";
Dopo aver eseguito il comando apt-get update
, i rami dovrebbero avere le seguenti priorità:
stable: 990 testing: 500 unstable: -1
Ora voglio installare il pacchetto program
, per farlo, eseguo il seguente comando:
apt-get install -t unstable program
Quindi ora la mia domanda è, da quale ramo APT estrarrà il pacchetto dependency version 2.0
? Poiché sia testing
che unstable
hanno la stessa versione del pacchetto, quale verrà scelta?
Se io capito correttamente, APT con lopzione -t unstable
imposterà una priorità 990 ai pacchetti appartenenti a unstable
, ma da quello che ho “sperimentato” , lo estrae da testing
.
Allora perché APT estrae pacchetti da testing
che ha una priorità di 500 mentre unstable
è impostato su 990? Inoltre, quale sarebbe il modo ottimale per installare il minor numero di pacchetti possibile da unstable
?
Commenti
- Se la versione è la stessa, anche il file è lo stesso . Apt sceglie il più veloce o il primo mirror definito, ma lURL del file scaricato è lo stesso. Controlla tu stesso. I repository Debian ' t memorizzano due file / versioni identici di un pacchetto a causa di problemi di spazio su disco.
Risposta
Questo è spiegato in il apt_preferences
manpage :
Diverse versioni di un pacchetto possono essere disponibili per linstallazione quando il file sources.list (5) contiene riferimenti a più di una distribuzione (ad esempio, stable e testing). APT assegna una priorità a ciascuna versione disponibile. Soggetto a vincoli di dipendenza,
apt-get
seleziona la versione con la massima priorità per linstallazione. Le preferenze di APT sovrascrivono le priorità che APT assegna alle versioni del pacchetto per impostazione predefinita, dando così allutente il controllo su quale è selezionata per linstallazione.Diverse istanze della stessa versione di un pacchetto possono essere disponibili quando i sorgenti Il file .list (5) contiene riferimenti a più di una fonte. In questo caso
apt-get
scarica listanza elencata per prima nel file sources.list (5). Le preferenze di APT non influiscono sulla scelta dellistanza, ma solo sulla scelta della versione.
Le priorità determinano solo quale versione (come specificato dal numero di versione) di viene installato un pacchetto. Una volta determinato, viene utilizzato il primo repository di pacchetti disponibile per scaricarlo.