Как установить debian/control для принуждения обновления библиотеки?

Этот вопрос нацелен на специалистов по обслуживанию PPA/пакетов.

У меня есть PPA с 2 пакетами:

  • mypackage (в настоящее время версия 1~ppa1~quantal)
  • mypackagelib (в настоящее время версия 1~ppa1~quantal)

В настоящее время файл управления mypackage имеет:

Depends: mypackagelib

Я хочу обновить эти 2 пакета к версии '2' (mypackage версия 2 и mypackagelib версия 2).

Как я могу удостовериться, что эти 2 пакета будут обновлены, когда пользователь обновит 'mypackage'?

К вашему сведению, изменяя поле 'Depends' на:

Depends: mypackagelib (>= 2)

НЕ работает и возвращает следующую ошибку:

mypackage : Depends: mypackagelib (>= 2) but mypackagelib-2~ppa1~quantal is to be installed
5
задан 17 December 2012 в 02:29

1 ответ

Ваши номера версий непоследовательны. Отношение порядка на номерах версий довольно сложно. Это описано в руководстве политики Debian. В особенности:

Сначала начальная часть каждой строки, состоящей полностью из символов нецифры, определяется. Эти две части (один из которых может быть пустым) сравнены лексически. Если различие найдено, оно возвращается. Лексическое сравнение является сравнением значений ASCII, измененных так, чтобы весь вид букв ранее, чем все небуквы и так, чтобы тильда виды перед чем-либо, даже конец части. Например, следующие части находятся в отсортированном порядке от самого раннего до последнего: ~~, ~~ a, ~, пустая часть, a.

В частности, 3.196~ppa1~quantal считается более старым, чем 3.196. Типичный вариант использования для ~ бета-версии: 1.42~beta3 прибывает прежде 1.42. Можно проверить понимание чисел версии пакета Debian путем выполнения dpkg --compare-versions:

$ dpkg --compare-versions '3.196~ppa1~quantal' '>=' '3.196'; echo $?
1

0 средств, что отношение порядка встречено, 1 средство, которое это не.

Существует некоторый неполный совет относительно номеров версий в справке упаковки PPA. Так как Ваш пакет не находится в Ubuntu, Вам не нужен a ~ суффикс; необходимо использовать номер версии как 3.196ppa1. Исходная зависимость может быть (>= 3.196) если какой-либо выпуск 3,196 сделает, или что-то как (>= 3.196ppa5) если Вам нужен, по крайней мере, определенный выпуск пакета.

Если Вы сохраняете ~ в здесь, необходимо поместить его в исходную зависимость также: (>= 3.196~ppa1~quantal). Сказать, “по крайней мере, ту же версию как основной пакет”, запись

Depends: mypackagelib (>= ${binary:Version})

Другая возможность (благодаря перекати-поле должен объявить зависимость от 3.196~ (число и тильда и ничто больше), который является более старой версией, чем 3.196~anything.


(Это не относится к Вам, но это могло бы относиться к будущим посетителям. То, что следует, применяется когда libmypackage содержит общую библиотеку (.so).)

Соглашение о присвоении имен для библиотек libmypackage1 и libmypackage2, между прочим. Если Вы запустили с mypackagelib-1, необходимо оставить это, но переключиться на libmypackage2 для следующей версии.

Эти два пакета библиотеки mypackagelib-1 и mypackagelib-2 мог бы сосуществовать, если существуют программы, все еще пользующиеся старой библиотекой и программами, пользующимися новой библиотекой, установленной одновременно. Если администратор явно не запросил установку пакета библиотеки (который он только сделал бы, если у него есть неупакованная программа, требующая библиотеки, например, в /usr/local), старый пакет библиотеки будет отмечен, как автоматически установлено, таким образом, он будет удален автоматически, когда не будет никаких зависимостей от него.

Для получения дополнительной информации о том, как упаковать библиотеку, считайте Библиотеку Debian, Упаковывающую руководство. Хотя политики Debian не обязательны для PPA Ubuntu, это - хорошая идея следовать за ними: они иллюстрируют лучшую практику для работы с Debian упаковочные инструменты.

2
ответ дан 17 December 2012 в 02:29

Другие вопросы по тегам:

Похожие вопросы: