Присвоить наивысший приоритет моему локальному хранилищу

Резюме

Как я могу сделать так, чтобы apt-get предпочел пакеты локального репозитория вместо повторной загрузки той же версии пакета из официальных репозиториев? Локальный репозиторий подписан и доверен. Мы уже попробовали подходящие приоритеты.


Первоначальный вопрос был: "Как назначить наивысший приоритет локальному хранилищу без использования файла sources.list"

Я установил локальный репозиторий с загруженными пакетами. Я использую его, чтобы избежать загрузки тех же пакетов через Интернет, когда мне нужно переустановить Ubuntu. Это базовый репозиторий, созданный с apt-ftparchive packages . > Packages, Я сделал это надежным хранилищем, чтобы избежать предупреждения о "неаутентифицированном хранилище". (Если у вас есть ненадежное хранилище, apt или же synaptic попробуйте загрузить те же пакеты через Интернет, потому что это заслуживает доверия).

Я использую этот локальный репозиторий не менее 1 года. Но я должен всегда размещать свою локальную линию хранилища наверху sources.list файл, чтобы использовать это. Но это раздражает, так как я должен открывать терминал и вводить текст каждый раз, когда переустанавливаю Ubuntu, хотя есть и лучший инструмент software-properties-gtk, Я не могу использовать этот инструмент, так как он помещает исходную строку в конец файла sources.list.

И настоящая проблема в том, что apt или же synaptic всегда загружайте пакет из источника, который упоминался ранее, не проверяя, доступны ли пакеты в локальном хранилище. Таким образом, у меня нет выбора, кроме как разместить местный источник на вершине sources.list делаю терминал (на самом деле я не ненавижу терминал, но мне нужно решение).

Я попробовал этот метод. Но это не помогает мне.

Мой файл настроек это в /etc/apt/preferences.d/local-pin-900

    Package: *
    Pin: release o=Local,n=ubuntu-local
    Pin-Priority: 900

Мой файл релиза это

    Origin: Local
    Label: Local-Ubuntu
    Description: Local Ubuntu Repository
    Codename: ubuntu-local
    MD5Sum:
     ed43222856d18f389c637ac3d7dd6f85          1043412 Packages
     d41d8cd98f00b204e9800998ecf8427e                0 Sources

Когда я включаю apt-preference, apt-cache policy правильно показывает предпочтение, например, показывает, что локальный репозиторий имеет самый высокий приоритет.

Но когда я делаю это sudo apt-get install <package-name>, apt пытается скачать его из интернета. Но когда я размещаю свое локальное хранилище наверху, оно устанавливается из локального хранилища.

Итак, мой вопрос -> 'Можно ли заставить apt использовать локальный репозиторий, когда пакет доступен в локальном репозитории, без явного размещения "локального источника" в верхней части моего списка репозитория (например, файла sources.list)?'

Изменить: вывод apt-cache policy $package_name как следует

  
Наутилус-протирать:
  Установлено: (нет)
  Кандидат: 0.1.1-2
  Таблица версий:
     0.1.1-2 0
        500 http://archive.ubuntu.com/ubuntu/ Precision / Universe i386 Packages
        900 file:/media/ Главная /Linux-Software/Ubuntu/Precise/ Пакеты

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

Вот вывод apt-get install nautilus-wipe

Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Будут установлены следующие НОВЫЕ пакеты:
  Наутилус-вытирать
0 обновлено, 1 недавно установлено, 0 для удаления и 131 не обновлено.
Нужно получить 30,7 кБ архивов.
После этой операции будет использовано 150 КБ дополнительного дискового пространства.
'http://archive.ubuntu.com/ubuntu/pool/universe/n/nautilus-wipe/nautilus-wipe_0.1.1-2_i386.deb' nautilus-wipe_0.1.1-2_i386.deb 30730 Сумма MD5:7d497b8dfcefe1c0b51a45f3b66

Он все еще пытается получить файл из Интернета, хотя я думаю, что он должен быть доволен местным.


Результат использования "" или localhost, как предложил mediageek

Использование localhost не имеет никакого эффекта. но "" имеет, но не отличался от моего метода

    Package: *
    Pin: origin ""
    Pin-Priority: 1001

Я использовал их до публикации вопроса. Но я снова попробовал это (для спокойствия). Тот же результат. apt-cache policy показывая, что мой локальный репозиторий действительно имеет самый высокий приоритет. но когда я попытался установить, он говорит: "Нужно получить XXX/XXX КБ архива".

1 ответ

Решение

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

Файл настроек APT / etc / apt / предпочтения можно использовать для управления тем, какие версии пакетов будут выбраны для установки.

Вот файл /etc/apt/preferences, который apt-get use to decide, which version it's have to select if there are many versions of a single packge. With this, any package that comes from the local repository, will take precedence over the other packages.

Package: *  
Pin: origin ""  
Pin-Priority: 1001  

This won't control the version, but the source preference if both packages has the same version. If you need to assign highest priority for the same package version in your local repo, list them at the top to the /etc/apt/sources.list file>

Answer to the original question:

How to assign highest priority to local repository without using sources.list file?

There is no way to assign highest priority to local repository without using sources.list файл. you must put them in top of "sources.list" if you want to assign highest priority to your local repo.

Summary answer to this question:

Как я могу сделать так, чтобы apt-get предпочел пакеты локального репозитория вместо повторной загрузки той же версии пакета из официальных репозиториев? Локальный репозиторий подписан и доверен. Мы уже попробовали подходящие приоритеты.

С использованием /etc/apt/sources.list file, You need to put your local repository line at the top of this file. like the below one.

deb cdrom:[Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)]/ precise main restricted
deb file:/media/Main/Precise-Debs-New /
deb file:/media/Main/Linux-Software/Ubuntu/Precise /

deb http://archive.ubuntu.com/ubuntu precise main universe restricted multiverse
deb-src http://archive.ubuntu.com/ubuntu precise universe main multiverse restricted #Added by software-properties

# deb cdrom:[Xubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423.1)]/ precise main multiverse restricted universe
# deb cdrom:[Ubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423)]/ precise main restricted

# deb http://archive.canonical.com/ubuntu precise partner
# deb-src http://archive.canonical.com/ubuntu precise partner
# deb http://extras.ubuntu.com/ubuntu precise main
# deb-src http://extras.ubuntu.com/ubuntu precise main

And yes, "apt_preference" has nothing to do with selecting instances of the packages with same version. The point here is, you can't use /etc/apt/preference file to force to select/use a .deb file from your local repository by assigning highest priority to your local one. That file(preference) is used to select an specific version, not a specific instance (.deb file) of the same version. For the latter case, you need to use /etc/apt/sources.list file with above mentioned method.


Объяснение:

Seems we all misunderstood the 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: Как сохранить определенную версию установленных пакетов

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