Сборка пакетов Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:сборка_пакетов [2013/08/31 19:18]
[Дебианизация]
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//​.
  
Строка 127: Строка 152:
 gcoolprog_0.5.3-1_i386.deb gcoolprog_0.5.3-1_i386.deb
 gcoolprog_0.5.3.orig.tar.gz</​file>​ gcoolprog_0.5.3.orig.tar.gz</​file>​
-Dот теперь мы можем установить пакет+Вот теперь мы можем установить пакет
 <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/​]]