Вы хотите иметь возможность указывать репо во время выполнения или это должно быть более статичным? Эти два ответы ниже , предполагают , второй вариант.
Чепанг
В идеале это было бы во время выполнения. Статической опции достаточно, хотя.
Тон ван ден Хеувел
2
Ваш заголовок и фактическая помощь, которую вы запрашиваете, различны.
Сундара
Ответы:
29
Используйте закрепление
Пиннинг - это процесс, который позволяет вам оставаться в стабильной версии Ubuntu (или любой другой системы Debian) при получении пакетов из более новой версии. - help.ubuntu.com
Вы можете отключить автоматические обновления из определенных репозиториев, не удаляя их полностью с помощью aptполитик:
Чтобы отключить автоматическое обновление из репозитория repo, добавьте файл /etc/apt/preferences.d/repoсо следующим содержимым:
Package: *
Pin: release n=repo
Pin-Priority: 50
Что даст всем пакетам из этого репозитория более низкий приоритет, чем уже установленным пакетам (которые имеют 100).
Для получения дополнительной информации man apt_preferencesили проверьте вики-сообщество Ubuntu .
Обидно, единственный ответ apt_preferences - последний ...
Роберт Симер
как узнать какая версия от какого репо?
Макс. N
2
@MaxN вы обычно находите эту информацию, запустивapt-cache policy package-name
Анвар
Это не приведет к принудительному хранению хранилища во время обновления. потому release n=repoчто не будет никого кэшировать
Анвар
35
Вы можете указать релиз с -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, ...)».
Как вы видите в apt-getруководстве, -tукажите релиз, а не имя репозитория. В Ubuntu нет имени хранилища (в отличие от Linux на основе RedHat, такого как RHEL, Fedora, CentOS, ...)
SuB
1
@SuB Да, ты прав! Я перепутал имя репозитория с выпуском!
карикатурист
-t xenialработает для одного пакета. но все его зависимости все равно будут извлечены из более высоких пакетов
Anwar
10
Краткий ответ
Вам нужно закрепить репозитории, из которых вы не хотите устанавливать, с приоритетом менее 100. Что означает (со apt_preferenceстраницы руководства )
100 <= P <500
вызывает установку версии, если только не доступна версия, принадлежащая другому дистрибутиву, или установлена более поздняя версия
И чтобы выбрать репозиторий для закрепления, вы должны использовать поля из Releaseфайла репозитория . Такие , как archive, label, release, и versionт.д. Задавая значения этих полей, вы можете точно выбрать хранилище и присвоить нужный приоритет к нему. Проверьте страницу apt_preference для более подробной информации.
Длинный ответ
Прежде чем продолжить, мы должны знать некоторые важные вещи о закреплении. Те включает
Поля Releaseфайлов и их отображение на apt-cache policyвывод
Формат подходящих файлов предпочтений
Использование Releaseфайловых полей для установки приоритета
Описание устанавливает описание для хранилища. Это не показано в apt-cache policyвыводе
Метка это метка хранилища. Многие репозитории имеют пустые ярлыки. Это показано в l=<label>выводе.
Происхождение это говорит о происхождении хранилища. Официальный репозиторий Ubuntu имеет Ubuntuв качестве значения. Показано как o=на выходе
Версия - это версия дистрибутива. Для Ксениала 16.04. Показано как v=на выходе
Люкс такой же, как Архив . Из вики Debian это имя дистрибутива Debian, к которому относятся (или предназначены) пакеты в этом каталоге, то есть стабильные, тестируемые или нестабильные. , Для Ubuntu, это release-updates, и release-securityт.д. Так , например, xenial-updates, xenial-security. Это показано на выходе , как a=xenial, a=xenial-security. Для этого PPA использует только название релиза, поэтому в Pinning это не сильно поможет.
Компонент рассказывает о лицензировании. Это 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_preferenceman-странице для этого.
2. Пин формат файла
Файлы предпочтений 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файловых полей для установки приоритета
В этом примере пакеты из xenialархивов имеют более высокий приоритет, чем xenial-updatesи xenial-security.
После закрепления, запуск apt-cache policy nautilusпоказывает, что он действительно дал более высокий приоритет более низкой версии из xenialархива по сравнению с более высокой версией из xenial-updatesархива. Обратите внимание на Candidate:линию.
Но, если мы хотим отдать приоритет пакетам, предоставленным PPA, это не сработает. Потому что PPA xenialпо умолчанию используют одно и то же имя архива . Таким образом, присвоение приоритета a=xenialтакже будет применяться к этим пакетам. Например (после включения PPA),
Теперь версия кандидата от PPA. Оба пакета из xenialархива официального репозитория Ubuntu и PPA имеют одинаковый приоритет 1001, поскольку оба они используют одинаковое значение для Archiveв файле Release. Чтобы успешно закрепить, нам нужно объединить больше полей в файле Pin.
Некоторые примеры
Закрепить репозиторий PPA
Чтобы закрепить пакеты из репозитория, нам нужно настроить таргетинг на него, используя информацию, найденную в apt-cache policyкоманде. Мы только что увидели, что a=xenialэто не поможет точно указать хранилище. Нам нужно использовать несколько полей вместе, используя запятую в файле настроек для точного нацеливания на хранилище.
Например, чтобы предотвратить все пакеты от http://ppa.launchpad.net/oibaf/graphics-drivers/ppa, мы можем использовать
Здесь мы используем значение кодового имени, а также Originзначение PPA. (Хотя значение кодового имени здесь на самом деле не требуется). Иногда хранилище может пропустить эти значения. В этих случаях следует использовать некоторые другие методы. Выход apt-cache policy libgl1-mesa-glxговорит, что это работает. Это понизило приоритет всех пакетов этого PPA.
Не обращайте внимания на тот факт, что это кандидат. Это произошло, потому что он уже установлен в моей системе . Проверьте приоритет справа
Закрепить репозиторий, если информация о выпуске отсутствует
Если мы хотим закрепить репозиторий, информация о выпуске которого отсутствует, как этот http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04, мы должны использовать другой метод. Поскольку ни один другой репозиторий не использует этот источник, мы можем смело использовать его originдля закрепления этого репозитория.
А затем удалите комментарии от sources.list. Возможно, не самый лучший способ, но, по крайней мере, на apt-getстраницах руководства не указано, как это сделать.
В примечании, связанном с этим, например, процесс обновления дистрибутива Ubuntu отключает все сторонние репозитории во время обновления (и не просто запускайте какую-либо опцию, чтобы временно исключить их).
Ответы:
Используйте закрепление
Вы можете отключить автоматические обновления из определенных репозиториев, не удаляя их полностью с помощью
apt
политик:Чтобы отключить автоматическое обновление из репозитория
repo
, добавьте файл/etc/apt/preferences.d/repo
со следующим содержимым:Что даст всем пакетам из этого репозитория более низкий приоритет, чем уже установленным пакетам (которые имеют 100).
Для получения дополнительной информации
man apt_preferences
или проверьте вики-сообщество Ubuntu .источник
apt-cache policy package-name
release n=repo
что не будет никого кэшироватьВы можете указать релиз с
-t
опцией. В качестве примера я добавил следующий репозиторий/etc/apt/sources.list
для установки последней версии Iceweasel:Как вы знаете,
iceweasel
в официальном репозитории Debian есть такой же пакет . Если я хочу установить Iceweasel из этой конкретной версии, я запускаю:со страницы руководства apt-get:
Я думаю, что это лучшее решение.
ОБНОВЛЕНИЕ : Как упоминалось в комментарии @SuB, «
-t
указывает релиз, а не имя репозитория. В Ubuntu нет имени репозитория (в отличие от Linux на основе RedHat, такого как RHEL, Fedora, CentOS, ...)».источник
apt-get
руководстве,-t
укажите релиз, а не имя репозитория. В Ubuntu нет имени хранилища (в отличие от Linux на основе RedHat, такого как RHEL, Fedora, CentOS, ...)-t xenial
работает для одного пакета. но все его зависимости все равно будут извлечены из более высоких пакетовКраткий ответ
Вам нужно закрепить репозитории, из которых вы не хотите устанавливать, с приоритетом менее 100. Что означает (со
apt_preference
страницы руководства )И чтобы выбрать репозиторий для закрепления, вы должны использовать поля из
Release
файла репозитория . Такие , какarchive
,label
,release
, иversion
т.д. Задавая значения этих полей, вы можете точно выбрать хранилище и присвоить нужный приоритет к нему. Проверьте страницу apt_preference для более подробной информации.Длинный ответ
Прежде чем продолжить, мы должны знать некоторые важные вещи о закреплении. Те включает
Поля
Release
файлов и их отображение наapt-cache policy
выводФормат подходящих файлов предпочтений
Использование
Release
файловых полей для установки приоритета1. Поля
Release
файла иapt-cache policy
выводаИз статьи вики Debian
Вы бы увидели вывод,
apt-cache policy
как этиЗначения в этих строках взяты из
Release
файлов.Описание устанавливает описание для хранилища. Это не показано в
apt-cache policy
выводеМетка это метка хранилища. Многие репозитории имеют пустые ярлыки. Это показано в
l=<label>
выводе.Происхождение это говорит о происхождении хранилища. Официальный репозиторий Ubuntu имеет
Ubuntu
в качестве значения. Показано какo=
на выходеВерсия - это версия дистрибутива. Для Ксениала 16.04. Показано как
v=
на выходеЛюкс такой же, как Архив . Из вики Debian это имя дистрибутива Debian, к которому относятся (или предназначены) пакеты в этом каталоге, то есть стабильные, тестируемые или нестабильные. , Для Ubuntu, это
release-updates
, иrelease-security
т.д. Так , например,xenial-updates
,xenial-security
. Это показано на выходе , какa=xenial
,a=xenial-security
. Для этого PPA использует только название релиза, поэтому в Pinning это не сильно поможет.Компонент рассказывает о лицензировании. Это
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
man-странице для этого.2. Пин формат файла
Файлы предпочтений 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
файловых полей для установки приоритетаВот пример
В этом примере пакеты из
xenial
архивов имеют более высокий приоритет, чемxenial-updates
иxenial-security
.После закрепления, запуск
apt-cache policy nautilus
показывает, что он действительно дал более высокий приоритет более низкой версии изxenial
архива по сравнению с более высокой версией изxenial-updates
архива. Обратите внимание наCandidate:
линию.Но, если мы хотим отдать приоритет пакетам, предоставленным PPA, это не сработает. Потому что PPA
xenial
по умолчанию используют одно и то же имя архива . Таким образом, присвоение приоритетаa=xenial
также будет применяться к этим пакетам. Например (после включения PPA),Теперь версия кандидата от PPA. Оба пакета из
xenial
архива официального репозитория Ubuntu и PPA имеют одинаковый приоритет1001
, поскольку оба они используют одинаковое значение дляArchive
в файле Release. Чтобы успешно закрепить, нам нужно объединить больше полей в файле Pin.Некоторые примеры
Закрепить репозиторий PPA
Чтобы закрепить пакеты из репозитория, нам нужно настроить таргетинг на него, используя информацию, найденную в
apt-cache policy
команде. Мы только что увидели, чтоa=xenial
это не поможет точно указать хранилище. Нам нужно использовать несколько полей вместе, используя запятую в файле настроек для точного нацеливания на хранилище.Например, чтобы предотвратить все пакеты от
http://ppa.launchpad.net/oibaf/graphics-drivers/
ppa, мы можем использоватьЗдесь мы используем значение кодового имени, а также
Origin
значение PPA. (Хотя значение кодового имени здесь на самом деле не требуется). Иногда хранилище может пропустить эти значения. В этих случаях следует использовать некоторые другие методы. Выходapt-cache policy libgl1-mesa-glx
говорит, что это работает. Это понизило приоритет всех пакетов этого PPA.Не обращайте внимания на тот факт, что это кандидат. Это произошло, потому что он уже установлен в моей системе . Проверьте приоритет справа
Закрепить репозиторий, если информация о выпуске отсутствует
Если мы хотим закрепить репозиторий, информация о выпуске которого отсутствует, как этот
http://download.opensuse.org/repositories/home:/sarimkhan/xUbuntu_14.04
, мы должны использовать другой метод. Поскольку ни один другой репозиторий не использует этот источник, мы можем смело использовать егоorigin
для закрепления этого репозитория.Примечание 1. Это происхождение является интернет-происхождением, а не тем, которое указывает поставщика в файле выпуска.
Примечание 2:
Pin-Priority
число имеет особое значение. Проверьтеapt_preference
страницу руководства для деталей.источник
Альтернатива на основе графического интерфейса - открыть центр программного обеспечения и выбрать «Правка»> «Источники программного обеспечения».
все, что вам нужно сделать, это снять отметки с репозиториев, из которых вы не хотите получать обновления.
Надеюсь это поможет
источник
Очевидный выбор - изменить
/etc/apt/sources.list
и закомментировать все остальные репозитории, а затем запуститьА затем удалите комментарии от
sources.list
. Возможно, не самый лучший способ, но, по крайней мере, наapt-get
страницах руководства не указано, как это сделать.В примечании, связанном с этим, например, процесс обновления дистрибутива Ubuntu отключает все сторонние репозитории во время обновления (и не просто запускайте какую-либо опцию, чтобы временно исключить их).
источник
Еще один вариант графического интерфейса - просто выбрать источник в менеджере пакетов Synaptic.
источник