Назад | Перейти на главную страницу

Как я могу в частном порядке распространять пакет Ubuntu (Debian), который отменяет любой официальный выпуск?

Иногда мне нужно внести незначительные изменения исходного кода в стандартные пакеты Ubuntu для использования на коллекции серверов, которыми я управляю. Я хотел бы опубликовать их в PPA (например, launchpad.net), чтобы я мог установить и поддерживать их в актуальном состоянии с помощью всех обычных механизмов (например, автоматических обновлений). Как правильно гарантировать, что данный пакет в моем PPA заменит любой официальный выпуск? Кажется, это не задача для удержания или закрепления, поскольку я, по сути, хочу разветвлять последовательность выпуска, а не включать или исключать определенные версии. Обладая ограниченными знаниями, я могу предположить несколько возможных направлений.

  1. Самым правильным вариантом было бы как-то проинструктировать apt игнорировать конкретный пакет в официальных репозиториях, как будто его никогда не существовало. Я не нашел такого детального контроля в apt.

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

  3. Наименее привлекательный вариант - переименовать существующие пакеты с частным суффиксом (libfoo-mycompany), чтобы сделать их полностью независимыми. Из-за строгих соглашений об именах, используемых менеджером пакетов Debian, это может быть пробным упражнением для нетривиальных пакетов. Это то, чего я пытаюсь избежать.

  4. Четвертый вариант - очевидное решение, которое я полностью упустил из виду даже после нескольких часов поиска в документации, и на которое кто-то жаждет указать.

Спасибо

На самом деле удачное закрепление должно быть тем, что вам нужно; вам просто нужно установить приоритет выше тысячи, чтобы ваши версии всегда имели приоритет, даже над пакетом с более высоким номером из основного репо.

Поместите это в /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