EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE
Repository e priorità
Questa è l'idea che definisce slacker, e ciò che lo distingue da un semplice strumento di mirror: ogni repository vive in un unico modello ordinato per priorità, e la priorità non viene mai violata in silenzio.
La regola di priorità
Quando lo stesso nome di pacchetto è offerto da più repository, vince quello del repository di priorità più alta. Ancora più importante:
Un pacchetto installato non viene mai migrato in silenzio verso un altro repository, e non viene mai retrocesso. Un candidato è proposto solo da un repository di priorità maggiore o uguale. L'unica eccezione è un
repo:nameesplicito.
Così, dare a un repository una priorità alta e distinta blocca i suoi pacchetti: nulla da un repository inferiore può sostituirli, nemmeno con un numero di versione più recente.
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#161b22','primaryBorderColor':'#1f6feb','primaryTextColor':'#e6edf3','lineColor':'#6e7781','fontFamily':'monospace'}}}%%
flowchart TB
I["pacchetto installato<br/>(il suo build tag = la sua sorgente)"] --> D{"priorità del repo candidato<br/>vs la sorgente installata"}
D -->|maggiore o uguale| U["può aggiornare / sostituire"]
D -->|minore| K["mantenuto - mai retrocesso<br/>mai migrato"]
PIN["repo:name"] -. "forza un repo,<br/>scavalcando la priorità" .-> U
classDef grey fill:#0d1117,stroke:#6e7781,color:#8b949e;
classDef blue fill:#0d1117,stroke:#1f6feb,color:#e6edf3;
classDef green fill:#0d1117,stroke:#2ea043,color:#e6edf3;
class I,PIN grey
class D blue
class U green
class K grey
Come fa slacker a conoscere la «sorgente» di un pacchetto installato senza un
database? Dal suo build tag — il campo build meno le cifre iniziali (1_SBo →
_SBo, 7cf → cf, 1 → ufficiale). Una riga tag-priority dell'utente, o il
repository binario di priorità più alta che fornisce quell'etichetta (cf →
conraid, alien → alienbob, rilevato automaticamente), decide la priorità a cui
appartiene.
Il file repos
# priority name url|mirror|mirror/<subpath> [flags]
100 slackware mirror official
200 patches mirror/patches subtree immutable
90 extras mirror/extra subtree immutable
85 testing mirror/testing subtree immutable
80 conraid https://slackers.it/repository/slackware64-current immutable
60 alienbob https://slackware.nl/people/alien/sbrepos/current/x86_64
# righe tag-priority (possono condividere una priorità):
100 SBo _SBo
100 local _rtz
Il campo URL
| Forma | Significato |
|---|---|
| un URL letterale | https://, http://, o file:// (l'ultimo per un clone locale / NFS / supporto montato — tre barre per un percorso assoluto) |
mirror |
la riga attiva di mirrors, così com'è — usala per il repository ufficiale |
mirror/<sottopercorso> |
il mirror attivo con un sottopercorso aggiunto (mirror/extra, mirror/testing, mirror/patches) — un sottoalbero che segue il mirror che hai scelto |
Un URL punta alla radice del repository che contiene PACKAGES.TXT; per i
mirror ufficiali, MANIFEST.bz2 vive in una sottocartella per architettura che
slacker individua automaticamente.
I flag
| Flag | Cosa fa |
|---|---|
official |
Marca il repository tracciato: alimenta show-changelog ed è il predefinito di install-new. La collocazione resta solo per priorità — il repository ufficiale può stare ovunque. |
immutable |
Ogni pacchetto attribuito a questo repository è tenuto fuori da clean-system. Usalo per extra/testing/patches che tieni installati, invece di mettere in lista nera ciascuno. |
subtree |
Questo URL è un sottoalbero di distribuzione Slackware (extra, patches, testing, pasture). Il loro PACKAGES.TXT elenca le posizioni relative alla radice della distribuzione, quindi i pacchetti e GPG-KEY sono scaricati dall'URL padre (radice) mentre i metadati vengono dall'URL stesso. Senza, quei pacchetti danno 404 con un segmento di percorso raddoppiato. I quattro sottoalberi devono sempre portare questo flag. |
verify=... |
Override di verifica per repository (vedi Security). |
mirror/extra+subtreevanno in coppia.mirror/extrarisolve l'URL;subtreecorregge come pacchetti e chiave vengono scaricati da esso.
Pinning e selettori
Un PATTERN sulla riga di comando può essere:
| Forma | Corrisponde a |
|---|---|
firefox |
un nome di pacchetto esatto |
python |
una sottostringa di nome — tutti i python-* |
kde |
una serie Slackware (a, ap, d, k, kde, l, n, t, x, xap, xfce, y, …) — solo quella serie, mai sottostringhe |
repo:name |
un pin — forza un repository senza riguardo alla priorità (es. alienbob:vlc) |
@repo |
un selettore d'insieme — ogni pacchetto di quel repository (install @gnome, remove @gnome) |
@_tag |
ogni pacchetto con quell'etichetta di build (remove @_SBo) |
La
@è obbligatoria, così una parola nuda non viene mai scambiata per un repository. Un@repo/@_tagsconosciuto dà un suggerimento «did you mean» ed elenca i repository e le etichette disponibili.
Quando un pattern corrisponde a più di un pacchetto, install/upgrade/reinstall/
remove mostrano un elenco numerato — Invio per tutti, numeri/intervalli come
1 3 5 o 2-4, n per annullare.
Non esiste un jolly
*per la selezione da riga di comando. Un*senza apici viene espanso dalla tua shell nei nomi di file della cartella corrente prima che slacker venga eseguito (slacker non vede mai il*e non legge mai la tua cartella); se ciò produce una valanga di argomenti non-pacchetto, slacker lo riconosce e rifiuta il comando, senza cambiare nulla. Metti tra apici un pattern letterale, o usa@repoper un intero repository. (La Blacklist è l'unico posto in cui i pattern sono glob/regex.)
Gestire i repository dalla CLI
slacker add-repo 85 ktown https://slackware.nl/people/alien/ktown/current/x86_64
slacker add-repo 90 extras mirror/extra subtree immutable
slacker del-repo ktown
slacker pri-repo 95 extras # riregolare la priorità di un repo esistente
slacker add-tag 100 SBo _SBo
slacker del-tag _SBo
slacker list-repos # priorità, verify, flag, numero di installati
add-repo valida la riga e, dopo conferma, scarica e controlla (vets) il
repository (vedi Security).
pri-repo PRIORITY NAME cambia la priorità di un repository che hai già. Verifica
che NAME sia un repository attivo (suggerendo la corrispondenza più vicina in
caso di errore di battitura) e rifiuta una PRIORITY già detenuta da un altro
repository, nominando il conflitto così che tu scelga un altro valore — le priorità
devono restare distinte. Viene riscritta solo la priorità di quella riga; l'URL e i
flag restano esattamente com'erano.
slacker
Getting started
Using slacker
- Commands
- Common Workflows
- Distribution Upgrade
- Repositories and Priority
- Package History
- Dependencies
- Docker
- Templates
- Blacklist
Trust & safety
Reference
For contributors
slacker - slackpkg + slackpkg+ in one - Apache-2.0 - by Ioannis Anagnostakis (rizitis) - beta / WIP, for Slackware -current (64-bit & 32-bit)