Пересборка deb-пакета в Debian/Ubuntu

()

Очень часто у пользователей Debian, Ubuntu и других основанных на Debian дистрибутивов возникает необходимость пересобрать .deb-пакет какой-то программы из исходных текстов. Ниже будет показано как это можно сделать.

Немного конкретизируем задачу: автор этих строк использует дистрибутив Ubuntu Karmic (9.10), в репозитории которого есть Jabber-клиент Gajim версии 0.12.5, однако появилось желание использовать Gajim версии 0.13. Готового пакета для Karmic найдено не было, однако для Ubuntu Lucid (10.04) Alpha этот пакет уже был. Соответственно напрашивалось два варианта решения поставленной задачи:

  1. Подключить репозиторий Lucid, поставить Gajim из него, отключить репозиторий Lucid.
  2. Бэкпортировать (перенести пакет из более новой версии дистриубтива в более старую) пакет из Lucid в Karmic.

Автор решил использовать второй способ. Приступаем к решению этой задачи. Для начала нужно зайти на страницу пакета на http://packages.ubuntu.com и скачать архивы с исходными текстами. Для Gajim это страница http://packages.ubuntu.com/gajim а архивы (на момент написания статьи):

  • gajim_0.13-0ubuntu2.diff.gz
  • gajim_0.13.orig.tar.gz
  • gajim_0.13-0ubuntu2.dsc

Скачав эти файлы установим инструменты, необходимые для пересборки пакетов:

apt-get install build-essential dpkg-dev fakeroot

Теперь нужно перейти в ту директорию, куда мы скачали архивы с исходными текстами и распаковать эти архивы командой:

dpkg-source -x gajim_0.13-0ubuntu2.dsc

После распаковки будет создана директория с именем вида "имя_пакета-версия_пакета", в нашем случае имя будет "gajim-0.13", переходим в неё и пытаемся запустить сборку:

cd gajim-0.13 && dpkg-buildpackage -rfakeroot -b

Если будет выдано сообщение о не хватке каких-то пакетов — их нужно установить. Автору этих строк не хватило пакетов: python-dev, python-gtk2-dev, libxss-dev, libgtkspell-dev и dpatch. Список пакетов зависит от уже установленных пакетов и пересобираемой программы. Установим недостающие пакеты:

apt-get install python-dev python-gtk2-dev libxss-dev libgtkspell-dev dpatch

После успешной установки зависимостей запустим сборку командой:

dpkg-buildpackage -rfakeroot -b

Если и в этом случае сборка закончится неудачей — надо тщательно проанализировать сообщения об ошибке. Возможно придётся предварительно бэкпортировать более новые версии зависимостей и только потом собирать пакет.

У автора всё прошло гладко и был создан пакет "gajim_0.13-0ubuntu2_amd64.deb", расположенный в одной директории с архивами с исходными текстами. Теперь его можно установить командой:

sudo dpkg -i ../gajim_0.13-0ubuntu2_amd64.deb

Теперь можно пользоваться более новой версией любимой программы:) Остальные программы и библиотеки бэкпортируются аналогичным образом.

На этом всё. Приятной работы!

Ключевые слова: dpkg-buildpackage, dpkg-source, build-essential, dpkg-dev, fakeroot.

Комментарии:

Anonymous 2010-01-24 18:04:56 (#)

> Если будет выдано сообщение о не хватке каких-то пакетов — их нужно установить.
Зачем? Есть штатные средства - apt-get build-dep gajim

MooSE 2010-01-24 20:28:06 (#)

Цитата:

Зачем? Есть штатные средства - apt-get build-dep gajim


Это всё клёво, но это работает в рамках текущего среза. Если ты ставишь версию новее чем в твоём репозитории - зависимости могут "поплыть".

morbo 2010-01-25 07:05:46 (#)

>После успешной установки можно зависимостей запустим сборку командой:

Слово "можно" - лишнее?

>Это всё клёво, но это работает в рамках текущего среза. Если ты ставишь версию новее чем в твоём репозитории - зависимости могут "поплыть".

Это всё клёво, но таки ставить зависимости лучше сначала с помощью apt-get build-dep gajim. Если всё нормально, то во-первых версия новее может скомпилироваться с зависимостями из текущего репозитория - тогда ничего дополнительно ни ставить ни бэкпортировать не придётся. А во-вторых, если она не скомпилируется, то хотя бы меньше придётся ставить и бэкпортировать.

Есть ещё такая вещь - atp-get source -b gajim, но это не бэкпортирование, а просто установка из исходников. Смысла в ней мало. Разве что скомпилировать пакет с более свежими установленными в системе зависимостями.

В целом по статье могу сказать, что это общеизвестный минимум.

MooSE 2010-01-25 09:13:40 (#)

Цитата:

Слово "можно" - лишнее?


Поправил. Спасибо.

Цитата:

В целом по статье могу сказать, что это общеизвестный минимум.


Не сомневаюсь. Вообще этот сайтик для меня скорее записная книжка, чтобы потом долго не искать.... :)

Anonymous 2011-02-17 02:14:33 (#)

>> Пересборка deb-пакета в Debian/Ubuntu

Сказано что пересборка, а разобрали только сборку в deb. Иногда бывает надо пересобрать (и изменить).

MooSE 2011-02-17 02:25:37 (#)

Цитата:

>> Пересборка deb-пакета в Debian/Ubuntu

Сказано что пересборка, а разобрали только сборку в deb. Иногда бывает надо пересобрать (и изменить).


По идее направление указано. Дальше при желании можно разобраться:)
Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE

прога для скачивания музыки с вк;Все инструменты для лучших компаний Тренинги по продажам присоединяйся к нам в Алматы!