Încerc să stăpânesc cum funcționează fixarea APT în Debian, dar îmi este greu să înțeleg modul în care rezolvă prioritățile.
Am un fișier source.list
care are următoarele intrări în această ordine exactă:
deb <repository> stretch main deb <repository> testing main deb <repository> unstable main
Următorul depozit conține aceste pachete pe ramură:
- stretch conține pachetul
dependency version 1.0
; - testarea conține pachetul
dependency version 2.0
; - instabil conține pachetele
program
șidependency version 2.0
;
Pachetul program
depinde de dependency version 2.0
.
Trebuie să instalez pachet program
, dar vreau să instalez cât mai puține pachete din unstable
, așa că am creat următoarele preferences
fișier pentru a fixa această ramură:
Package: * Pin: release a=unstable Pin-Priority: -1
Dacă nu mai sunt Și cum funcționează corect, ar trebui să instaleze pachete de la unstable
numai atunci când îi spun în mod explicit lui APT.
fișier pentru a vă asigura că ramura stable
este implicită:
APT::Default-Release "stable";
După executarea comenzii apt-get update
, sucursalele ar trebui să aibă următoarele priorități:
stable: 990 testing: 500 unstable: -1
Acum vreau să instalez pachetul program
, pentru a face acest lucru, execut următoarea comandă:
apt-get install -t unstable program
Deci, acum întrebarea mea este, din ce ramură va trage APT pachet dependency version 2.0
? Deoarece atât testing
, cât și unstable
au aceeași versiune a pachetului, care va fi ales?
Dacă înțeleg corect, APT cu opțiunea -t unstable
, va seta o prioritate 990 pachetelor care aparțin unstable
, dar din ceea ce am experimentat , îl extrage de la testing
.
Deci, de ce APT extrage pachete de la testing
care are o prioritate de 500 în timp ce unstable
este setat la 990? De asemenea, care ar fi modalitatea optimă de a instala cât mai puține pachete din unstable
?
Comentarii
- Dacă versiunea este aceeași, atunci fișierul este și același . Apt alege cel mai rapid sau primul oglindă definită, dar adresa URL a fișierului descărcat este aceeași. Verificați-o singur. Depozitele Debian nu ' nu stochează două fișiere identice / versiunea unui pachet din cauza problemelor de spațiu pe disc.
Răspuns
Acest lucru este explicat în apt_preferences
pagina de manual :
Mai multe versiuni ale unui pachet pot fi disponibile pentru instalare atunci când fișierul sources.list (5) conține referințe la mai multe distribuții (de exemplu, stabil și testare). APT atribuie o prioritate fiecărei versiuni disponibile. Sub rezerva constrângerilor de dependență,
apt-get
selectează versiunea cu cea mai mare prioritate pentru instalare. Preferințele APT anulează prioritățile pe care APT le atribuie versiunilor de pachete în mod implicit, oferind astfel utilizatorului controlul asupra celei selectate pentru instalare.Mai multe instanțe ale aceleiași versiuni a unui pachet pot fi disponibile atunci când sursele Fișierul .list (5) conține referințe la mai multe surse. În acest caz,
apt-get
descarcă instanța listată mai devreme în fișierul sources.list (5). Preferințele APT nu afectează alegerea instanței, ci doar varianta.
Prioritățile determină doar versiunea (așa cum este specificat de numărul versiunii) de este instalat un pachet. Odată ce acest lucru este stabilit, primul depozit de pachete disponibil este utilizat pentru a-l descărca.