Коротка відповідь:
Файл налаштувань 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: Як зберегти встановлену конкретну версію пакетів