Присвойте самый высокий приоритет моему локальному репозиторию

Сводка

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


Исходный вопрос был: "Как присвоить самый высокий приоритет локальному репозиторию, не используя 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-cache policy правильно показывает предпочтение, например, Оно показывает, что локальный репозиторий имеет самый высокий приоритет.

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

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

Править: вывод apt-cache policy $package_name следующие

  
nautilus-wipe:
  Installed: (none)
  Candidate: 0.1.1-2
  Version table:
     0.1.1-2 0
        500 http://archive.ubuntu.com/ubuntu/ precise/universe i386 Packages
        900 file:/media/Main/Linux-Software/Ubuntu/Precise/  Packages

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

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

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  nautilus-wipe
0 upgraded, 1 newly installed, 0 to remove and 131 not upgraded.
Need to get 30.7 kB of archives.
After this operation, 150 kB of additional disk space will be used.
'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 MD5Sum:7d497b8dfcefe1c0b51a45f3b0466994

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


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

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

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

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

40
задан 13 April 2017 в 05:24

1 ответ

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

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

Вот файл /etc/apt/preferences, который apt-get используйте для решения, который должна выбрать версия, которая это, если существует много версий единственного packge. С этим любой пакет, который прибывает из локального репозитория, будет иметь приоритет по другим пакетам.

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

Это не будет управлять версией, но исходным предпочтением, если оба пакета будут иметь ту же версию. Если необходимо присвоить самый высокий приоритет для той же версии пакета в локальном repo, перечислите их наверху к /etc/apt/sources.list файл>

Ответьте на исходный вопрос:

Как присвоить самый высокий приоритет локальному репозиторию, не используя sources.list файл?

Нет никакого способа присвоить самый высокий приоритет локальному репозиторию без использования sources.list файл. необходимо поместить их в вершину "sources.list", если Вы хотите присвоить самый высокий приоритет своему локальному repo.

Сводный ответ на этот вопрос:

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

Используя /etc/apt/sources.list файл, необходимо поместить строку локального репозитория наверху этого файла. как ниже одного.

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

И да, "apt_preference" не имеет никакого отношения к экземплярам выбора пакетов с той же версией. Точка здесь, Вы не можете использовать /etc/apt/preference файл для принуждения для выбирания/использования a .deb файл от Вашего локального репозитория путем присвоения самого высокого приоритета локальному. Тот файл (предпочтение) используется для выбора определенной версии, не определенного экземпляра (.deb файл) той же версии. Для последнего случая необходимо использовать /etc/apt/sources.list файл с вышеупомянутым методом.


Объяснение:

Кажется, что все мы неправильно поняли apt_preference цель, apt_preference руководство описывает это в первых 3 абзацах!!

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

Несколько версий пакета могут быть доступны для установки, когда sources.list (5) файл содержит ссылки больше чем на одно распределение (например, стабильный и тестирующий). APT присваивает приоритет каждой версии, которая доступна. Согласно ограничениям зависимости, склонным - добираются (8), выбирает версию с самым высоким приоритетом для установки. Предпочтительный файл APT переопределяет приоритеты, которые APT присваивает версиям пакета по умолчанию, таким образом давая пользовательский элемент управления, по которому выбран для установки.

И очень важный находится в третьем абзаце

Несколько экземпляров той же версии пакета могут быть доступными, когда sources.list (5) файл содержит ссылки больше чем на один источник. В этом случае склонный - добираются (8) загрузки экземпляр, перечисленный самый ранний в sources.list (5) файл. Предпочтительный файл APT не влияет на выбор экземпляра, только выбор версии.

Те Курсивы были сделаны моим

Давайте посмотрим это с примером:

У меня есть версия precise compiz-fusion-plugins-extra, но я отключил это для демонстрации

Вот файл /etc/apt/preferences, который apt-get используйте для решения, который должна выбрать версия, которая это, если существует много версий единственного packge. (В этом примере, compiz-fusion-plugins-extra имеет несколько версий.

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

Этот файл говорит apt-get устанавливать от локального репозитория для всех пакетов, которые имеют несколько версий, существует в другом репозитории.

Другими словами, если у меня есть пакет xapps с версией 1.0 в моем локальном репозитории и этом том же пакете xapps существует в репозитории Precise со старшей версией, сказать 2.0, apt-get предпочтет версию от локального репозитория, т.е. версию 1.0.

Вот мой /etc/apt/sources.list файл

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 http://security.ubuntu.com/ubuntu/ precise-security universe main multiverse restricted
deb http://archive.ubuntu.com/ubuntu precise-updates universe main multiverse restricted
deb http://archive.ubuntu.com/ubuntu precise-backports universe main multiverse 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


deb file:/media/Main/Linux-Software/Ubuntu/Oneiric / #this is oneiric repository.
deb file:/media/Main/Linux-Software/Ubuntu/Natty/natty /
deb file:/media/Main/Linux-Software/Ubuntu/Natty/kubuntu /
deb file:/media/Main/Linux-Software/Ubuntu/Natty/natty_new /

Хотя, я перечислил репозиторий precise ранее в файле, он не вызывает apt-get выбрать пакет из того репозитория. Как описано в руководстве

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

Так, вывод команды apt-cache policy compiz-fusion-plugins-extra был как ожидалось как ниже

anwar@edubuntu-lenovo:/etc/apt$ apt-cache policy compiz-fusion-plugins-extra 
compiz-fusion-plugins-extra:
  Installed: (none)
  Candidate: 0.9.5.94-0ubuntu1  / **selecting lower versions for priority** /
  Version table:
     0.9.7.0~bzr9-0ubuntu6 0
        500 http://archive.ubuntu.com/ubuntu/ precise/universe i386 Packages
     0.9.5.94-0ubuntu1 0
       1001 file:/media/Main/Linux-Software/Ubuntu/Oneiric/  Packages
     0.9.4-0ubuntu3 0
       1001 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/  Packages

Здесь, новая версия 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 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  x11-apps x11-xfs-utils xinit x11-session-utils libfs6
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  compiz-core compiz-plugins-default compiz-plugins-extra
  compiz-plugins-main-default libdecoration0 xserver-xorg-core
  xserver-xorg-video-intel
Suggested packages:
  compizconfig-settings-manager xfonts-100dpi xfonts-75dpi
The following packages will be REMOVED:
  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-savage
  xserver-xorg-video-siliconmotion xserver-xorg-video-sis
  xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident
  xserver-xorg-video-vesa xserver-xorg-video-vmware
The following NEW packages will be installed:
  compiz-fusion-plugins-extra compiz-plugins-extra
The following packages will be DOWNGRADED:
  compiz-core compiz-plugins-default compiz-plugins-main-default
  libdecoration0 xserver-xorg-core xserver-xorg-video-intel
0 upgraded, 2 newly installed, 6 downgraded, 37 to remove and 698 not upgraded.
Need to get 0 B/5,772 kB of archives.
After this operation, 8,294 kB disk space will be freed.
Do you want to continue [Y/n]? 

Странно!!!, Это пытается понизить уже установленные compiz пакеты точных для разрешения зависимостей (соответствие Oneiric один) с недавно выбранным compiz-fusion-plugins-extra!!!.

То, которое более опасно, это пытается удалить пакеты графического драйвера (xserver-xorg-....) для предотвращения конфликта с новым compizes.

(Вероятно, Если у меня также были они в моем локальном репозитории, они могут безопасно хотеть понизить. Но поскольку те пакеты обычно устанавливаются, я не загружал их, так не находятся в локальном repo, следовательно этот результат).

Заключение: Так, использование /etc/apt/preferences только рекомендуется использовать с локальным репозиторием, если у Вас есть полный репозиторий в локальной системе.

Что, если несколько экземпляров (.deb файл) той же версии существует во многих репозиторий.

Который описан apt_preference руководство

Несколько экземпляров той же версии пакета могут быть доступными, когда sources.list (5) файл содержит ссылки больше чем на один источник. В этом случае склонный - добираются (8) загрузки экземпляр, перечисленный самый ранний в sources.list (5) файл.

Пример вариантов использования для /etc/apt/preferences файл:

Пример принуждения apt-get для выбора версии, доступной из пользовательского repo вместо стандарта Ubuntu, можно быть распределением "Linux Mint". Они используют это пользовательское preference файл.

Package: *
Pin: release o=linuxmint
Pin-Priority: 700

Package: *
Pin: origin packages.linuxmint.com
Pin-Priority: 700

Package: *
Pin: release o=Ubuntu
Pin-Priority: 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 install kubuntu-desktop
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 kubuntu-desktop : Depends: language-selector-kde but it is not going to be installed
                   Recommends: amarok but it is not going to be installed
                   Recommends: apturl-kde but it is not going to be installed
                   Recommends: gdebi-kde but it is not going to be installed
                   Recommends: gpgsm but it is not going to be installed
                   Recommends: ibus-qt4 but it is not going to be installed
                   Recommends: jockey-kde but it is not going to be installed
                   Recommends: kdegraphics-strigi-plugins but it is not going to be installed
                   Recommends: kdepim-wizards but it is not going to be installed
                   Recommends: kpackagekit but it is not going to be installed
                   Recommends: libreoffice-kde but it is not going to be installed
                   Recommends: libreoffice-style-oxygen but it is not going to be installed
                   Recommends: network-manager-pptp-kde but it is not going to be installed
                   Recommends: plasma-widget-facebook but it is not going to be installed
                   Recommends: plasma-widget-kimpanel but it is not going to be installed
                   Recommends: usb-creator-kde but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Я был удивлен результатом. внезапно я помню, что, установил предпочтение (для записи этого ответа) в /etc/apt/preference установить самый высокий приоритет на мой локальный репозиторий.

таким образом я выполнил это: apt-cache policy kubuntu-desktop, вывод был как указано ниже:

anwar@edubuntu-lenovo:~$ apt-cache policy kubuntu-desktop 
kubuntu-desktop:
  Installed: (none)
  Candidate: 1.222.1kde47~ppa2
  Version table:
     1.254 0
        500 cdrom://Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)/ precise/main i386 Packages
        500 http://archive.ubuntu.com/ubuntu/ precise/main i386 Packages
     1.222.1kde47~ppa2 0
       1001 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/  Packages
     1.222.1 0
       1001 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/  Packages
     1.222 0
       1001 file:/media/Main/Linux-Software/Ubuntu/Natty/kubuntu/  Packages

В этом выводе мы видим, что и "CD-ROM" и "точный основной репозиторий" имеют номер версии 1.254, в то время как локальный репозиторий имеет версию 1.222.1kde47~ppa2, которая является более низкой версией. Хотя, они размещаются перед локальными в sources.list файле локальные пакеты получили приоритет.

Явно видеть это apt-get действительно пытается установить от локального, я работал synaptic и получил это, которое показывает, что, система Кв. полагает 1.222.1kde47~ppa2 как новую версию устанавливать.

enter image description here

Также apt-cache policy kubuntu-desktop показ того же самого

anwar@edubuntu-lenovo:~$ apt-cache policy kubuntu-desktop
kubuntu-desktop:
  Installed: (none)
  Candidate: 1.222.1kde47~ppa2
  Version table:
     1.254 0
        500 cdrom://Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)/ precise/main i386 Packages
        500 http://archive.ubuntu.com/ubuntu/ precise/main i386 Packages
     1.222.1kde47~ppa2 0
       1001 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/  Packages
     1.222.1 0
       1001 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/  Packages
     1.222 0
       1001 file:/media/Main/Linux-Software/Ubuntu/Natty/kubuntu/  Packages

Для решения этого я удалил /etc/apt/preference файл sudo rm /etc/apt/preference.

Затем выполнил снова это снова apt-cache policy kubuntu-desktop. только видя этот ожидаемый вывод.

anwar@edubuntu-lenovo:~$ sudo rm /etc/apt/preferences
anwar@edubuntu-lenovo:~$ sudo apt-cache policy kubuntu-desktop
kubuntu-desktop:
  Installed: (none)
  Candidate: 1.254
  Version table:
     1.254 0
        500 cdrom://Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)/ precise/main i386 Packages
        500 http://archive.ubuntu.com/ubuntu/ precise/main i386 Packages
     1.222.1kde47~ppa2 0
        500 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/  Packages
     1.222.1 0
        500 file:/media/Main/Linux-Software/Ubuntu/Natty/natty/  Packages
     1.222 0
        500 file:/media/Main/Linux-Software/Ubuntu/Natty/kubuntu/  Packages

Также выполнил это снова. sudo apt-get install kubuntu-desktop видеть вывод ниже:

......... Unnecessary details deleted .........

0 upgraded, 213 newly installed, 0 to remove and 150 not upgraded.
Need to get 0 B/89.6 MB of archives.
After this operation, 269 MB of additional disk space will be used.
Do you want to continue [Y/n]? 

Можно проверить полный результат здесь

Затем я в значительной степени уверенный в части Объяснения.


Ссылка 1: apt_preference руководство

Ссылка 2: Как Сохранить определенную версию пакетов установленной

53
ответ дан 23 November 2019 в 00:09

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

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