Как я могу ограничить обновления, которые установлены обновлениями из определенного набора репозиториев? Это вообще возможно?
Пиннинг - это процесс, который позволяет вам оставаться в стабильной версии Ubuntu (или любой другой системы Debian) при получении пакетов из более новой версии. & Mdash; help.ubuntu.com
blockquote>Вы можете отключить автоматические обновления из определенных репозиториев, не удаляя их полностью с помощью политик
apt
:Чтобы отключить автоматические обновления из репозиторий
repo
, добавьте файл
/etc/apt/preferences.d/repo
со следующим содержимым:Package: * Pin: release n=repo Pin-Priority: 50
, который даст всем пакетам из этого репозитория более низкий приоритет, чем уже установленным пакетам (которые имеют 100 ).
Для получения дополнительной информации
man apt_preferences
или посетите Ubuntu Community Wiki .
Вы можете указать выпуск с опцией -t
. В качестве примера я добавил следующий репозиторий в /etc/apt/sources.list
для установки последней версии Iceweasel:
deb http://mozilla.debian.net/ squeeze-backports iceweasel-release
Как вы знаете, в официальном репозитории Debian есть такой же пакет iceweasel
. Если я хочу установить 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, ...) ".
Необходимо прикрепить репозитории, от которых Вы не хотите устанавливать с приоритетом меньше чем 100. Что означает (от apt_preference
страница справочника)
100 <= P <500
заставляет версию быть установленной, если нет версия, доступная принадлежность некоторому другому распределению или установленной версии более свежа
И выбрать репозиторий для прикрепления, Вы использовали бы поля из репозиториев Release
файл. Такой как archive
, label
, release
, version
и т.д. Путем определения значений этих полей можно точно выбрать репозиторий и присвоить предпочтительный приоритет ему. Проверьте apt_preference страницу на большее количество деталей.
Перед продолжением мы должны знать некоторую важную вещь о прикреплении. Они включают
Поля Release
файлы и Это отображаются на apt-cache policy
вывод
Формат способных предпочтительных файлов
Используя Release
поля файлов для установки приоритета
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
. PPAs используют просто название выпуска этого, вот почему оно не поможет многому в Прикреплении.
Component говорит о вещи лицензирования. Это main
, multiverse
, restricted
, universe
в Ubuntu. В выводе это показывают как c=main
или c=restricted
и т.д. Большая часть использования PPAs main
для этого поля таким образом это не помогает в прикреплении очень также.
Архитектура об архитектуре ОС. Показанный как b=i386
или b=amd64
в выводе
Кодовое название является названием выпуска распределения. Для 16,04 это xenial
. Для 14,04 это trusty
. Показанный в apt-cache policy
вывод как n=xenial
или n=trusty
. Это - то же для всех репозиториев для единственного распределения обычно. Вот почему это не помогает в прикреплении очень.
Другая строка в apt-cache policy
вывод, запускающийся с origin
говорит интернет-источник репозитория. Это также может использоваться в прикреплении. Но не должен быть смешан с Release
файлы Origin
поле. Они отличаются.
Мы будем использовать эти значения для прикрепления репозитория.
Так, как мы используем pinning1 для ограничения репозитория?
Существует несколько способов управлять прикреплением, и только небольшое подмножество является эффективным для Ubuntu. Объяснение деталей выходит за рамки ответа все же. См. apt_preference
страница справочника для этого.
Контакт или способные предпочтительные файлы находятся в /etc/apt/preferences.d
папка. Каждое прикрепление содержит три строки.
Первая строка запускается с Package:
и пакет запятой-seperated имена следует. Регулярные выражения и шарики позволяются
Вторая строка запускается с Pin:
и это используется для предназначения для ряда пакетов.
Если мы хотим прикрепить пакеты от xenial
выше, чем xenial-updates
, мы будем использовать release a=xenial
.
Если мы захотим прикрепить версию 5.0, то мы будем использовать version 5.0
здесь. Башмаки шарика позволяются.
Или если мы хотим прикрепить пакеты от источника http://archive.ubuntu.com
, мы будем использовать origin "archive.ubuntu.com"
. Отметьте, мы не пишем http://
протоколируйте там.
Третья строка запускается с Pin-Priority:
и это - значение, число. Который показывает приоритет целенаправленных объектов выше.
Release
поля файлов для установки приоритетаВот пример
Package: *
Pin: release a=xenial
Pin-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, обеспеченному пакеты также, то это не будет работать. Поскольку PPAs используют то же название архива xenial
по умолчанию. Так, присваивая приоритет a=xenial
будет также относиться к тем пакетам. Например (после того, как включенный PPA),
13:31 $ apt-cache policy nautilus
nautilus:
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 repo и PPA имеет тот же приоритет 1001
, потому что они оба используют то же значение для Archive
в Файле версии. Для успешного прикрепления мы должны объединить больше полей в файле Контакта.
Для прикрепления пакетов из репозитория мы должны быть нацелены на него с помощью информации, найденной от apt-cache policy
команда. Мы просто видели это a=xenial
не поможет точному определению репозитория. Мы должны использовать несколько полей вместе с помощью запятой в предпочтительном файле для точного предназначения для репозитория.
Например, для предотвращения всех пакетов от http://ppa.launchpad.net/oibaf/graphics-drivers/
ppa, мы можем использовать
Package: *
Pin: release n=xenial,o=LP-PPA-oibaf-graphics-drivers
Pin-Priority: 10
Здесь мы используем значение кодового названия, а также 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
Проигнорируйте то, что это - Кандидат. Этот happended, потому что Это уже установлено в моей системе. Проверьте приоритет справа
Если мы хотим прикрепить репозиторий, информация о выпуске которого отсутствует, как этот http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04
, мы должны использовать другой метод. С тех пор никакой другой репозиторий не использует тот источник, мы можем безопасно использовать origin
прикрепить этот репозиторий.
Package: *
Pin: origin download.opensuse.org
Pin-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.