Как мне сделать собственный .deb пакет?
Я рассмотрю здесь простой способ, основанный на ручной сборке пакета, без использования специфических утилит типа deb-make и других.
Для начала, вы должны иметь, то что вам нужно установить с помощью собираемого вами пакета. Путь это будет какая-либо утилита, расширяющие возможности системы. (С тем же успехом - это могут быть дополнительные файлы шрифтов или еще что-нибудь). Пусть эта утилита называется probe. Положим, что к этой утилите вы написали страничку руководства man с названием probe.1 и кроме того положим, что есть какой-либо файл, где разобран пример работы с данной утилитой с именем example. Путь файл с примером и страничка руководства называются сопровождающими файлами.
Важно, чтобы вы представляли, где должна быть размещена эта утилита и сопровождающие ее файлы. Обычно исполняемые файлы размещают в /usr/bin. Странички руководства man размещают в /usr/man/man.1, а всякие примеры в /usr/lib/имя_утилиты. Пусть так будет и в нашем случае.
Итак, выполняем следующие шаги:
Создаем временный каталог с именем DEB Создаем в этом каталоге подкаталоги, в которые нужно поместить утилиту и сопровождающие файлы Создаем в этом каталоге подкаталоги, в которые нужно поместить утилиту и сопровождающие файлы. При этом каталоги создаются так, как будто DEB является корневым каталогом. Таким образом, в нашем случае, файлы должны быть размещены следующим образом:
DEB/usr/bin/probe
DEB/usr/man/man1/probe.1
DEB/usr/lib/probe/example
Создаем в каталоге DEB служебный каталог с именем debian В этом каталоге создаем обязательный файл control и по вашему желанию также могут быть добавлены файлы preinst, postinst, prerm, postrm и conffiles.
Вот для чего они нужны:
control
Служебная |
conffiles
Список конфигурационных файлов |
preinst
Скрипт, выполняемый перед началом установки пакета |
postinst
Скрипт, выполняемый после установки пакета |
prerm
Скрипт, выполняемый перед удалением пакета |
postrm
Скрипт, выполняемый после удаления пакета |
Нелишним будет напомнить, что скрипты должны иметь права на выполнение, иначе ничего выполняется у вас не будет.
Я рассмотрю здесь простой способ, основанный на ручной сборке пакета, без использования специфических утилит типа deb-make и других.
Теперь заполняем файл control служебной информацией.
Эту информацию впоследствии будет использовать менеджер пакетов dpkg и программа dselect. Информацию можно занести в любом текстовом редакторе. Для нашего случая я привожу уже готовый файл:
Package: probe Version: 1.0 Architecture: i386 Maintainer: Ivan Ivanov <ivan@perm.ru> Description: My probe utility This is my utility
Теперь поясним, что к чему. Слова с двоеточиями являются служебными и выполняют закрепленные за ними функции. Здесь даны далеко не все возможные слова - остальные найдете на страничке руководства man с названием deb-control(5). За словом Package: должно идти имя пакета. В этом имени не должно быть заглавных букв или небуквенных символов типа ``!'', ``?'' и т.д. За словом Version: должен идти номер версии. За словом Architecture: архитектура машины для которой собирается пакет. Для платформы Intel это i386. За словом Maintainer: должно следовать имя автора пакета, с необязательным адресом электронной почты (в нашем случае ivan@perm.ru). За словом Description: должно следовать краткое, или полное описание пакета (можно использовать русские буквы, но тогда в dselect'е вы будете иметь проблемы). Краткое описание следует непосредственно за словом. Полное описание начинается со следующей строки.
Обратите внимание: перед фразой This is my utility пробел. Он указывает, что данная фраза является продолжением описания.
Если его не поставить, то при сборке пакета вы получите сообщение об ошибке.
Создайте и заполните остальные файлы, указанные в таблице, если ВАШЕМУ пакету это нужно (в данном случае они не нужны). Для генерации .deb пакета наберите команду dpkg -b имя_каталога имя_пакета.deb
В нашем случае эта команда будет выглядеть так:
dpkg -b DEB probe-1.0.deb
Если вы правильно выполнили все описанные выше инструкции, то вы получите файл probe-1.0.deb, который вы можете теперь установить через команду
dpkg -i probe-1.0.deb.
Не правда ли, все это довольно просто? Вы можете пойти дальше, создав свое собственное дополнение к стандартному дистрибутиву в стиле Debian и подключать его через каталог local в программе dselect. Однако создание такого дополнения, с генерацией файла Packages будет посложнее. По этому я настоятельно рекомендую вам почитать страницы руководства man с названиями: dpkg(8), dpkg-deb(1), deb-control(5) и dpkg-scanpackages(8).