Подтвердить что ты не робот

Как создать пакет debian для файла войны для Ubuntu

У нас есть файл войны, файлы xml файлов Liquibase и контрольные суммы sha1, которые мы хотим упаковать как Debian script для развертывания на одну платформу: ubuntu 14.1 64bit с tomcat 7 и java 7.

Мы пробрались через большое количество непонятных (для нас как разработчиков java) руководств по упаковке Debian, для большинства из которых требуется "восходящий исходный tar-мяч" (например, этот: https://wiki.debian.org/IntroDebianPackaging) и/или что-то, созданное при выполнении make/install.

У нас нет ни одного, что является основной проблемой нашей проблемы.

Мы имеем две фазы:

  • Первоначальная установка (выполняется один раз)
  • Обновление (выполняется много раз)

В руководствах не упоминается, как управлять этими двумя этапами.

Первоначальная установка (что мы делаем сейчас вручную на каждом сервере):

  • установите java, tomcat7, используя apt-get как root. Предположительно это можно автоматизировать с помощью зависимостей
  • сильно отредактируйте файл var/lib/tomcat7/conf/context.xml с целевой строкой/паролем подключения к базе данных и т.д. Предположительно, это должно быть сделано вручную после установки.
  • создайте нового пользователя и группу для нашего приложения, например. "Foo".
  • логин как foo
  • В домашнем каталоге foos установите базовое приложение: 4.1 создайте каталог скриптов и скопируйте файл install.sh 4.2 отредактируйте файл install.sh и измените строку подключения к базе данных, секретный пользователь и пройдите в соответствии с целевым db (на другом сервере) 4.3 скопируйте бинарное распределение ликбазы банок и скриптов в подсистему Liquibase.

Само приложение, которое мы распространяем через tar файл, созданный с помощью Jenkins. В tar есть следующее:

  • app.sha1
  • migration/changelog.xml(и множество файлов xml файлов Liquibase)
  • app.war
  • classes.sha1

Мы scp tar файл в директорию /home/foo и запустим /home/foo/scripts/install.sh, который делает следующее:

  • удаляет старый tar и неиспользуемый материал из /home/foo
  • переносит новый tar файл.
  • останавливает tomcat
  • запускает команду Liquibase jar с файлом untarred migrations для создания/обновления db
  • удаляет /var/lib/tomcat 7/webapps/*
  • копирует новую войну в файл var/lib/tomcat7/webapps/
  • запускает tomcat
  • ждет немного
  • использует sha1sum, чтобы убедиться, что классы верны (это не имеет никакой цели, кроме как это требование от клиента).

У нас есть следующие вопросы:

  • Где и как создается пользователь? Например. foo в нашем случае, или tomcat7 в случае с котами.
  • Установлен ли пакет "самостоятельно"? Или он только помещает файлы в файловую систему (и, следовательно, требует, чтобы администратор позже запускал один или несколько сценариев для выполнения работы. Есть ли какой-то стандарт для скриптов, выполняющих эту работу, например, имена стандартов?
  • Есть много инструментов для упаковки, e, g, Jenkins plugins, dpkg, fpm, debuild, dpkg-buildpackage. Что мы должны использовать? Мы смотрели на fpm, но он предполагает, что у вас есть dir, созданный из исходной установки с файлами make и т.д., Мы не делаем.
  • Где установлены пакеты? Будет ли это в say/var/lib/foo, или var/lib/foo-0.3.4? Если последнее, у нас проблемы, так как другим частям системы необходимо получить доступ к файлам .sha1 и, следовательно, нужно одно фиксированное место для установки.
  • Есть ли лучший способ, чем вручную редактировать каждый сервер context.xml и install.sh для того, чтобы каждый клиент имел правильную информацию о соединении db? Например, люди используют awk/sed для таких вещей из script, или есть какой-то mysql-пароль и репозиторий строк строк?
  • Как устанавливаются права доступа и разрешения целевых файлов?
  • Кто-нибудь сталкивается с учебником по упаковке типа "привет мир", который не полагается на существующий "источник tar + make + install" и показывает взаимосвязь между файлами в пакете и файлами на целевом сервере после установки, и жизненный цикл пакета, включая работу с обновлениями?
  • Как система управляет только отправкой обновленных файлов, например, не двоичных файлов Liquibase в этом случае? Я предполагаю, что нам понадобится два пакета: один для базовой установки и один для tar, чтобы избежать дублирования?

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

    Мы попытались прочитать руководство по политике Debian (https://www.debian.org/doc/debian-policy/), но это справочная информация для опытных разработчиков пакетов linux. Мы уверены, что ответы там, но мы не можем понять, где.

Этот пост: https://help.ubuntu.com/community/Tomcat/PackagingWebapps Имеет два других варианта (мы выбрали "избиение общесистемного экземпляра в представлении" ), но не дают никаких указаний о том, как фактические сборки пакетов.

4b9b3361