Есть ли способ добавить пакеты вишни из репозитория ppa, который вы добавляете? То есть исключить некоторые из обновлений при включении других?
Например, я хочу только пакет chromium-browser из этого репозитория, но не остальные. Поэтому я не хочу, чтобы мои sudo apt-get upgrade
другие пакеты ppa (кроме chromium-browser) устанавливались поверх моих существующих, только этот.
Я понимаю, что это лицензия на то, чтобы стрелять себе в ногу, если я неправильно читаю зависимости и исключаю те, которые необходимы для включенных мной, но я точно знаю, что в этом случае другие пакеты не являются зависимостями для этого.
Это вообще возможно? Может быть, есть какой-нибудь белый / черный список или что-то еще?
Ответы:
Нашел один способ сделать это.
Хитрость заключается в использовании двух пунктов закрепления. Первый, чтобы запретить ВСЕ пакеты из PPA, а второй, чтобы выбрать те, которые вы хотите.
Поэтому для примера выше я сначала добавляю ppa как обычно:
Теперь, если я запустил политику apt-cache, она покажет мне, что доступна более новая версия chromium-browser и она будет установлена с обновлением, потому что она имеет тот же приоритет (500), что и мой текущий chromium-browser.
Это замечательно, что этот пакет, но я не хочу, чтобы другие в этом ppa (которые также имеют приоритет 500) для установки. Прямо сейчас, если я попытаюсь обновить, я получу больше, чем просто пакеты хрома, которые я хочу из этого хранилища:
Так что я могу сказать apt, что я хочу, чтобы все пакеты в этом ppa, в данном случае webapps-preview, имели более низкий приоритет, за исключением пакетов с именем «chromium ». Механизм для этого - закрепление пакета
Я создаю файл в /etc/apt/preferences.d/ с двумя предложениями. Первый говорит, что все пакеты в ppa webapps-preview имеют более низкий приоритет, чем обычный (так что они не являются предпочтительными, даже если у них более высокий номер версии. Второе предложение частично переопределяет первое, говоря, что пакеты даны в что ppa с "chromium" в названии имеет тот же приоритет, что и другие пакеты, так что он будет установлен (имея более высокий номер версии)
Чтобы определить правильную строку для опции «Pin: release», мы можем снова использовать политику apt-cache.
Для версий apt <0.8.14 закрепленные пакеты должны быть указаны явно, поскольку подстановочные знаки не работают:
И теперь, когда я пытаюсь обновить, я получаю только пакеты, которые я хочу от этого ppa, а не другие. Все красиво подобрано для меня:
источник
Вы также можете выбрать релиз, из которого хотите установить, с помощью
?origin
селектора:Итак, в вашем конкретном случае вы можете использовать:
Или вы можете указать версию, используя
<packagename>=<version>
:источник
На самом деле вы можете «выбрать вишню» определенных пакетов через Synaptic, и это очень просто. Это работает так:
Если вы хотите сделать это только для определенных PPA, выберите «Origin» (нижний левый угол) в окне Synaptic, а затем выберите PPA, который вы хотите изменить.
выберите все пакеты, которые вы больше не хотите обновлять автоматически.
выберите меню «Версия пакета / блокировки». Все выбранные вами пакеты больше не будут обновляться автоматически, пока вы не разблокируете их снова.
источник