Коротка відповідь:
Файл налаштувань APT / etc / apt / preferences можна використовувати для контролю, які версії пакетів будуть обрані для встановлення.
Ось файл /etc/apt/preferences, за допомогою якого apt-getможна визначити, яку версію потрібно вибрати, якщо існує багато версій одного пакета. При цьому будь-який пакет, що надходить з локального сховища, матиме перевагу над іншими пакетами.
Пакет: *
Контакт: походження ""
Пріоритет: 1001
Це не контролюватиме версію, але перевагу джерела, якщо обидва пакети мають однакову версію. Якщо вам потрібно призначити найвищий пріоритет для тієї самої версії пакету у вашому локальному репо, перелічіть їх у верхній частині до /etc/apt/sources.listфайла>
Відповідь на початкове запитання:
Як призначити найвищий пріоритет локальному сховищу, не використовуючи файл source.list?
Немає можливості призначити найвищий пріоритет локальному сховищу без використання sources.listфайлу. ви повинні розмістити їх у верхній частині "source.list", якщо ви хочете призначити найвищий пріоритет місцевому репо.
Коротка відповідь на це питання:
Як я можу змусити apt-get віддати перевагу локальним пакетам репозиторію, а не завантажувати знову ту саму версію пакета з офіційних сховищ? Локальне сховище підписане та довірене. Ми вже спробували пріоритет уподобань.
Використовуючи /etc/apt/sources.listфайл, вам потрібно покласти місцевий рядок сховища у верхній частині цього файлу. як нижче.
deb cdrom: [Kubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120424)] / точний головний обмежений доступ
файл deb: / media / Головна / Precision-Debs-New /
deb файл: / медіа / Головна / Linux-програмне забезпечення / Ubuntu / точне /
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 описує це в перших трьох абзацах !!
Файл налаштувань APT / etc / apt / preferences можна використовувати для контролю, які версії пакетів будуть обрані для встановлення.
Кілька версій пакету можуть бути доступні для встановлення, коли файл source.list (5) містить посилання на більш ніж один дистрибутив (наприклад, стабільний і тестуючий). APT призначає пріоритет кожній доступній версії. За умови обмежень залежності apt-get (8) вибирає версію з найвищим пріоритетом для встановлення. Файл налаштувань APT перевизначає пріоритети, які APT призначає версіям пакетів за замовчуванням, тим самим надаючи користувачеві контроль над тим, яку з них обрано для встановлення.
І найважливіше - у третьому абзаці
Кілька примірників однієї і тієї ж версії пакета можуть бути доступні, коли файл source.list (5) містить посилання на більш ніж одне джерело. У цьому випадку apt-get (8) завантажує екземпляр, перерахований раніше, у файл source.list (5). Файл налаштувань APT не впливає на вибір примірника, лише на вибір версії .
Ці курсиви були зроблені моїми
Подивимось це на прикладі:
Я маю точну версію compiz-fusion-plugins-extra, але я її відключив для демонстрації
Ось файл /etc/apt/preferences, за допомогою якого apt-getможна визначити, яку версію потрібно вибрати, якщо існує багато версій одного пакета. (У цьому прикладі compiz-fusion-plugins-extraє кілька версій.
Пакет: *
Контакт: походження ""
Пріоритет: 1001
Цей файл говорить apt-getпро встановлення з локального сховища для всіх пакетів, які мають кілька версій, є в різних сховищах.
Іншими словами, якщо у мене є пакет xappsз версією 1.0у моєму локальному сховищі, і цей самий пакунок xappsіснує у сховищі Precis з більш високою версією, скажімо 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 файл: / медіа / Головна / Linux-програмне забезпечення / Ubuntu / Natty / natty /
deb файл: / медіа / Головна / Linux-програмне забезпечення / Ubuntu / Natty / kubuntu /
deb файл: / медіа / Головна / Linux-програмне забезпечення / Ubuntu / Natty / natty_new /
Хоча, я перерахував репозиторій точного раніше у файлі, це не викликає apt-getвибір пакета з цього сховища. Як описано в посібнику
Файл налаштувань APT не впливає на вибір примірника, лише на вибір версії.
Отже, вихід команди apt-cache policy compiz-fusion-plugins-extraбув таким, як очікувалося, як показано нижче
anwar @ edubuntu-lenovo: / etc / apt $ apt-кеш політика compiz-fusion-plugins-extra
compiz-fusion-plugins-extra:
Встановлено: (немає)
Кандидат: 0.9.5.94-0ubuntu1 / **, вибір нижчих версій для пріоритету ** /
Таблиця версій:
0,9.7,0 ~ bzr9-0ubuntu6 0
500 http://archive.ubuntu.com/ubuntu/ точні / всесвітні i386 пакети
0.9.5.94-0ubuntu1 0
Файл 1001: / media / Main / Linux-Software / Ubuntu / Oneiric / Packages
0.9.4-0ubuntu3 0
Файл 1001: / 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
Читання списків пакунків ... Готово
Побудова дерева залежності
Читання інформації про стан ... Готово
Наступні пакети були автоматично встановлені і більше не потрібні:
x11-apps x11-xfs-utils xinit x11-session-utils libfs6
Щоб видалити їх, використовуйте "apt-get autoremove".
Наступні додаткові пакети будуть встановлені:
compiz-core compiz-plugins-типовий compiz-plugins-extra
compiz-plugins-main-default libdecoration0 xserver-xorg-core
xserver-xorg-video-intel
Рекомендовані пакети:
compizconfig-settings-manager xfonts-100dpi xfonts-75dpi
Наступні пакети будуть видалені:
compiz compiz-gnome compizconfig-backend-gconf edubuntu-desktop
libcompizconfig0 ubuntu-desktop unit 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-divage
xserver-xorg-video-siliconmotion xserver-xorg-video-sis
xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-тризуб
xserver-xorg-video-vesa xserver-xorg-video-vmware
Будуть встановлені наступні НОВІ пакети:
compiz-fusion-plugins-extra compiz-plugins-extra
Наступні пакети будуть завантажені:
compiz-core compiz-plugins-типовий compiz-plugins-main-default
libdecoration0 xserver-xorg-core xserver-xorg-video-intel
0 оновлених, 2 нещодавно встановлених, 6 зменшених, 37 для видалення та 698 не оновлених.
Потрібно отримати 0 B / 5,772 кБ архівів.
Після цієї операції 8,294 кБ дискового простору буде звільнено.
Ви хочете продовжити [Y / n]?
Дивно !!!, Він намагається знизити вже встановлені пакети compiz з точністю для вирішення залежностей (узгоджуючись з Oneireic) з новообраними compiz-fusion-plugins-extra!!!.
Що небезпечніше, що він намагається видалити графічні пакети драйверів (xserver-xorg -....), щоб уникнути конфлікту з новими комп’ютерами.
(Можливо, якщо я також мав їх у своєму локальному сховищі, вони можуть спокійно захотіти повернути його назад. Але, як правило, ці пакунки встановлюються, я їх не завантажував, тому не перебуваю в локальній репо-ренепі, отже, цей результат) .
Висновок : Отже, використання /etc/apt/preferencesрекомендується використовувати лише з локальним сховищем, якщо у вас є повне сховище в локальній системі.
Що робити, якщо в багатьох сховищах існує кілька екземплярів (.deb-файлу) однієї і тієї ж версії.
Що описано в apt_preferenceпосібнику
Кілька примірників однієї і тієї ж версії пакету можуть бути доступні, коли файл source.list (5) містить посилання на більш ніж одне джерело. У цьому випадку apt-get (8) завантажує екземпляр, перерахований раніше, у файл source.list (5).
Приклад випадків використання /etc/apt/preferencesфайлу:
Прикладом змушення apt-getвибору версії, доступної зі спеціального репо, замість стандартної Ubuntu може бути дистрибутив "Linux Mint". Вони використовують цей спеціальний preferenceфайл.
Пакет: *
Pin: випустити o = linuxmint
Пріоритет: 700
Пакет: *
Pin: походження пакети.linuxmint.com
Пріоритет: 700
Пакет: *
Pin: випустити o = Ubuntu
Пріоритет: 500
Це фактично змушує їх надавати пакети, коли вони є у своїх сховищах. Але якщо їх немає, вони використовують стандартне сховище Ubuntu.
Приклад працює apt-getпісля встановлення найвищого пріоритету для локального сховища
Я просто хотів встановити kubuntu-desktop пакет через Ubuntu для тестування KDE. (Я забув, що я встановив перевагу за допомогою /etc/apt/preferenceфайлу) . У мене був iso установника kubuntu-12.04-alternate, тому я думав, що можу цим скористатися.
(після правильного встановлення iso як джерела сховища) я побіг
sudo apt-get install kubuntu-desktop, а потім здивувався, побачивши вихідний результат нижче.
anwar @ edubuntu-lenovo: ~ $ sudo apt-get install kubuntu-desktop
Читання списків пакунків ... Готово
Побудова дерева залежності
Читання інформації про стан ... Готово
Неможливо встановити деякі пакети. Це може означати, що у вас є
запитували неможливу ситуацію або якщо ви використовуєте нестабільну
розповсюдження, що деякі необхідні пакети ще не створені
або було переміщено з вхідних.
Наступна інформація може допомогти вирішити ситуацію:
Наступні пакети мають невиконані залежності:
kubuntu-desktop: Залежить: language-selector-kde, але він не буде встановлений
Рекомендує: amarok, але він не збирається встановлювати
Рекомендує: apturl-kde, але він не буде встановлений
Рекомендує: gdebi-kde, але він не буде встановлений
Рекомендує: gpgsm, але він не буде встановлений
Рекомендує: ibus-qt4, але він не збирається встановлювати
Рекомендує: jockey-kde, але він не буде встановлений
Рекомендує: kdegraphics-strigi-плагіни, але він не буде встановлений
Рекомендує: kdepim-wizards, але він не буде встановлений
Рекомендує: kpackagekit, але він не буде встановлений
Рекомендує: libreoffice-kde, але він не буде встановлений
Рекомендує: libreoffice-style-кисень, але він не встановлюється
Рекомендує: network-manager-pptp-kde, але він не буде встановлений
Рекомендує: plasma-widget-facebook, але він не буде встановлений
Рекомендує: плазма-віджет-кімпанель, але він не буде встановлений
Рекомендує: usb-creator-kde, але він не буде встановлений
E: Не вдається виправити проблеми, ви зламали зламані пакети.
Я був здивований результатом. раптом я пам'ятаю це, я встановив перевагу ( для написання цієї відповіді ), /etc/apt/preferenceщоб визначити найвищий пріоритет для мого локального сховища.
Отже, я запустив це:, apt-cache policy kubuntu-desktopвихід був як нижче:
anwar @ edubuntu-lenovo: ~ $ apt-кеша політика kubuntu-desktop
kubuntu-desktop:
Встановлено: (немає)
Кандидат: 1.222.1kde47 ~ ppa2
Таблиця версій:
1,225 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Випуск i386 (20120424) / точний / основний пакет i386
500 http://archive.ubuntu.com/ubuntu/ точні / основні пакети i386
1.222.1kde47 ~ ppa2 0
Файл 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222.1 0
Файл 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1,222 0
Файл 1001: / media / Main / Linux-Software / Ubuntu / Natty / kubuntu / Packages
У цьому висновку, ми бачимо , що і «CDROM» і «точний головний репозиторій» має номер версії 1.254 , в той час як локальний репозиторій має версію 1.222.1kde47 ~ PPA2 , яка є нижчою версії. Хоча вони розміщуються перед локальними у файлі source.list, місцеві пакети отримали перевагу.
Щоб явно побачити, що apt-getнасправді намагається встановити з локального, я побіг synapticі отримав це, що показує, що система Apt розглядає 1.222.1kde47 ~ ppa2 як кандидатську версію для встановлення.
Також apt-cache policy kubuntu-desktopпоказ одних і тих же речей
anwar @ edubuntu-lenovo: ~ $ apt-кеша політика kubuntu-desktop
kubuntu-desktop:
Встановлено: (немає)
Кандидат: 1.222.1kde47 ~ ppa2
Таблиця версій:
1,225 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Випуск i386 (20120424) / точний / основний пакет i386
500 http://archive.ubuntu.com/ubuntu/ точні / основні пакети i386
1.222.1kde47 ~ ppa2 0
Файл 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1.222.1 0
Файл 1001: / media / Main / Linux-Software / Ubuntu / Natty / natty / Packages
1,222 0
Файл 1001: / 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 / налаштування
anwar @ edubuntu-lenovo: ~ $ sudo apt-cache policy kubuntu-desktop
kubuntu-desktop:
Встановлено: (немає)
Кандидат: 1.254
Таблиця версій:
1,225 0
500 cdrom: // Kubuntu 12.04 LTS _Precise Pangolin_ - Випуск i386 (20120424) / точний / основний пакет i386
500 http://archive.ubuntu.com/ubuntu/ точні / основні пакети i386
1.222.1kde47 ~ ppa2 0
500 файлів: / медіа / Головна / Linux-програмне забезпечення / Ubuntu / Natty / natty / пакети
1.222.1 0
500 файлів: / медіа / Головна / Linux-програмне забезпечення / Ubuntu / Natty / natty / пакети
1,222 0
500 файлів: / медіа / Головна / Linux-програмне забезпечення / Ubuntu / Natty / kubuntu / Пакети
Також запустив це ще раз. sudo apt-get install kubuntu-desktopщоб побачити вихід нижче:
......... Непотрібні дані видалено .........
0 оновлених, 213 нещодавно встановлених, 0 для видалення та 150 не оновлених.
Потрібно отримати 0 B / 89,6 МБ архівів.
Після цієї операції буде використано 269 Мб додаткового дискового простору.
Ви хочете продовжити [Y / n]?
Повний результат ви можете перевірити тут
Тоді я майже впевнений у частині пояснення.
Довідка 1: Посібник з apt_preference
Довідка 2: Як зберегти встановлену конкретну версію пакетів