LINUX.ORG.RU
ФорумAdmin

Конфигурация deb-пакета зависящего от самого себя определённой версии.

 , ,


0

1

Добрый вечер, ЛОРианцы.
Столкнулся со следующей задачей:
«Используя системные средства ( dpkg, apt-get ) и возможность самому собирать deb-пакеты, организовать систему обновлений с автоматической реализацией установки критических обновлений.»
Другими словами:
Если у нас есть 5 обновлений программы, то
1 - стартовая версия
2 - мелкое обновление
3 - критическое обновление ( скажем эта версия произвела конверсию базы данных из db1 в db2 )
4 - мелкое обновление
5 - мелкое обновление

Чтобы обновиться с стартовой версии до 5й версии, нам необходимо обязательно установить 3е обновление.
Остальные же можно пропускать.

Если в dependence deb-пакета поставить самого себя версии 3, то улетаем в ошибку loop.
Если же указать параметр Replace: mySelf( >= 3.0.0 ), но при попытке накатить версию 5.0 поверх 1.0 всё получится. Но я для простого примера собрал деб который при установке 3го обновления должен был создать файлик( в далёком отдельном каталоге), который у меня так и не появился ( touch этого файла было в postinst скрипте в версии 3.0).

Внимание вопрос: «Как это разрулить?» :)
Хотелось бы решить данный вопрос на уровне deb пакетов. 1 мысль, которая у меня крутиться, это в preinst скрипте версии 4 и версии 5, прописать установку версии 3. Но как-то это не красиво, ИМХО.

Ты когда-нибудь видел в дебиане версий пакета больше, чем веток?

melkor217 ★★★★★ ()

3 - критическое обновление ( скажем эта версия произвела конверсию базы данных из db1 в db2 )

А что мешает код ля конвернации базы после 3 версии никуда не удалять. а тащить с собой, пока это актуально? Тогда 4 или 5 версия точно так же увидит старую базу и обновит её, не требуя предварительной установки 3. Либо окажется, что никакой 3 и не нужно было, ибо 2 до этого не стояло и никакой базы и вовсе ещё нет.

INFOMAN ★★★★★ ()

Ты как-то неправильно представляешь себе версионность пакетов. Новая версия пакета не должна зависеть от старой. Она должна её содержать. Иначе это должны быть разные пакеты.

blexey ★★★★ ()

Сделай разные пакеты, а не разные версии одного пакета.

Davyd ★★ ()

Лучше запихни приблуду для анализа версии базы и обновления с любой версии до актуальной в postinst и не занимайся вот этой всей хренью. Конфертацию базу можно даже поэтапной делать (1-3-5), если 1-5 не получается сразу, или скрипт переколбашивать влом.

С таким подходом для конечного пользователя обновление превратится в ад, если пропущено критическое обновление.

Radjah ★★★★★ ()
Ответ на: комментарий от INFOMAN

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

skjame ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.