Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
wiki:сборка_пакетов [2013/08/31 20:27] [Сборка пакета] |
wiki:сборка_пакетов [2015/12/20 00:57] (текущий) Страница wiki:создание_deb_пакетов переименована в wiki:сборка_пакетов (в Ubuntu deb, и так понятно, что deb) |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Сборка ПО и создание .deb-пакетов из исходников в Debian-системах ====== | + | ====== Сборка пакетов ====== |
| <note tip>Эта статья не завершена. Вы можете помочь в ее написании | <note tip>Эта статья не завершена. Вы можете помочь в ее написании | ||
| * исправив стилистику статьи | * исправив стилистику статьи | ||
| Строка 19: | Строка 19: | ||
| - Cобрать нормальный пакет, как это делают мантейнеры. В котором будет корректная версия, зависимости и расположение файлов будет соответствовать политике дистрибутива. Вижу вам всё ещё интересно :-). Это радует. | - Cобрать нормальный пакет, как это делают мантейнеры. В котором будет корректная версия, зависимости и расположение файлов будет соответствовать политике дистрибутива. Вижу вам всё ещё интересно :-). Это радует. | ||
| - | ====== Основная часть ====== | + | ====== Классификация случаев сборки ====== |
| + | Возможны следующие случаи сборки пакетов: | ||
| + | |||
| + | * сборка из исходников; | ||
| + | * сборка из бинарных файлов; | ||
| + | |||
| + | исходники или бинарные файлы берутся: | ||
| + | * не из репозитория; | ||
| + | * из репозитория другого дистрибутива; | ||
| + | * из репозитория другого выпуска Ubuntu, из PPA или из Debian; | ||
| + | * из репозитория текущего выпуска Ubuntu; | ||
| + | |||
| + | дебианизация: | ||
| + | * недоступна; | ||
| + | * берётся из репозитория Ubuntu, из PPA или из Debian: | ||
| + | * из другой версии программы; | ||
| + | * из текущей версии программы: | ||
| + | * не из репозитория текущего выпуска Ubuntu; | ||
| + | * из репозитория текущего выпуска Ubuntu; | ||
| + | |||
| + | причина сборки: | ||
| + | * ни в репозитории Ubuntu текущего выпуска, ни в PPA нет нужной версии программы; | ||
| + | * доступная версия программы по каким-либо причинам не устраивает (не устраивает код или данные программы, параметры конфигурации или управляющая информация пакета); | ||
| + | * и то, и другое. | ||
| + | |||
| + | ====== Сборка из исходников ====== | ||
| * Дано: некий исходник gcoolprog-0.5.3.tar.bz2. Нужно из него собрать пакет. | * Дано: некий исходник gcoolprog-0.5.3.tar.bz2. Нужно из него собрать пакет. | ||
| * Решение: ниже идёт вариант, как я обычно поступаю в таком случае. | * Решение: ниже идёт вариант, как я обычно поступаю в таком случае. | ||
| - | - Первым делом смотрю, нет ли deb-пакета той же версии, но допустим под Debian. Если есть делаю так: [[#вариант_3|есть нужная версия пакета в репозитории debian или в будущем релизе Ununtu]] | + | - Первым делом смотрю, нет ли deb-пакета той же версии, но допустим под Debian. Если есть делаю так: [[#Дебианизация_берётся_не_из_репозитория_текущего_выпуска_Ubuntu|есть нужная версия пакета в репозитории debian или в будущем релизе Ununtu]] |
| - | - Если нет той же версии, но есть предыдущей. Тут можно сказать как повезёт, если изменения в исходниках не коснулись положения файлов, то скорее всего дебианизация от старого пакета подойдёт, нужно лишь сменить версию. [[#вариант_2|Теперь вариант в репозитории есть пакет предыдущей версии.]] | + | - Если нет той же версии, но есть предыдущей. Тут можно сказать как повезёт, если изменения в исходниках не коснулись положения файлов, то скорее всего дебианизация от старого пакета подойдёт, нужно лишь сменить версию. [[#Дебианизация_берётся_из_другой_версии_программы|Теперь вариант в репозитории есть пакет предыдущей версии.]] |
| - | - Ну и самый страшный случай - нигде никаких deb-пакетов нет, только tar.gz и rpm. Ни в коем случае не использовать rpm! Делаем по [[#вариант_1|первому варианту]]. | + | - Ну и самый страшный случай - нигде никаких deb-пакетов нет, только tar.gz и rpm. Ни в коем случае не использовать rpm! Делаем по [[#Дебианизация_недоступна|первому варианту]]. |
| ===== Что необходимо ===== | ===== Что необходимо ===== | ||
| Строка 35: | Строка 60: | ||
| Можно так же ''autobook'' - это документация по утилитам ''GNU Autoconf'', ''Automake'', и ''Libtool''. Ну и конечно то, что требуют сами исходные коды для корректной сборки. | Можно так же ''autobook'' - это документация по утилитам ''GNU Autoconf'', ''Automake'', и ''Libtool''. Ну и конечно то, что требуют сами исходные коды для корректной сборки. | ||
| - | === Создание ключа шифрования === | + | ==== Создание ключа шифрования ==== |
| Этот шаг не обязателен, его можно пропустить. | Этот шаг не обязателен, его можно пропустить. | ||
| Строка 62: | Строка 87: | ||
| Теперь можно выбрать ключ и в меню по правой кнопке выбрать //Синхронизировать и опубликовать ключи//. | Теперь можно выбрать ключ и в меню по правой кнопке выбрать //Синхронизировать и опубликовать ключи//. | ||
| - | ===== Вариант 1: Есть только архив с исходниками ===== | + | ===== Дебианизация недоступна ===== |
| Итак, у нас есть только //gcoolprog-0.5.3.tar.gz//. | Итак, у нас есть только //gcoolprog-0.5.3.tar.gz//. | ||
| Строка 130: | Строка 155: | ||
| <code bash>dpkg -i *.deb</code> | <code bash>dpkg -i *.deb</code> | ||
| - | =====Вариант 2: Когда в репозитории есть пакет предыдущей версии===== | + | ===== Дебианизация берётся из репозитория Ubuntu, из PPA или из Debian ===== |
| + | ==== Дебианизация берётся из другой версии программы ==== | ||
| В этом случае, очень удобно взять дебианизацию оттуда и поправить для новой версии. | В этом случае, очень удобно взять дебианизацию оттуда и поправить для новой версии. | ||
| Строка 174: | Строка 199: | ||
| dpkg -i *.deb</code> | dpkg -i *.deb</code> | ||
| - | ===== Вариант 3: Есть нужная версия пакета в репозитории debian или в будущем релизе Ubuntu ===== | + | ==== Дебианизация берётся из текущей версии программы ==== |
| + | === Дебианизация берётся не из репозитория текущего выпуска Ubuntu === | ||
| Для Debian нужно использовать сайт [[http://packages.debian.org]], для Ubuntu - [[http://packages.ubuntu.com]]. Тогда, например, в Ubuntu ищем пакет **gcoolprog** в репозитории будущего релиза. | Для Debian нужно использовать сайт [[http://packages.debian.org]], для Ubuntu - [[http://packages.ubuntu.com]]. Тогда, например, в Ubuntu ищем пакет **gcoolprog** в репозитории будущего релиза. | ||
| Строка 197: | Строка 222: | ||
| dpkg -i *.deb</code> | dpkg -i *.deb</code> | ||
| - | ====== Как пересобрать deb-пакет ====== | + | === Дебианизация берётся из репозитория текущего выпуска Ubuntu === |
| + | В случае, когда для нужной версии программы имеется пакет в репозитории текущего выпуска Ubuntu, но он по каким-либо причинам не устраивает и в его исходники нужно внести изменения (например, применить какой-нибудь патч) и пересобрать, основываясь на уже имеющейся в пакете дебианизации, можно поступить следующим образом. | ||
| + | Для сборки понадобятся следующие пакеты: build-essential devscripts fakeroot. Потребуются также пакеты для разработки, мы их установим в дальнейшем. | ||
| + | |||
| + | Скачиваем исходники: | ||
| + | |||
| + | <code bash> | ||
| + | cd ~/src | ||
| + | apt-get source gcoolprog | ||
| + | </code> | ||
| + | |||
| + | apt-get source скачивает исходники из репозитория Ubuntu в текущую директорию. Многие пакеты в репозитории имеют общие друг с другом исходники, поэтому кроме исходников выбранного пакета могут скачаться и исходники других пакетов (общие для нескольких пакетов исходники). | ||
| + | |||
| + | Далее вносим изменения в исходники и собираем из них обратно пакеты. | ||
| + | |||
| + | Устанавливаем необходимые для сборки пакеты для разработки: | ||
| + | |||
| + | <code bash> | ||
| + | sudo apt-get build-dep gcoolprog | ||
| + | </code> | ||
| + | |||
| + | Собираем пакеты: | ||
| + | |||
| + | <code bash> | ||
| + | cd gcoolprog-0.5.3 | ||
| + | debuild -b -us -uc | ||
| + | </code> | ||
| + | |||
| + | debuild следует запускать в директории исходников. Параметры -b -us -uc передаются программе dpkg-buildpackage. Первый требует собирать только бинарные пакеты, второй и третий — не подписывать цифровой подписью, соответственно, пакет исходников и файл .changes. Получившиеся в результате сборки пакеты будут в директории на один уровень выше. | ||
| + | |||
| + | ====== Сборка из бинарных файлов ====== | ||
| **Ниже идёт пример как можно поступить в случае, если доступен только deb-пакет и нет его дебианизированных исходников.** | **Ниже идёт пример как можно поступить в случае, если доступен только deb-пакет и нет его дебианизированных исходников.** | ||
| <note>Для начала советую прочитать [[http://wiki.debian.org/DebianRussian/DebinstPackages|это]]. | <note>Для начала советую прочитать [[http://wiki.debian.org/DebianRussian/DebinstPackages|это]]. | ||
| Строка 236: | Строка 291: | ||
| ====== Ссылки ====== | ====== Ссылки ====== | ||
| - | |||
| * Некоторые команды мне подсказал Александр Герасёв [[http://gq.net.ru/2007/03/16/building-deb-packages/]] | * Некоторые команды мне подсказал Александр Герасёв [[http://gq.net.ru/2007/03/16/building-deb-packages/]] | ||
| * Официальное полное руководство на Русском [[http://www.debian.org/doc/maint-guide/]] | * Официальное полное руководство на Русском [[http://www.debian.org/doc/maint-guide/]] | ||