Как установить обновления только из определенного репозитория?

Как я могу ограничить обновления, которые установлены обновлениями из определенного набора репозиториев? Это вообще возможно?

39
задан 30 August 2014 в 21:12

6 ответов

Использование Pinning

Пиннинг - это процесс, который позволяет вам оставаться в стабильной версии Ubuntu (или любой другой системы Debian) при получении пакетов из более новой версии. & Mdash; help.ubuntu.com

Вы можете отключить автоматические обновления из определенных репозиториев, не удаляя их полностью с помощью политик apt:

Чтобы отключить автоматические обновления из репозиторий repo, добавьте файл
/etc/apt/preferences.d/repo со следующим содержимым:

Package: *
Pin: release n=repo
Pin-Priority: 50

, который даст всем пакетам из этого репозитория более низкий приоритет, чем уже установленным пакетам (которые имеют 100 ).

Для получения дополнительной информации man apt_preferences или посетите Ubuntu Community Wiki .

0
ответ дан 30 August 2014 в 21:12

Вы можете указать выпуск с опцией -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, ...) ".

0
ответ дан 30 August 2014 в 21:12

Короткий ответ

Необходимо прикрепить репозитории, от которых Вы не хотите устанавливать с приоритетом меньше чем 100. Что означает (от apt_preference страница справочника)

100 <= P <500
заставляет версию быть установленной, если нет версия, доступная принадлежность некоторому другому распределению или установленной версии более свежа

И выбрать репозиторий для прикрепления, Вы использовали бы поля из репозиториев Release файл. Такой как archive, label, release, version и т.д. Путем определения значений этих полей можно точно выбрать репозиторий и присвоить предпочтительный приоритет ему. Проверьте apt_preference страницу на большее количество деталей.


Длинный ответ

Перед продолжением мы должны знать некоторую важную вещь о прикреплении. Они включают

  1. Поля Release файлы и Это отображаются на apt-cache policy вывод

  2. Формат способных предпочтительных файлов

  3. Используя 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. 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 страница справочника для этого.

2. Прикрепите формат файла

Контакт или способные предпочтительные файлы находятся в /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: и это - значение, число. Который показывает приоритет целенаправленных объектов выше.

3. Используя 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 в Файле версии. Для успешного прикрепления мы должны объединить больше полей в файле Контакта.


Некоторые примеры

Прикрепите репозиторий PPA

Для прикрепления пакетов из репозитория мы должны быть нацелены на него с помощью информации, найденной от 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 страница руководства для деталей.

11
ответ дан 30 August 2014 в 21:12

Альтернативой на основе графического интерфейса было бы открыть центр программного обеспечения и выбрать «Правка»> «Источники программного обеспечения» ...

Software Sources with Ubuntu software tab selected

Software Sources with other software tab selected

все, что вам нужно сделать, это снять отметки с репозиториев, из которых вы не хотите обновлений.

Надеюсь, это поможет

0
ответ дан 30 August 2014 в 21:12

Очевидный выбор - изменить /etc/apt/sources.list и закомментировать все остальные репозитории, а затем запустить

apt-get update && apt-get upgrade && apt-get autoclean

И затем удалить комментарии из sources.list. Возможно, это не самый лучший способ, но по крайней мере apt-get на страницах руководства не указано, как это сделать.

В соответствующей заметке, например, процесс обновления дистрибутива Ubuntu отключает все сторонние репозитории во время обновления (и не просто запускайте некоторые опции, чтобы временно исключить их).

0
ответ дан 30 August 2014 в 21:12

Еще один вариант графического интерфейса - просто выбрать источник в менеджере пакетов Synaptic.

  1. Поиск имени пакета, который вы хотите установить
  2. Нажмите кнопку Origin
  3. Выберите репозиторий, который вы хотите установить, из
  4. пакеты
  5. Применить
0
ответ дан 30 August 2014 в 21:12

Другие вопросы по тегам:

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