This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
EN · EL · FR · ES · IT · RU · ZH · AR · HI · PT · DE
Repositories και προτεραιότητα
Αυτή είναι η καθοριστική ιδέα του slacker, κι αυτό που τον ξεχωρίζει από ένα απλό εργαλείο mirror: κάθε repository ζει μέσα σ' ένα μοντέλο ταξινομημένο κατά προτεραιότητα, κι η προτεραιότητα δεν παραβιάζεται ποτέ σιωπηλά.
Ο κανόνας της προτεραιότητας
Όταν το ίδιο όνομα πακέτου προσφέρεται από πολλά repositories, κερδίζει αυτό από το repository με την υψηλότερη προτεραιότητα. Πιο σημαντικό:
Ένα εγκατεστημένο πακέτο δε μεταναστεύει ποτέ σιωπηλά σ' άλλο repository, και δεν υποβαθμίζεται ποτέ. Ένας υποψήφιος προτείνεται μόνο από repository υψηλότερης ή ίσης προτεραιότητας. Η μόνη εξαίρεση είναι ένα ρητό
repo:namepin.
Έτσι, δίνοντας σ' ένα repository μια διακριτή, υψηλή προτεραιότητα κλειδώνεις τα πακέτα του: τίποτα από repo χαμηλότερης προτεραιότητας δεν μπορεί να τα αντικαταστήσει, ακόμη κι αν έχει νεότερο αριθμό έκδοσης.
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#161b22','primaryBorderColor':'#1f6feb','primaryTextColor':'#e6edf3','lineColor':'#6e7781','fontFamily':'monospace'}}}%%
flowchart TB
I["εγκατεστημένο πακέτο<br/>(το build tag = η πηγή του)"] --> D{"προτεραιότητα υποψήφιου repo<br/>έναντι της εγκατεστημένης πηγής"}
D -->|υψηλότερη ή ίση| U["επιτρέπεται αναβάθμιση / αντικατάσταση"]
D -->|χαμηλότερη| K["διατηρείται - ποτέ υποβάθμιση<br/>ποτέ μετανάστευση"]
PIN["repo:name pin"] -. "επιβάλλει repo,<br/>παρακάμπτοντας την προτεραιότητα" .-> 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
Πώς ξέρει ο slacker την «πηγή» ενός εγκατεστημένου πακέτου χωρίς βάση δεδομένων;
Από το build tag του — το πεδίο build μείον τα αρχικά ψηφία (1_SBo → _SBo,
7cf → cf, 1 → official). Μια γραμμή tag-priority του χρήστη, ή το repo με την
υψηλότερη προτεραιότητα που φέρνει αυτό το tag (cf → conraid, alien → alienbob,
με αυτόματο εντοπισμό), καθορίζει την προτεραιότητα στην οποία ανήκει.
Το αρχείο 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
# γραμμές tag-priority (μπορούν να μοιράζονται προτεραιότητα):
100 SBo _SBo
100 local _rtz
Το πεδίο URL
| Μορφή | Σημασία |
|---|---|
| ένα κανονικό URL | https://, http://, ή file:// (το τελευταίο για τοπικό clone / NFS / προσαρτημένο μέσο — τρεις κάθετοι για απόλυτη διαδρομή) |
mirror |
η ενεργή γραμμή από το mirrors, ως έχει — χρησιμοποίησέ το για το επίσημο repo |
mirror/<subpath> |
το ενεργό mirror με ένα subpath στο τέλος (mirror/extra, mirror/testing, mirror/patches) — ένα subtree που ακολουθεί όποιο mirror διάλεξες |
Ένα URL δείχνει στη ρίζα του repo που περιέχει το PACKAGES.TXT· για τα
επίσημα mirror, το MANIFEST.bz2 ζει σ' έναν ανά-αρχιτεκτονική υποκατάλογο που ο
slacker βρίσκει αυτόματα.
Τα flags
| Flag | Τι κάνει |
|---|---|
official |
Σημειώνει το παρακολουθούμενο repo: τροφοδοτεί το show-changelog κι είναι το προεπιλεγμένο για το install-new. Η θέση παραμένει αποκλειστικά κατά προτεραιότητα — το επίσημο repo μπορεί να σταθεί οπουδήποτε. |
immutable |
Κάθε πακέτο που αποδίδεται σ' αυτό το repo κρατιέται έξω από το clean-system. Χρησιμοποίησέ το για extra/testing/patches που κρατάς εγκατεστημένα, αντί να κάνεις blacklist το καθένα. |
subtree |
Αυτό το URL είναι subtree διανομής του Slackware (extra, patches, testing, pasture). Το PACKAGES.TXT τους παραθέτει τις τοποθεσίες πακέτων σχετικά με τη ρίζα της διανομής, οπότε τα πακέτα και το GPG-KEY λαμβάνονται από το γονικό (root) URL ενώ τα metadata από το ίδιο το URL. Χωρίς αυτό, τα πακέτα δίνουν 404 με διπλασιασμένο τμήμα διαδρομής. Τα τέσσερα subtree πρέπει πάντα να φέρουν αυτό το flag. |
verify=... |
Παράκαμψη επαλήθευσης ανά repo (δες Security). |
Το
mirror/extra+subtreeπάνε ζευγάρι. Τοmirror/extraεπιλύει το URL· τοsubtreeδιορθώνει το πώς λαμβάνονται τα πακέτα και το κλειδί από αυτό.
Pinning και selectors
Ένα PATTERN στη γραμμή εντολών μπορεί να είναι:
| Μορφή | Ταιριάζει |
|---|---|
firefox |
ακριβές όνομα πακέτου |
python |
ένα substring ονόματος — όλα τα python-* |
kde |
μια σειρά (series) του Slackware (a, ap, d, k, kde, l, n, t, x, xap, xfce, y, …) — μόνο αυτή τη σειρά, ποτέ substrings |
repo:name |
ένα pin — επιβάλλει ένα repository ανεξάρτητα από προτεραιότητα (π.χ. alienbob:vlc) |
@repo |
ένας set selector — κάθε πακέτο σ' αυτό το repo (install @gnome, remove @gnome) |
@_tag |
κάθε πακέτο μ' αυτό το build tag (remove @_SBo) |
Το
@είναι υποχρεωτικό, ώστε μια σκέτη λέξη να μη μπερδεύεται ποτέ για repo. Ένα άγνωστο@repo/@_tagδίνει πρόταση «did you mean» και παραθέτει τα διαθέσιμα repos και tags.
Όταν ένα pattern ταιριάζει σε περισσότερα από ένα πακέτα, τα
install/upgrade/reinstall/remove δείχνουν αριθμημένη λίστα — Enter για όλα,
αριθμοί/εύρη όπως 1 3 5 ή 2-4, n για ακύρωση.
Δεν υπάρχει wildcard
*για επιλογή στη γραμμή εντολών. Ένα*χωρίς εισαγωγικά το επεκτείνει το shell σου στα ονόματα αρχείων του τρέχοντος καταλόγου πριν τρέξει ο slacker (ο slacker δε βλέπει ποτέ το*και δε διαβάζει ποτέ τον κατάλογό σου)· αν αυτό παράγει πλημμύρα από μη-πακέτα ορίσματα, ο slacker το αναγνωρίζει και αρνείται την εντολή, χωρίς ν' αλλάξει τίποτα. Βάλε σε εισαγωγικά ένα κυριολεκτικό pattern, ή χρησιμοποίησε@repoγια ολόκληρο repository. (Το Blacklist είναι το ένα μέρος όπου τα patterns είναι globs/regex.)
Διαχείριση repos από το 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 # επαναρρύθμιση προτεραιότητας υπάρχοντος repo
slacker add-tag 100 SBo _SBo
slacker del-tag _SBo
slacker list-repos # προτεραιότητα, verify, flags, πλήθος εγκατεστημένων
Το add-repo επικυρώνει τη γραμμή και, μετά από επιβεβαίωση, λαμβάνει και
ελέγχει (vets) το repo (δες Security).
Το pri-repo PRIORITY NAME αλλάζει την προτεραιότητα ενός repo που έχεις ήδη.
Ελέγχει ότι το NAME είναι ενεργό repo (προτείνοντας το κοντινότερο ταίριασμα σε
τυπογραφικό) κι αρνείται μια PRIORITY που κρατά ήδη άλλο repo, κατονομάζοντας τη
σύγκρουση ώστε να διαλέξεις άλλη τιμή — οι προτεραιότητες πρέπει να μένουν
διακριτές. Ξαναγράφεται μόνο η προτεραιότητα αυτής της γραμμής· το URL και τα flags
μένουν ακριβώς όπως ήταν.
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)