Упаковка Deb - автоматическое удаление устаревших файлов и отмена установки по сценарию preinst - PullRequest
0 голосов
/ 24 апреля 2019

Я недавно начал изучать упаковку.Я должен упаковать некоторые приложения Python для облегчения обслуживания / обновления.Прежде чем вы перенаправите меня к Руководству по обслуживанию и подобным ОГРОМНЫМ руководствам по упаковке, я хочу сказать, что это приложение НИКОГДА не попадет в любой официальный / неофициальный репозиторий.Он всегда будет установлен / обновлен с помощью DPKG, а не APT - хосты все время должны быть отключены.Поэтому мне не нужно быть очень строгим в соблюдении правил упаковки и, следовательно, не нужно делать что-то очень сложным образом.

На данный момент самое простое место для начала, которое я нашел, это учебник ...

https://www.leaseweb.com/labs/2013/06/creating-custom-debian-packages/

Я не делал никаких шаблонов, а просто сделал несколько простых скриптов /myapp-1.0/home/bin/helloworld.py вместе с /myapp-1.0/DEBIAN/control и /myapp-1.0/Скрипт DEBIAN / postinst, который просто копирует файл file.conf в нужное место.Все работало как надо.Конечно, я знаю, что этот путь неправильный, и я должен использовать такие вещи, как debhelper.Мое приложение находится в хранилище, поэтому мне придется копировать вещи в правильную структуру папок.Вот почему я начал делать вещи таким образом ...

https://github.com/phusion/debian-packaging-for-the-modern-developer/tree/master/tutorial-2

... и я даже ближе к тому, чего я хочу достичь, но есть еще 2 вещи, которые мешают мне ...

  1. Мое приложение будет установлено в автономном режиме.Все зависимости, необходимые приложению, должны быть уже установлены на хосте.Я хочу добавить управление версиями хоста и соотнести его с пакетами Debian, поэтому при установке / обновлении myapp.deb сначала будет проверяться, достаточно ли новой версии хоста для установки.Как (правильно) этого добиться?У меня есть две идеи:
    • поместить версию хоста в какой-нибудь файл /etc/somefile.txt, прочитать его в DEBIAN / preinst и решить, продолжать установку или нет (возможно ли это даже в preinst?)
    • создайте какой-нибудь очень простой фиктивный пакет hostversion.deb и добавьте для него зависимость в myapp.deb
  2. Что происходит с устаревшими файлами во время обновлений?Допустим, у меня есть версия 1.0 с некоторыми файлами.Сейчас я делаю большие изменения и удаляю многие из них в версии 1.1.Что произойдет, когда я выполню обновление?Я не хочу удалять их в / postinst или создавать какие-либо списки файлов / каталогов для удаления, потому что это кажется мне очень неэффективным.Есть ли эффективный способ удаления файлов, которых нет в новейших версиях?
...