Иногда мне нужно внести незначительные изменения исходного кода в стандартные пакеты Ubuntu для использования на коллекции серверов, которыми я управляю. Я хотел бы опубликовать их в PPA (например, launchpad.net), чтобы я мог установить и поддерживать их в актуальном состоянии с помощью всех обычных механизмов (например, автоматических обновлений). Как правильно гарантировать, что данный пакет в моем PPA заменит любой официальный выпуск? Кажется, это не задача для удержания или закрепления, поскольку я, по сути, хочу разветвлять последовательность выпуска, а не включать или исключать определенные версии. Обладая ограниченными знаниями, я могу предположить несколько возможных направлений.
Самым правильным вариантом было бы как-то проинструктировать apt игнорировать конкретный пакет в официальных репозиториях, как будто его никогда не существовало. Я не нашел такого детального контроля в apt.
Второй вариант - изменить номер версии так, чтобы у моего пакета гарантированно была более высокая версия, чем у любого официального выпуска. Возможно ли это - по крайней мере, с очень высокой вероятностью - при злоупотреблении компонентом эпохи в номере версии? И сколько личного стыда мне придется вынести?
Наименее привлекательный вариант - переименовать существующие пакеты с частным суффиксом (libfoo-mycompany), чтобы сделать их полностью независимыми. Из-за строгих соглашений об именах, используемых менеджером пакетов Debian, это может быть пробным упражнением для нетривиальных пакетов. Это то, чего я пытаюсь избежать.
Четвертый вариант - очевидное решение, которое я полностью упустил из виду даже после нескольких часов поиска в документации, и на которое кто-то жаждет указать.
Спасибо
На самом деле удачное закрепление должно быть тем, что вам нужно; вам просто нужно установить приоритет выше тысячи, чтобы ваши версии всегда имели приоритет, даже над пакетом с более высоким номером из основного репо.
Поместите это в /etc/apt/preferences
. Если вы размещаете собственное репо, построенное с помощью чего-то вроде reprepro
, тогда вы можете указать свое имя хоста:
Package: *
Pin: origin your.repo.hostname
Pin-Priority: 1001
Или с помощью Launchpad PPA вы можете настроить параметры выпуска:
Package: *
Pin: release o=LP-PPA-your-ppa-name
Pin-Priority: 1001