Risoluzione delle dipendenze di APT Pinning

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 e dependency 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *