-
Notifications
You must be signed in to change notification settings - Fork 0
Repositories and Priority.ru
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, определяется автоматически), решает, какому приоритету он принадлежит.
# 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 |
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исправляет, как из него берутся пакеты и ключ.
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.)
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 - slackpkg + slackpkg+ in one - Apache-2.0 - by Ioannis Anagnostakis (rizitis) - beta / WIP, for Slackware -current (64-bit & 32-bit)
Getting started
Using slacker
- Commands
- Common Workflows
- Distribution Upgrade
- Repositories and Priority
- Package History
- Dependencies
- Docker
- Templates
- Blacklist
Trust & safety
Reference
For contributors