După mai multe săpături, mi-am dat seama.
TL;DR
Pin: eliberați X=Y
filtrează împotriva câmpurilor din fișierul Release folosind notația scurtă. În fișierul de lansare, versiunea ar trebui să fie versiunea eliberare. de ex.) pentru Debian bullseye ai putea avea Pin: eliberați v=11
, sau pentru Ubuntu Jammy ai putea avea Pin: eliberare v=22.04
. Originea trebuie să fie numele autorului sau vânzătorului. de exemplu.) Pin: lansare o=LP-PPA-mozillateam
.
Pin: versiunea X
filtrează împotriva versiunii pachetului. de exemplu.) Pin: versiunea 1:91
.
Pin: originea X
filtrează împotriva numelui de gazdă. de exemplu.) Pin: origine ppa.launchpad.net
.
Eliberare fișier
În Determinarea versiunii pachetului și a proprietăților de distribuție
sectiune de man apt_preferences
găsim asta.
Locațiile listate în fișierul sources.list(5) ar trebui să furnizeze fișiere Pachete și Lansare pentru a descrie pachetele disponibile în acea locație.
Deci fiecare locație (care are o origine) are un fișier de eliberare pentru fiecare versiune disponibilă.În acel link, vedem că fișierul de lansare este găzduit la dists/$DIST/InRelease
.
Pe aparatul meu local avem
politica $ apt-cache
500 Pachete http://ppa.launchpad.net/mozillateam/ppa/ubuntu jammy/main amd64
lansare v=22.04,o=LP-PPA-mozillateam,a=jammy,n=jammy,l=Firefox ESR și Thunderbird stabil build,c=main,b=amd64
origine ppa.launchpad.net
Aici, puteți vedea că mașina mea locală folosește dulceata
eliberare. Deci fișierul de lansare relevant se află la dists/jammy/InRelease
. Acest lucru ne oferă acest fișier aici: http://ppa.launchpad.net/mozillateam/ppa/ubuntu/dists/jammy/InRelease.
Acel fișier de lansare este creat de persoana care găzduiește depozitul și conține metainformații despre distribuție. Unele informații sunt opționale, iar altele nu. Unele dintre câmpurile opționale includ:
- Origine
- Eticheta
- Versiune
- Suită
- Nume de cod
Și unele dintre câmpurile neopționale includ:
Acesta este ceea ce filtrați atunci când specificați Pin: eliberați X=
în fișierul de preferințe. Este descris și când alergi politica apt-cache
. În exemplul de mai sus, avem:
- Origine:
o=LP-PPA-mozillateam
- Eticheta:
l=Firefox ESR
- Versiune:
v=22,04
- Suită:
a=jammy
- Nume de cod:
n=jammy
- Componente:
c=principal
NB: Nu am găsit nimic în pagina de manual în legătură cu b=
câmp din ieșirea politica apt-cache
comanda.
Origine
Pe lângă informațiile de mai sus din fișierul de lansare, locația are și o origine. Acest lucru este, de asemenea, inclus în rezultatul politica apt-cache
comanda. După cum puteți vedea pentru exemplul de mai sus, este ppa.launchpad.net
.
Acesta este ceea ce filtrezi atunci când incluzi Pin: originea X
în fișierul de preferințe.
În Efectul preferințelor APT
secțiunea paginii de manual, are această propoziție utilă:
Aceasta nu trebuie confundată cu Originea unei distribuții, așa cum este specificată într-un fișier de lansare.Ceea ce urmează etichetei „Origine:” într-un fișier Release nu este o adresă de internet, ci un nume de autor sau furnizor, cum ar fi „Debian” sau „Ximian”.
Versiune
Înapoi la Determinarea versiunii pachetului și a proprietăților de distribuție
secțiunea paginii de manual.
După cum s-a menționat mai sus, se precizează:
Locațiile listate în fișierul sources.list(5) ar trebui să furnizeze fișiere Pachete și Lansare pentru a descrie pachetele disponibile în acea locație.
Deci, pe lângă acest fișier de lansare, avem și un fișier de pachete. Pagina de manual continuă să spună:
Doar două rânduri din fiecare înregistrare [din fișierul pachetului] sunt relevante pentru setarea priorităților APT:
Pachetul: linia
    dă numele pachetului
Versiunea: linia
    oferă numărul versiunii pentru pachetul numit
Acest lucru este diferit de ceea ce spune pentru câmpul Versiune al Eliberare dosar, pentru care scrie
Versiunea: linia
    denumește versiunea de lansare. De exemplu, pachetele din arbore ar putea aparține versiunii 11 a versiunii Debian.
Dacă găsim unul dintre aceste fișiere pachet, putem vedea asta. Pentru pachetul de mai sus, pentru arhitectura mea, este aici: http://ppa.launchpad.net/mozillateam/ppa/ubuntu/dists/jammy/main/binary-amd64/Packages.xz
În acea arhivă comprimată, avem un Pachete
fișier care conține o listă cu toate pachetele disponibile și versiunile acestora (și multe alte informații). Iată o parte a unuia dintre numeroasele pachete disponibile:
Pachet: Thunderbird
Prioritate: optional
Sectiunea: mail
Dimensiune instalată: 227239
Menținător: Echipa Ubuntu Mozilla <[email protected]>
Arhitectură: amd64
Versiune: 1:91.5.1+build1-0ubuntu1
Această versiune este ceea ce vă potriviți atunci când includeți Pin: versiunea X
în fișierul de preferințe.
Dacă fugi politica apt-cache
pe un anumit pachet, puteți vedea versiunile disponibile pentru acel pachet.
$ politica apt-cache thunderbird
Thunderbird:
Instalat: 1:78.14.0-1~deb11u1
Candidat: 1:78.14.0-1~deb11u1
Tabel de versiuni:
1:91.5.1+build1-0ubuntu1 500
500 Pachete http://ppa.launchpad.net/mozillateam/ppa/ubuntu jammy/main amd64
1:91.5.1-1+b2 10
10 http://ftp.us.debian.org/debian unstable/main Pachete amd64
1:91.5.0-2~deb11u1 500
500 http://security.debian.org/debian-security bullseye-security/main Pachete amd64
*** 1:78.14.0-1~deb11u1 900
900 http://deb.debian.org/debian bullseye/main Pachete amd64
100 /var/lib/dpkg/status
Confuzie cu versiunea
Se pare că versiunea specificată în fișierul de lansare nu pare întotdeauna corectă. De exemplu, pentru Google Chrome, avem asta:
politica $ apt-cache
900 http://dl.google.com/linux/chrome/deb stable/main pachete amd64
versiune v=1.0,o=Google LLC,a=stable,n=stable,l=Google,c=main,b=amd64
origine dl.google.com
Nu sunt sigur ce ar trebui să reprezinte această versiune, deoarece nu se potrivește cu versiunile din fișierul pachetelor:
$ grep „Pachet\|Versiune” /var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_main_binary-amd64_Packages
Pachet: google-chrome-beta
Versiune: 99.0.4844.17-1
Pachet: google-chrome-stable
Versiune: 98.0.4758.80-1
Pachet: google-chrome-unstable
Versiune: 100.0.4867.0-1