Правильное закрепление:Закрепление на основе нескольких критериев

Я пытаюсь закрепить пакет на основе более чем одного поля. В моем случае происхождение и версия.

Моя конкретная причина для этого состоит в том, чтобы пропинговать релиз Эрланга RabbitMQ в определенной версии. Я хочу предотвратить установку другой версии Erlang (из репозитория RabbitMQ)или версии, которую я хочу, из другого репозитория. В репозиториях RabbitMQ Bintray я ограничил версию, используя поле «component» в sources.list (. Они предоставили одну из них для основной версии Erlang. например. erlangполучит все версии, erlang-23.xполучит только 23. *версии Erlang. Это больше не делается с репозиториями, которые заменили Bintray )(. Это необходимо, поскольку базовая ОС может содержать пакеты той же основной версии, что и репозиторий RabbitMQ Erlang (, основанный на origin), а репозиторий RabbitMQ Erlang может содержать более новые версии Erlang, чем поддерживается RabbitMQ, который я хочу запустить (pin на основе версии))

Мой sources.listэкстракт:

deb https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/ubuntu bionic main
deb https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/ubuntu bionic main

Я не могу найти подробности о синтаксисе параметра Pin. (Есть примеры, но ничего более чем для одного поля)

Что я пробовал в файле в/etc/apt/preferences.d/:

  • Несколько записей:
Package: erlang*
Pin: origin dl.cloudsmith.io
Pin-Priority: 1000

Package: erlang*
Pin: version 1:23.*
Pin-Priority: 1000

Это приводит к тому, что и пакеты cloudsmith, и все версии версии 23.x установите приоритет 1000. (Если используются разные приоритеты, применяется только первый совпадающий -т.е. все пакеты cloudsmith.io получают приоритет из первого блока, пакеты cloudsmith 23.x не получают приоритет из второго блока)

  • Две Pinзаписи:
Package: erlang*
Pin: origin dl.cloudsmith.io
Pin: version 1:23.*
Pin-Priority: 1000

В результате применяется только первое поле(originв данном случае)

  • Несколько записей, разделенных пробелами-:
Package: erlang*
Pin: origin dl.cloudsmith.io version 1:23.*
Pin-Priority: 1000

Это не соответствует ни одному пакету.

(Я проверил результаты с помощью apt-cache policyи поменял местами версию и источник, чтобы увидеть, учитываются ли обе версии или только одна)

(Другое, менее элегантное решение — понизить приоритет пакетов ОС. Это не удастся, если будет добавлено больше репозиториев)

0
задан 3 May 2021 в 17:27
1 ответ

man 5 apt_preferences объясняет, что несколько критериев могут быть определены с помощью списка, разделенного запятыми-подобного этому:

Pin: origin dl.cloudsmith.io, version 1:23.*
0
ответ дан 29 November 2021 в 09:01

Теги

Похожие вопросы