Краткий ответ:
Файл настроек APT / etc / apt / предпочтения можно использовать для управления тем, какие версии пакетов будут выбраны для установки.
Вот файл /etc/apt/preferences, который apt-getиспользуется, чтобы решить, какую версию он должен выбрать, если существует много версий одного пакета. При этом любой пакет, который поступает из локального репозитория, будет иметь приоритет над другими пакетами.
Пакет: *
Pin: происхождение ""
Приоритет булавки: 1001
Это не будет контролировать версию, но предпочтение источника, если оба пакета имеют одинаковую версию. Если вам нужно назначить наивысший приоритет для той же версии пакета в вашем локальном репозитории, перечислите их в верхней части /etc/apt/sources.listфайла>
Ответ на оригинальный вопрос:
Как назначить наивысший приоритет локальному репозиторию без использования файла sources.list?
Невозможно назначить наивысший приоритет локальному хранилищу без использования sources.listфайла. Вы должны поместить их в начало списка «sources.list», если хотите назначить наивысший приоритет своему локальному репо.
Краткий ответ на этот вопрос:
Как я могу сделать так, чтобы apt-get предпочел пакеты локального репозитория вместо повторной загрузки той же версии пакета из официальных репозиториев? Локальный репозиторий подписан и доверен. Мы уже попробовали подходящие приоритеты.
Используя /etc/apt/sources.listфайл, вам нужно поместить строку вашего локального репозитория вверху этого файла. как ниже.
deb cdrom: [Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)] / точный основной ограничен
Файл deb: / media / Main / Precise-Debs-New /
Файл deb: / media / Main / Linux-Software / Ubuntu / Precise /
deb http://archive.ubuntu.com/ubuntu точная главная вселенная ограниченная мультивселенная
deb-src http://archive.ubuntu.com/ubuntu точная вселенная главная мультивселенная ограничена # добавлено программными свойствами
# deb cdrom: [Xubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423.1)] / точная главная мультивселенная ограниченная вселенная
# deb cdrom: [Ubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423)] / точное основное ограничение
# deb http://archive.canonical.com/ubuntu точный партнер
# deb-src http://archive.canonical.com/ubuntu точный партнер
# deb http://extras.ubuntu.com/ubuntu точный основной
# deb-src http://extras.ubuntu.com/ubuntu точный основной
И да, «apt_preference» не имеет ничего общего с выбором экземпляров пакетов с той же версией. Дело в том, что вы не можете использовать /etc/apt/preferenceфайл, чтобы принудительно выбрать / использовать .debфайл из вашего локального репозитория, назначив наивысший приоритет вашему локальному репозиторию. Этот файл (предпочтение) используется для выбора конкретной версии, а не конкретного экземпляра (файл .deb) той же версии. В последнем случае вам нужно использовать /etc/apt/sources.listфайл с вышеупомянутым методом.
Объяснение:
Кажется, мы все неправильно поняли apt_preferenceцель, руководство apt_preference описывает это в первых 3 параграфах !!
Файл настроек APT / etc / apt / предпочтения можно использовать для управления тем, какие версии пакетов будут выбраны для установки.
Несколько версий пакета могут быть доступны для установки, если файл sources.list (5) содержит ссылки на несколько дистрибутивов (например, стабильный и тестируемый). APT назначает приоритет каждой доступной версии. С учетом ограничений зависимостей apt-get (8) выбирает версию с наивысшим приоритетом для установки. Файл предпочтений APT переопределяет приоритеты, которые APT назначает версиям пакета по умолчанию, предоставляя пользователю контроль над тем, какой из них выбран для установки.
И очень важный в третьем абзаце
Несколько экземпляров одной и той же версии пакета могут быть доступны, когда файл sources.list (5) содержит ссылки на несколько источников. В этом случае apt-get (8) загружает экземпляр, указанный ранее в файле sources.list (5). Файл настроек APT не влияет на выбор экземпляра, а только на выбор версии .
Эти Курсив были сделаны моим
Давайте посмотрим на это на примере:
У меня точная версия compiz-fusion-plugins-extra, но я отключил ее для демонстрации
Вот файл /etc/apt/preferences, который apt-getиспользуется, чтобы решить, какую версию он должен выбрать, если существует много версий одного пакета. (В этом примере compiz-fusion-plugins-extraесть несколько версий.
Пакет: *
Pin: происхождение ""
Приоритет булавки: 1001
Этот файл говорит apt-getоб установке из локального репозитория для всех пакетов, которые имеют несколько версий, существует в разных репозиториях.
Другими словами, если у меня есть пакет xappsс версией 1.0в моем локальном репозитории, и этот же пакет xappsсуществует в репозитории Precise с более высокой версией, скажем 2.0, apt-getпредпочтет версию из локального репозитория, то есть версию 1.0.
Вот мой /etc/apt/sources.listфайл
deb http://archive.ubuntu.com/ubuntu точная главная вселенная ограниченная мультивселенная
deb-src http://archive.ubuntu.com/ubuntu точная вселенная главная мультивселенная ограничена # добавлено программными свойствами
deb http://security.ubuntu.com/ubuntu/ вселенная точной защиты с ограниченным доступом
deb http://archive.ubuntu.com/ubuntu точное обновление вселенной главная мультивселенная ограничена
deb http://archive.ubuntu.com/ubuntu точная обратная связь вселенная главная мультиверс
# deb http://archive.canonical.com/ubuntu точный партнер
# deb-src http://archive.canonical.com/ubuntu точный партнер
# deb http://extras.ubuntu.com/ubuntu точный основной
# deb-src http://extras.ubuntu.com/ubuntu точный основной
файл deb: / media / Main / Linux-Software / Ubuntu / Oneiric / # это хранилище oneiric.
Файл deb: / media / Main / Linux-Software / Ubuntu / Natty / natty /
Файл deb: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu /
Файл deb: / media / Main / Linux-Software / Ubuntu / Natty / natty_new /
Несмотря на то, что я перечислил репозиторий точных данных ранее в этом файле, он не приводит apt-getк выбору пакета из этого репозитория. Как описано в руководстве
Файл настроек APT не влияет на выбор экземпляра, а только на выбор версии.
Таким образом, вывод команды apt-cache policy compiz-fusion-plugins-extraбыл таким, как ожидалось, как показано ниже
anwar @ edubuntu-lenovo: / etc / apt $ apt-cache policy compiz-fusion-plugins-extra
Compiz-Fusion-плагинов-экстра:
Установлено: (нет)
Кандидат: 0.9.5.94-0ubuntu1 / ** выбирает более низкие версии для приоритета ** /
Таблица версий:
0.9.7.0 ~ bzr9-0ubuntu6 0
500 http://archive.ubuntu.com/ubuntu/ Precision / Universe i386 Packages
0.9.5.94-0ubuntu1 0
Файл 1001: / media / Main / Linux-Software / Ubuntu / Oneiric / Пакеты
0.9.4-0ubuntu3 0
Файл 1001: / media / Главная / Linux-Software / Ubuntu / Natty / natty / Пакеты
Здесь, версия-кандидат 0.9.5.94-0ubuntu1(которая находится в локальном хранилище), а не 0.9.7.0~bzr9-0ubuntu6 0, что в точном хранилище. хотя точный 'был указан первым в sources.listфайле.
Пример запуска apt-getпопытки установки compiz-fusion-plugins-extraпосле установки наивысшего приоритета для локального репозитория.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install compiz-fusion-plugins-extra
Чтение списков пакетов ... Готово
Построение дерева зависимостей
Чтение информации о состоянии ... Готово
Следующие пакеты были установлены автоматически и больше не требуются:
x11-apps x11-xfs-utils xinit x11-session-utils libfs6
Используйте «apt-get autoremove», чтобы удалить их.
Будут установлены следующие дополнительные пакеты:
compiz-core compiz-plugins-default compiz-plugins-extra
compiz-plugins-main-default libdecoration0 xserver-xorg-core
Xserver-Xorg-видео Intel
Предлагаемые пакеты:
compizconfig-settings-manager xfonts-100dpi xfonts-75dpi
Следующие пакеты будут удалены:
compiz compiz-gnome compizconfig-backend-gconf edubuntu-desktop
libcompizconfig0 ubuntu-desktop unity xorg xserver-xorg
xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-mouse
xserver-xorg-input-synaptics xserver-xorg-input-vmmouse
xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-ati
xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-geode
xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic
xserver-xorg-video-nouveau xserver-xorg-video-openchrome
xserver-xorg-video-qxl xserver-xorg-video-r128 xserver-xorg-video-radeon
xserver-xorg-video-s3 xserver-xorg-video-дикарь
xserver-xorg-video-silicmotion xserver-xorg-video-sis
xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident
xserver-xorg-video-vesa xserver-xorg-video-vmware
Будут установлены следующие НОВЫЕ пакеты:
compiz-fusion-plugins-extra compiz-fusion-plugins-extra
Следующие пакеты будут скачаны:
compiz-core compiz-plugins-default compiz-plugins-main-default
libdecoration0 xserver-xorg-core xserver-xorg-video-intel
0 обновлено, 2 недавно установлено, 6 понижено, 37 удалено и 698 не обновлено.
Необходимо получить 0 B / 5,772 КБ архивов.
После этой операции будет освобождено 8 294 кБ дискового пространства.
Вы хотите продолжить [Да / Нет]?
Странно !!!, он пытается понизить уже установленные пакеты compiz, чтобы точно разрешить зависимости (совпадающие с Oneiric) с вновь выбранными compiz-fusion-plugins-extra!!!.
Что более опасно, так это то, что он пытается удалить пакеты графического драйвера (xserver-xorg -....), чтобы избежать конфликта с новыми компиляциями.
(Возможно, если бы они были и в моем локальном репозитории, они могли бы спокойно перейти на более раннюю версию. Но поскольку эти пакеты обычно устанавливаются, я их не загружал, поэтому не в локальном репозитории, отсюда и этот результат) .
Вывод : Итак, использование /etc/apt/preferencesрекомендуется использовать только с локальным репозиторием, если у вас есть полный репозиторий в локальной системе.
Что если несколько экземпляров (файл .deb) одной и той же версии существуют во многих хранилищах.
Который описан в apt_preferenceруководстве
Несколько экземпляров одной и той же версии пакета могут быть доступны, когда файл sources.list (5) содержит ссылки на несколько источников. В этом случае apt-get (8) загружает экземпляр, указанный ранее в файле sources.list (5).
Пример вариантов использования для /etc/apt/preferencesфайла:
Примером принудительного apt-getвыбора версии, доступной из пользовательского репозитория, вместо стандартной версии Ubuntu может быть дистрибутив Linux Mint. Они используют этот пользовательский preferenceфайл.
Пакет: *
Pin: релиз o = linuxmint
Приоритет булавки: 700
Пакет: *
PIN-код: происхождение packages.linuxmint.com
Приоритет булавки: 700
Пакет: *
Pin: релиз o = Ubuntu
Приоритет пин-кода: 500
Это эффективно заставляет их предоставлять пакеты, когда они есть в своих хранилищах. Но если у них их нет, они используют стандартный репозиторий Ubuntu.
Пример запускается apt-getпосле установки наивысшего приоритета для локального хранилища
Я просто хотел установить kubuntu-desktop пакет поверх Ubuntu для тестирования KDE. (Я забыл это, я установил предпочтение, используя /etc/apt/preferenceфайл) . У меня был iso из kubuntu-12.04-alternate-installer, поэтому я подумал, что могу это использовать.
(после правильной установки iso в качестве источника репозитория) я побежал
sudo apt-get install kubuntu-desktop, затем удивился, увидев вывод ниже.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get установить kubuntu-desktop
Чтение списков пакетов ... Готово
Построение дерева зависимостей
Чтение информации о состоянии ... Готово
Некоторые пакеты не могут быть установлены. Это может означать, что у вас есть
запросил невозможную ситуацию или если вы используете нестабильную
рассылка о том, что некоторые необходимые пакеты еще не созданы
или был перемещен из Входящего.
Следующая информация может помочь разрешить ситуацию:
Следующие пакеты имеют неудовлетворенные зависимости:
kubuntu-desktop: зависит: language-selector-kde, но не будет установлен
Рекомендует: Amarok, но он не будет установлен
Рекомендует: apturl-kde, но он не будет установлен
Рекомендует: gdebi-kde, но он не будет установлен
Рекомендует: gpgsm, но он не будет установлен
Рекомендует: ibus-qt4, но он не будет установлен
Рекомендует: jockey-kde, но он не будет установлен
Рекомендует: kdegraphics-strigi-plugins, но он не будет установлен
Рекомендует: kdepim-wizards, но он не будет установлен
Рекомендует: kpackagekit, но он не будет установлен
Рекомендует: libreoffice-kde, но он не будет установлен
Рекомендует: libreoffice-style-oxygen, но он не будет установлен
Рекомендует: network-manager-pptp-kde, но он не будет установлен
Рекомендует: plasma-widget-facebook, но он не будет установлен
Рекомендует: plasma-widget-kimpanel, но он не будет установлен
Рекомендует: usb-creator-kde, но он не будет установлен
E: Невозможно исправить проблемы, у вас есть сломанные пакеты.
Я был удивлен результатом. вдруг я помню, что я установил предпочтение ( для написания этого ответа ), /etc/apt/preferenceчтобы установить самый высокий приоритет для моего локального хранилища.
Итак, я запустил это:, apt-cache policy kubuntu-desktopвывод был, как показано ниже:
anwar @ edubuntu-lenovo: ~ политика $ apt-кеша kubuntu-desktop
Kubuntu-рабочий стол:
Установлено: (нет)
Кандидат: 1.222.1kde47 ~ ppa2
Таблица версий:
1,254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Выпуск i386 (20120424) / точный / основной i386 Packages
500 http://archive.ubuntu.com/ubuntu/ точный / основной i386 пакетов
1.222.1kde47 ~ ppa2 0
Файл 1001: / media / Главная / Linux-Software / Ubuntu / Natty / natty / Пакеты
1,222,1 0
Файл 1001: / media / Главная / Linux-Software / Ubuntu / Natty / natty / Пакеты
1,222 0
Файл 1001: / media / Главная / Linux-Software / Ubuntu / Natty / kubuntu / Пакеты
В этом выводе мы видим, что и «cdrom», и «точный главный репозиторий» имеют версию 1.254 , в то время как локальный репозиторий имеет версию 1.222.1kde47 ~ ppa2 , которая является более низкой версией. Хотя они помещены перед локальными в файле sources.list, локальные пакеты имеют приоритет.
Чтобы явно увидеть, что apt-getдействительно пытается установить с локального, я запустилsynaptic и получил это, что показывает, что система Apt рассматривает 1.222.1kde47 ~ ppa2 как вариант-кандидат для установки.
Также apt-cache policy kubuntu-desktopпоказывая те же вещи
anwar @ edubuntu-lenovo: ~ политика $ apt-кеша kubuntu-desktop
Kubuntu-рабочий стол:
Установлено: (нет)
Кандидат: 1.222.1kde47 ~ ppa2
Таблица версий:
1,254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Выпуск i386 (20120424) / точный / основной i386 Packages
500 http://archive.ubuntu.com/ubuntu/ точный / основной i386 пакетов
1.222.1kde47 ~ ppa2 0
Файл 1001: / media / Главная / Linux-Software / Ubuntu / Natty / natty / Пакеты
1,222,1 0
Файл 1001: / media / Главная / Linux-Software / Ubuntu / Natty / natty / Пакеты
1,222 0
Файл 1001: / media / Главная / Linux-Software / Ubuntu / Natty / kubuntu / Пакеты
Чтобы решить эту проблему, я удалил /etc/apt/preferenceфайл sudo rm /etc/apt/preference.
Затем снова запустил это снова apt-cache policy kubuntu-desktop. видя только этот ожидаемый результат.
anwar @ edubuntu-lenovo: ~ $ sudo rm / etc / apt / Предпочтения
anwar @ edubuntu-lenovo: ~ $ sudo apt-cache policy kubuntu-desktop
Kubuntu-рабочий стол:
Установлено: (нет)
Кандидат: 1,254
Таблица версий:
1,254 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Выпуск i386 (20120424) / точный / основной i386 Packages
500 http://archive.ubuntu.com/ubuntu/ точный / основной i386 пакетов
1.222.1kde47 ~ ppa2 0
500 file: / media / Главная / Linux-Software / Ubuntu / Natty / natty / Пакеты
1,222,1 0
500 file: / media / Главная / Linux-Software / Ubuntu / Natty / natty / Пакеты
1,222 0
500 file: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Пакеты
И снова запустил это. sudo apt-get install kubuntu-desktopчтобы увидеть вывод ниже:
......... ненужные подробности удалены .........
0 обновлено, 213 вновь установлено, 0 для удаления и 150 не обновлено.
Нужно получить 0 B / 89,6 МБ архивов.
После этой операции будет использовано 269 МБ дополнительного дискового пространства.
Вы хотите продолжить [Да / Нет]?
Вы можете проверить полный результат здесь
Тогда я почти уверен в части объяснения.
Ссылка 1: Руководство по apt_preference
Ссылка 2: Как сохранить определенную версию установленных пакетов