Возможно этот блог может быть полезным для вас.
Подробно описывает структуру пакета deb, которая выглядит следующим образом:
<YOUR PACKAGE NAME>
└── deb
├── DEBIAN
│ ├── conffiles
│ ├── control
│ └── preinst
└── opt
└── <YOUR APPLICATION>
└── <Your Application Contents>
В основном, внутри пакета есть папка deb со следующими 2 обязательными папками внутри:
- DEBIAN - содержит файлы, которые описывают сам пакет deb
- структура файловой системы, отражающая место назначения пакета
монтаж. В приведенном выше примере пакет будет развернут в каталоге
/opt/<YOUR APPLICATION>
.
В каталоге DEBIAN у вас должен быть как минимум файл control
, который является простым текстом. Он должен содержать записи в определенном формате, который подробно описан на связанной странице. Вот простой пример (взятый оттуда) с образцом контрольного файла:
Package:packagingmono
Version:1.0
Maintainer:Mikael Chudinov <mikael@chudinov.net>
Architecture:amd64
Section:net
Description:Template for Debian packaged Mono application.
Depends:mono-complete (>=3)
Package
должно быть вашим именем пакета. Разрешены верхние / нижние латинские буквы, цифры и -
.
Version
- версия пакета. Я бы рекомендовал использовать версию сборки для этого поля.
Maintainer
- имя разработчика и контактные данные и контактная информация.
Architecture
- либо i386
, либо amd64
. Если вы хотите распространять ваше приложение, оптимизированное для x86 и x64, в виде отдельных исполняемых файлов для каждой платформы (я имею в виду, что они созданы специально для x64 или x86, не использующих AnyCPU), то вы должны создать отдельные пакеты .deb для каждого и установить поле Architecture
соответственно. Остальные поля могут быть одинаковыми.
Section
- необязательно, это может быть любая из разрешенных категорий пакетов в системе Debian apt.
Description
. Состоит из двух токенов - краткое описание (первый элемент перед символом новой строки) и, возможно, более длинный (текст после первой новой строки).
Depends
- список зависимостей для вашего пакета. В примере указывается mono-complete
, которое является именем пакета для моно среды выполнения, и дополнительно ограничивает его значением выше или равным версии 3
Важная вещь, которую нужно знать о пакете deb, заключается в том, что вы можете фактически поместить все приложение (содержимое папки bin) в один пакет.
Нет необходимости помещать указанные библиотеки в отдельные пакеты и помечать их как зависимости, что имеет смысл, если вы планируете устанавливать другие приложения, которые будут полагаться на те же библиотеки. Кроме того, упаковка приложения не позволила бы проблеме dll-hell однажды стать проблемой пакета-адом. Недостатком этого является то, что размер упаковки может увеличиться.
В статье также рекомендуются некоторые родные инструменты GNU / Linux, которые помогут вам в создании пакета. Например, xbuild
можно использовать для запуска файла MSBuild, который сделает упаковку за вас. Это поможет сделать вещи более знакомыми для разработчиков Windows. Инструмент lintian
может также помочь вам исправить проблемы с созданным файлом .deb. Остальные инструменты - это промежуточные утилиты, которые запускаются во время процесса упаковки MSBuild.