Как мне ограничить количество устанавливаемых обновлений обновлениями из определенного набора репозиториев? Возможно ли это вообще?
Вы можете указать выпуск с помощью -t вариант. В качестве примера я добавил следующий репозиторий в /etc/apt/sources.list чтобы установить последнюю версию Iceweasel:
deb http://mozilla.debian.net/ squeeze-backports iceweasel-releaseКак вы знаете, существует такой же пакет iceweasel в официальном репозитории Debian. Если я хочу установить Iceweasel из этого конкретного выпуска, я запускаю:
apt-get install -t squeeze-backports iceweaselсо страницы руководства apt-get:
-t, --target-release, --default-release This option controls the default input to the policy engine, it creates a default pin at priority 990 using the specified release string. This overrides the general settings in /etc/apt/preferences. Specifically pinned packages are not affected by the value of this option. In short, this option lets you have simple control over which distribution packages will be retrieved from. Some common examples might be -t '2.1*', -t unstable or -t sid. Configuration Item: APT::Default-Release; see also the apt_preferences(5) manual page.Я думаю, что это лучшее решение.
ОБНОВЛЕНИЕ: Как @SuB упоминалось в комментарии, "-t указывает выпуск, а не имя репозитория. В Ubuntu нет имени репозитория (в отличие от linux на базе RedHat, таких как RHEL, Fedora, CentOS, ...)".
Используйте Закрепление
Закрепление - это процесс, который позволяет вам оставаться в стабильной версии Ubuntu (или любой другой системы debian), получая пакеты из более поздней версии. — help.ubuntu.com
Вы можете отключить автоматические обновления из определенных репозиториев, не удаляя их полностью с помощью apt полисы:
Чтобы отключить автоматическое обновление из репозитория repo, добавьте файл/etc/apt/preferences.d/repo со следующим содержанием:
Package: *Pin: release n=repoPin-Priority: 50Что даст всем пакетам из этого репозитория более низкий приоритет, чем уже установленным пакетам (которых 100).
Для получения дополнительной информации man apt_preferences или проверьте Вики сообщества Ubuntu.
Короткий Ответ
Вам нужно закрепить репозитории, из которых вы не хотите устанавливать, с приоритетом менее 100. Что означает (от apt_preference справочная страница)
100 <= P < 500
вызывает установку версии, если нет доступной версии, принадлежащей какому-либо другому дистрибутиву, или установленная версия является более поздней
А чтобы выбрать репозиторий для закрепления, вы бы использовали поля из репозиториев' Release файл. Такие как archive, label, release, version и т.д. Указав значения этих полей, вы можете точно выбрать репозиторий и назначить ему предпочтительный приоритет. Проверьте apt_preference страница для получения более подробной информации.
Длинный Ответ
Прежде чем продолжить, нам нужно знать кое-что важное о закреплении. К ним относятся
Области применения
Releaseфайлы, и это сопоставление сapt-cache policyвыходФормат файлов предпочтений apt
С помощью
Releaseполя файлов для установки приоритета
1. Области применения Release файл и apt-cache policy выход
От Debian Wiki статья
- Описание
- Этикетка
- Происхождение
- Версия
- Набор
- Кодовое имя
- Компоненты
- Архитектуры
Вы увидите вывод из apt-cache policy как эти
500 http://mirrors.ircam.fr/pub/ubuntu/archive xenial/main amd64 Packages release v=16.04,o=Ubuntu,a=xenial,n=xenial,l=Ubuntu,c=main,b=amd64Значения в этих строках получены из Release файлы.
Описание задает описание для репозитория. Это не показано в
apt-cache policyвыходЭтикетка это метка репозитория. Многие репозитории имеют пустые метки. Это показано в
l=<label>в выходных данных.Происхождение это говорит о происхождении хранилища. Официальный репозиторий Ubuntu имеет
Ubuntuкак ценность. Показано какo=в выходных данныхВерсия это версия дистрибутива. Сейчас 16.04 по Гринвичу. Показано как
v=в выходных данныхНабор это то же самое, что и Архив. Из debian wiki это Название дистрибутива Debian, к которому принадлежат пакеты в этом каталоге (или для которого они предназначены), т.е. стабильный, тестируемый или нестабильный.. Для Ubuntu это
release-updates,release-securityи т.д. Например,xenial-updates,xenial-security. Это показано в выходных данных какa=xenial,a=xenial-security. PPA используют для этого только название выпуска, поэтому это не сильно поможет при закреплении.Компонент рассказывает о лицензировании. Это
main,multiverse,restricted,universeв Ubuntu. В выходных данных это показано какc=mainилиc=restrictedи т.д. Большинство PPA используютmainдля этого поля, таким образом, это также не очень помогает в закреплении.Архитектура речь идет об архитектуре операционной системы. Показано как
b=i386илиb=amd64в выходных данныхКодовое имя это название выпуска дистрибутива. На 16.04 это
xenial. На 14.04 этоtrusty. Показано вapt-cache policyвывод в видеn=xenialилиn=trusty. Обычно это одинаково для всех репозиториев для одного дистрибутива. Вот почему это не очень помогает в закреплении.
Другая строка в apt-cache policy вывод, начинающийся с origin указывает интернет-источник хранилища. Его также можно использовать при закреплении. Но не следует смешивать с Release файлы Origin поле. Это совсем другое дело.
Мы будем использовать эти значения для привязки репозитория.
Итак, как мы используем закрепление1 чтобы ограничить репозиторий?
Существует несколько способов управления закреплением, и только небольшое подмножество эффективно для Ubuntu. Однако подробное объяснение выходит за рамки ответа. Пожалуйста, обратитесь к apt_preference справочная страница за это.
2. Формат файла Pin-кода
Файлы настроек Pin-кода или apt находятся в /etc/apt/preferences.d папка. Каждое закрепление содержит три строки.
Первая строка начинается с
Package:далее следуют имена пакетов, разделенные запятыми. Разрешены регулярные выражения и глобусыВторая строка начинается с
Pin:и он используется для таргетирования набора пакетов.Если мы хотим закрепить пакеты из
xenialвыше, чемxenial-updates, мы будем использоватьrelease a=xenial.Если мы хотим закрепить версию 5.0, мы будем использовать
version 5.0здесь. Допускаются узоры в виде шариков.Или если мы хотим закрепить пакеты из источника
http://archive.ubuntu.com, мы будем использоватьorigin "archive.ubuntu.com". Обратите внимание, мы не пишемhttp://протокол есть.Третья строка начинается с
Pin-Priority:и его значение - это число. Что означает приоритетность указанных выше целевых пунктов.
3. Использование Release поля файлов для установки приоритета
Вот пример
Package: *Pin: release a=xenialPin-Priority: 1001В этом примере пакеты из xenial архивам придается более высокий приоритет, чем xenial-updates и xenial-security.
После закрепления запустите apt-cache policy nautilus показывает, что он действительно отдал более высокий приоритет более низкой версии из xenial архивировать по более высокой версии из xenial-updates архив. Обратите внимание на Candidate: линия.
nautilus: Installed: 1:3.18.5-0ubuntu1~xenial1 Candidate: 1:3.18.4.is.3.14.3-0ubuntu4 Version table: *** 1:3.18.5-0ubuntu1~xenial1 100 100 /var/lib/dpkg/status 1:3.18.4.is.3.14.3-0ubuntu5 500 500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages 1:3.18.4.is.3.14.3-0ubuntu4 1001 500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 PackagesНо, если мы хотим также отдать приоритет пакетам, предоставляемым PPA, это не сработает. Потому что PPA используют одно и то же имя архива xenial по умолчанию. Итак, присвоение приоритета a=xenial также будет применяться к этим пакетам. Например (после включения PPA),
13:31 $ apt-cache policy nautilusnautilus: Installed: 1:3.18.5-0ubuntu1~xenial1 Candidate: 1:3.18.5-0ubuntu1~xenial1 Version table: *** 1:3.18.5-0ubuntu1~xenial1 1001 500 http://ppa.launchpad.net/budgie-remix/ppa/ubuntu xenial/main amd64 Packages 500 http://ppa.launchpad.net/gnome3-team/gnome3/ubuntu xenial/main amd64 Packages 100 /var/lib/dpkg/status 1:3.18.4.is.3.14.3-0ubuntu5 500 500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages 1:3.18.4.is.3.14.3-0ubuntu4 1001 500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 PackagesТеперь версия кандидата - от PPA. Оба пакета из xenial архив официального репозитория Ubuntu и PPA имеют одинаковый приоритет 1001, потому что оба они используют одно и то же значение для Archive в файле выпуска. Чтобы успешно закрепить Pin-код, нам нужно объединить больше полей в файле Pin-кода.
Несколько примеров
Закрепите репозиторий PPA
Чтобы закрепить пакеты из репозитория, нам нужно настроить таргетинг на него, используя информацию, полученную из apt-cache policy команда. Мы только что видели, что a=xenial это не поможет точно указать репозиторий. Нам нужно использовать несколько полей вместе, используя запятую в файле предпочтений, чтобы точно настроить таргетинг на репозиторий.
Например, чтобы запретить всем пакетам http://ppa.launchpad.net/oibaf/graphics-drivers/ ppa, мы можем использовать
Package: *Pin: release n=xenial,o=LP-PPA-oibaf-graphics-driversPin-Priority: 10Здесь мы используем значение codename, а также Origin значение PPA. (Хотя значение кодового имени здесь на самом деле не требуется). Иногда репозиторий может пропустить эти значения. В этих случаях следует использовать некоторые другие методы. Выход из apt-cache policy libgl1-mesa-glx говорит, что это работает. Это понизило приоритет всех пакетов этого PPA.
libgl1-mesa-glx: Installed: 12.1~git1608200730.16ef7a~gd~x Candidate: 12.1~git1608200730.16ef7a~gd~x Version table: *** 12.1~git1608200730.16ef7a~gd~x 100 -10 http://ppa.launchpad.net/oibaf/graphics-drivers/ubuntu xenial/main amd64 Packages 100 /var/lib/dpkg/status 11.2.0-1ubuntu2.1 500 500 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages 11.2.0-1ubuntu2 500 500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 PackagesИгнорируйте тот факт, что это кандидат. Это произошло, потому что он уже установлен в моей системе. Проверьте приоритет справа
Закрепите репозиторий, если информация о выпуске отсутствует
Если мы хотим закрепить репозиторий, информация о выпуске которого отсутствует, например, этот http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04, мы должны использовать другой метод. Поскольку ни один другой репозиторий не использует этот источник, мы можем безопасно использовать origin чтобы закрепить этот репозиторий.
Package: *Pin: origin download.opensuse.orgPin-Priority: 10Примечание 1: Этот источник является источником из Интернета, а не тем, который указывает поставщика в файле выпуска.
Примечание 2: Pin-Priority число имеет особое значение. Проверять apt_preference страница руководства для получения более подробной информации.
>Альтернативой, основанной на графическом интерфейсе, было бы открыть центр программного обеспечения и выбрать редактировать источники программного обеспечения...


все, что вам нужно сделать, это снять галочки с репозиториев, из которых вы не хотите получать обновления.
Надеюсь, это поможет
Очевидным выбором является изменение /etc/apt/sources.list и закомментируйте все остальные репозитории, а затем запустите
apt-get update && apt-get upgrade && apt-get autocleanА затем удалите комментарии из sources.list Может быть, не самый лучший способ, но, по крайней мере apt-get справочные страницы не указывают никакого способа сделать это.
В связи с этим, например, процесс обновления дистрибутива Ubuntu отключает все сторонние репозитории во время обновления (и не просто запускайте какую-либо опцию, чтобы временно исключить их).
Еще один вариант графического интерфейса - просто выбрать источник в Synaptic package manager.
- Найдите имя пакета, который вы хотите установить
- Нажмите кнопку Источник
- Выберите репозиторий, из которого вы хотите установить
- Выберите пакеты
- Применять
Ваш заголовок и фактическая помощь, о которой вы просите, отличаются друг от друга.
Вы хотите иметь возможность указывать репозиторий во время выполнения, или это должно быть более статичным? В two answers ниже предположим последний вариант.
В идеале это было бы во время выполнения. Однако статического варианта вполне достаточно.