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
Репозитории и приоритет
Это определяющая идея slacker и то, что отличает его от простого инструмента для зеркал: каждый репозиторий живёт в единой модели, упорядоченной по приоритету, и приоритет никогда не нарушается молча.
Правило приоритета
Когда одно и то же имя пакета предлагают несколько репозиториев, побеждает тот из репозитория с наивысшим приоритетом. Что важнее:
Установленный пакет никогда не мигрирует молча в другой репозиторий и никогда не понижается. Кандидат предлагается только из репозитория с бóльшим или равным приоритетом. Единственное исключение — явный
repo:name.
Так, присвоив репозиторию отдельный высокий приоритет, вы блокируете его пакеты: ничто из репозитория с более низким приоритетом не может их заменить, даже с более новым номером версии.
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#161b22','primaryBorderColor':'#1f6feb','primaryTextColor':'#e6edf3','lineColor':'#6e7781','fontFamily':'monospace'}}}%%
flowchart TB
I["установленный пакет<br/>(его build tag = его источник)"] --> D{"приоритет репо-кандидата<br/>против установленного источника"}
D -->|выше или равен| U["можно обновить / заменить"]
D -->|ниже| K["сохраняется - никогда не понижается<br/>никогда не мигрирует"]
PIN["repo:name"] -. "форсирует репо,<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 →
официальный). Пользовательская строка tag-priority или бинарный репозиторий с
наивысшим приоритетом, который поставляет эту метку (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:// (последнее — для локального клона / NFS / смонтированного носителя; три слеша для абсолютного пути) |
mirror |
активная строка из mirrors, как есть — используйте для официального репозитория |
mirror/<подпуть> |
активное зеркало с добавленным подпутём (mirror/extra, mirror/testing, mirror/patches) — поддерево, следующее за выбранным вами зеркалом |
URL указывает на корень репозитория, содержащий PACKAGES.TXT; для официальных
зеркал MANIFEST.bz2 находится в подкаталоге по архитектуре, который slacker
находит автоматически.
Флаги
| Флаг | Что делает |
|---|---|
official |
Помечает отслеживаемый репозиторий: он питает show-changelog и является источником по умолчанию для install-new. Размещение по-прежнему только по приоритету — официальный репозиторий может стоять где угодно. |
immutable |
Любой пакет, отнесённый к этому репозиторию, не трогается командой clean-system. Используйте для extra/testing/patches, которые держите установленными, вместо занесения каждого в чёрный список. |
subtree |
Этот URL — поддерево дистрибутива Slackware (extra, patches, testing, pasture). Их PACKAGES.TXT указывает расположения относительно корня дистрибутива, поэтому пакеты и GPG-KEY берутся из родительского (корневого) URL, а метаданные — из самого URL. Без него такие пакеты дают 404 с удвоенным сегментом пути. Четыре поддерева всегда должны нести этот флаг. |
verify=... |
Переопределение проверки для репозитория (см. Security). |
mirror/extra+subtreeидут в паре.mirror/extraразрешает URL;subtreeисправляет, как из него берутся пакеты и ключ.
Закрепление (pinning) и селекторы
PATTERN в командной строке может быть:
| Форма | Соответствует |
|---|---|
firefox |
точному имени пакета |
python |
подстроке имени — всем python-* |
kde |
серии Slackware (a, ap, d, k, kde, l, n, t, x, xap, xfce, y, …) — только этой серии, никогда подстрокам |
repo:name |
pin — форсирует один репозиторий независимо от приоритета (напр. alienbob:vlc) |
@repo |
селектор множества — каждый пакет в этом репозитории (install @gnome, remove @gnome) |
@_tag |
каждый пакет с этой меткой build (remove @_SBo) |
@обязателен, чтобы голое слово никогда не приняли за репозиторий. Неизвестный@repo/@_tagдаёт подсказку «did you mean» и перечисляет доступные репозитории и метки.
Когда шаблон соответствует более чем одному пакету,
install/upgrade/reinstall/remove показывают нумерованный список — Enter для
всех, номера/диапазоны вроде 1 3 5 или 2-4, n для отмены.
Подстановочного знака
*для выбора в командной строке нет. Незакавыченный*раскрывается вашей оболочкой в имена файлов текущего каталога ещё до запуска slacker (slacker никогда не видит*и не читает ваш каталог); если это даёт поток аргументов, не являющихся пакетами, slacker распознаёт это и отказывает в команде, ничего не меняя. Заключите буквальный шаблон в кавычки или используйте@repoдля целого репозитория. (Blacklist — единственное место, где шаблоны являются glob/regex.)
Управление репозиториями из 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 # перенастроить приоритет существующего репо
slacker add-tag 100 SBo _SBo
slacker del-tag _SBo
slacker list-repos # приоритет, verify, флаги, число установленных
add-repo проверяет строку и, после подтверждения, загружает и проверяет (vets)
репозиторий (см. Security).
pri-repo PRIORITY NAME меняет приоритет репозитория, который у вас уже есть. Он
проверяет, что NAME — активный репозиторий (предлагая ближайшее совпадение при
опечатке), и отказывает в PRIORITY, уже занятом другим репозиторием, называя
конфликт, чтобы вы выбрали другое значение — приоритеты должны оставаться
различными. Переписывается только приоритет этой строки; URL и флаги остаются
точно такими, как были.
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)