Изменение приоритета репозиториев PPA или пакетов Apt в Ubuntu
Это пошаговое руководство показывает, как установить приоритет определенных пакетов, PPA панели запуска и/или других подходящих репозиториев в Ubuntu, Debian, Linux Mint и системах на их основе.
Помимо использования системных репозиториев по умолчанию, мы также можем устанавливать дополнительные пакеты из сторонних или собственных репозиториев программного обеспечения.
Например, пользователь может обновить офисный пакет LibreOffice через Ubuntu PPA, установить Spotify, Google Chrome, Edge из своих собственных репозиториев или установить множество мультимедийных приложений из мультимедийного репозитория Debian.
Из-за смешанных источников программного обеспечения у вас есть несколько версий одного и того же пакета приложения, но вы можете установить и сохранить более старую или определенную версию. Или вы добавили сторонний репозиторий, но хотите установить из него только один или несколько пакетов, при этом все остальные остаются заблокированными.
В таких случаях вам необходимо установить приоритет для определенных пакетов или репозиториев, и вот как!
ПРИМЕЧАНИЕ. Это руководство НЕ работает для пакетов Flatpak и Snap, поскольку они работают в изолированной среде.
Шаг 1. Узнайте ключевой атрибут целевого репозитория.
Прежде чем начать, вам необходимо сначала узнать ключевой атрибут, чтобы определить целевой репозиторий пакетов.
1. Сначала нажмите Ctrl+Alt+T
на клавиатуре, чтобы открыть окно терминала. Затем запустите команду, чтобы обновить кеш пакета:
sudo apt update
2. Затем выведите список всех локальных репозиториев, а также их свойства, выполнив следующую команду:
apt policy
В выводе найдите целевой репозиторий PPA или пакетов и уникальные атрибуты (обычно «o=xxx»), чтобы отличать его от других.
В моем случае (см. скриншот ниже) я могу использовать:
- Атрибут Release:
o=LP-PPA-ubuntuhandbook1-testarm
илиl=testarm
для идентификации моего PPA testarm. - Атрибут «release»:
o=Spotify
или атрибут «origin»repository.spotify.com
для идентификации репозитория Spotify. - Атрибут Release:
o=aptian
илиl=aptian
или атрибут Originminecraft-linux.github.io
для идентификации Репозиторий Minecraft на GitHub. - Или даже
o=Ubuntu
для всех официальных репозиториев Ubuntu,c=multiverse
для мультивселенной,c=restricted
для репозиториев с ограниченным доступом.
Шаг 2. Создайте/редактируйте файл конфигурации настроек Apt.
Менеджер пакетов apt считывает правила приоритета пакетов из файлов в каталоге /etc/apt/preferences.d
.
1. Просто откройте терминал (Ctrl+Alt+T) и запустите команду, чтобы создать файл (с любым именем) в этом каталоге:
sudo nano /etc/apt/preferences.d/mozillateamppa
Здесь я использую текстовый редактор командной строки nano
, который работает на большинстве настольных компьютеров и серверов Linux. Вы можете заменить его соответствующим образом, например, gnome-text-editor
для GNOME, pluma
для MATE или mousepad
для XFCE.
2. Когда файл откроется, добавьте соответствующие правила.
Например, установите более высокий приоритет (1001) для всех пакетов из Mozilla Team PPA:
Package: *
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 1001
Как видите, каждое правило состоит из 3 строк. Они включают в себя:
- Пакет: — укажите, какой пакет или пакеты установить приоритет. Используйте значение * (для любого пакета), точное имя пакета или шаблоны регулярных выражений.
- Pin: — укажите из какого репозитория пакеты. Используйте
выпуск o=xxx
,выпуск l=xxx
илиorigin xxx.xxx.xxx
в соответствии с шагом 1. - Pin-Priority: – установите номер приоритета для указанных пакетов.
Как показано на скриншоте выше, вы можете добавить столько правил, сколько вам нужно.
Например, приведенные ниже правила предписывают установить более высокий приоритет для пакетов Firefox из MozillaTeam PPA, а для всех остальных установить значение -1.
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 1001
Package: *
Pin: release o=LP-PPA-mozillateam
Pin-Priority: -1
Вместо того, чтобы устанавливать приоритет для пакетов из определенного репозитория, вы также можете установить пакет определенной версии. Например, установите perl
версии 5.38.2-3.2build2
с приоритетом 1001.
Package: perl
Pin: version 5.38.2-3.2build2
Pin-Priority: 1001
По умолчанию Apt установит пакет с наивысшим приоритетом, если вы не укажете номер версии в команде apt
, например, sudo apt install firefox=133.0.3-0build3…
Приоритет пакета по умолчанию в Debian и Ubuntu составляет 500. И если вы установите приоритет пакета на номер:
- 1000 или выше, команда apt установит эту версию и даже понизит версию уже установленного пакета.
- от 501 до 999 (выше, чем 500 по умолчанию), apt установит эту версию, даже если она старше других версий. Но он не будет понижен, если уже установлена более высокая версия.
- от 1 до 499, устанавливайте только в том случае, если в локальных репозиториях нет другой версии.
- -1 или lower, запретите установку версии, если вы не укажете номер версии в команде apt или не используете
-t "o=unique-release-attribute "
(не будет работать, если доступна другая версия пакета с более высоким приоритетом), чтобы указать необходимость установки из определенного репозитория.
Для получения более подробной информации запустите команду man apt_preferences
в терминале, чтобы узнать.
Шаг 3. Примените изменения и проверьте.
После редактирования файла конфигурации нажмите Ctrl+S
для сохранения и Ctrl+X
для выхода.
Наконец, примените изменения, выполнив команду:
sudo apt update
И проверьте это с помощью команды apt policy
+ имени целевого пакета. Например, запустите команду для проверки пакета Firefox:
apt policy firefox
В выводе будут показаны доступные версии пакета, а также их приоритет.