MyTetra Share
Делитесь знаниями!
Как сделать DEB-пакет вручную (краткая инструкция)
Время создания: 03.03.2020 11:15
Текстовые метки: linux, debian, deb, пакет, создание, сборка
Раздел: Компьютер - Linux - Инсталляция программ
Запись: xintrea/mytetra_syncro/master/base/1583223346gdom7hvhes/text.html на raw.github.com

Последовательность действий для создания DEB-пакета вручную следующие:


1. Создаем каталог с название пакета;

2. В нем создаем дерево каталогов и файлов, которые надо установить, с абсолютными путями linux (т.е. ./<имя пакета>/usr/share/kontakt/<файлы>);

3. В созданном дереве каталогов создаем файлы, которые необходимо устанавливать. В этом каталоге необходимо создавать такую же структуру каталогов (как будто от корневого), что и каталоги в устанавливаемой системе;

4. В корне папки (создаваемого пакета) создаем каталог DEBIAN;

5. Перейти в каталог DEBIAN и создать в нем следующие файлы:

- control

- changelog

- copyright

- dirs

- md5sums

- preinst (скрипт, необходимо установить права на выполнение)

- postinst (скрипт, необходимо установить права на выполнение)

- prerm (скрипт, необходимо установить права на выполнение)

- postrm (скрипт, необходимо установить права на выполнение)

6. Выполнить команду dpkg-deb ...


Далее назначение файлов расписано более подробно.


Файлы, которые необходимо создать

Файл control


Атрибут

Описание

Примеры

Package

Имя пакета: [a-zA-Z0-9-] — только латиница, цифры, и дефис.

Package: supersh

Version

Версия пакета. Используется для определения «обновлять ли».

Формат принят такой: <версия_программы>-<версия_пакета>.

Допустимые символы достаточно вольные: можно использовать дату и буквы.

Version: 1.0-1

Version: 2009.12.12-1

Maintainer

Имя и почта мэйнтейнера пакета: человека, который «дебианизировал» приложение.

Формат произвольный, но принято имя <e-mail>

Maintainer: o_O Tync <o-o-tync.habrahabr.ru>

Architecture

Архитектура процессора, для которой предназначен пакет.

Допустимые значения: i386, amd64, all, source

all используется для скриптов.

source используется для компилируемых пакетов с исходниками


Architecture: all

Section

Определяет задачу, для которой приложение обычно используется (группа приложений).

Возможные значения: admin, base, comm, contrib, devel, doc, editors, electronics, embedded, games, gnome, graphics, hamradio, interpreters, kde, libs, libdevel, mail, math, misc, net, news, non-free, oldlibs, otherosfs, perl, python, science, shells, sound, tex, text, utils, web, x11

Section: misc

Description

Описание пакета.

Описание состоит из двух частей: короткое описание (70 символов) на той же строке, и длинное описание на последующих строках, начинающихся с пробела.

В расширенном описании все переводы строки игнорируются. Для вставки \n используется одиночная точка.

Description: Short.

Long

goes here.

.

New line.

Depends

Список пакетов через запятую, которые требуются для установки этого пакета.

После имени пакета можно в круглых скобках указать ограничение на версию, используя операторы: <<, =, >>, <=, >=. Если оператор не указан — используется >=

Depends: dpkg, libz (>= 1.2.3), jpeg (= 6b), png (< 2.0)


Пример содержимого файла control


Package: supersh

Version: 1.0

Maintainer: Sergey Ivantsov <SergeyLeonKik@mail.ru>

Architecture: all

Section: misc

Depends: bash (>=4.2)

Description: Super Shell Script

␣A super example script



Файл changelog (необязательно)

Используется dpkg для получения номера версии, ревизии, дистрибутива и важности пакета.

Пример содержимого файла changelog


supersh (1.0-1) stable; urgency=medium

* Testing.

-- o_O Tync <o-o-tync.habrahabr.ru> Sun, 13 Dec 2009 00:11:46 +0300



Файл copyright (необязательно)

Текст лицензии.

Пример содержимого файла


Package build Ivantsov Sergey


Файл dirs

Список абсолютных путей к папкам, которые требуются программе, но по каким-либо причинам не создаются (используется для создания папок? Похоже, что нет).

Пример содержимого файла


/var/log/supersh

/var/lib/supersh


Видимо, этот список нужен только для указания пакетной системе, какие каталоги контролируются данным пакетом. То есть, например бинарник программы может сам создавать какие-то каталоги, и здесь прописывается какие именно каталоги принадлежат программе. При удалении пакета данные каталоги будут удалены. В теории.


Файл md5sums (необязательно)

Используется для проверки целостности пакета.

Пример содержимого файла

Заполняется так (cwd=корень пакета):


$ md5deep -r usr > DEBIAN/md5sums


Скрипт preinst

Выполняется перед установкой пакета: он может подготовить что-либо для успешной установки.

Пример содержимого файла


#!/bin/bash

#echo “Выполняется Pre-install”

read

exit 0



Скрипт postinst

Выполняется сразу после установки пакета: он настраивает установленный пакет так, чтоб он был готов к работе.

Пример содержимого файла


#!/bin/bash

#echo “Выполняется Post-install”

read

exit 0


Скрипт prerm

Выполняется при процедуре удаления пакета (apt-get remove ... или apt-get purge ...), выполнение происходит перед тем, как будут удаляться файлы, которые были установлены из файловой структуры внутри пакета.

Внимание! В prerm невозможно узнать в каком режиме происходит удаление пакета - в remove или в purge.


Скрипт postrm

Выполняется при процедуре удаления пакета (apt-get remove ... или apt-get purge ...), выполнение происходит после того, как будут удалены все файлы, которые были установлены из файловой структуры внутри пакета.

В качестве первого параметра $1 в данный скрипт передается строка режима, в котором происходит удаление пакета. При remove будет "remove", при purge будет "purge".


Для создания deb-пакета выполняем следующую команду:


fakeroot dpkg-deb –build <название каталога с подготовленными файлами пакета>


Пакет будет создан в текущем каталоге.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования