Очень часто у пользователей Debian, Ubuntu и других основанных на Debian дистрибутивов возникает необходимость пересобрать .deb-пакет какой-то программы из исходных текстов. Ниже будет показано как это можно сделать.
Немного конкретизируем задачу: автор этих строк использует дистрибутив Ubuntu Karmic (9.10), в репозитории которого есть Jabber-клиент Gajim версии 0.12.5, однако появилось желание использовать Gajim версии 0.13. Готового пакета для Karmic найдено не было, однако для Ubuntu Lucid (10.04) Alpha этот пакет уже был. Соответственно напрашивалось два варианта решения поставленной задачи:
- Подключить репозиторий Lucid, поставить Gajim из него, отключить репозиторий Lucid.
- Бэкпортировать (перенести пакет из более новой версии дистриубтива в более старую) пакет из 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
Теперь можно пользоваться более новой версией любимой программы:) Остальные программы и библиотеки бэкпортируются аналогичным образом.
На этом всё. Приятной работы!
Anonymous 2010-01-24 18:04:56 (#)
Зачем? Есть штатные средства - apt-get build-dep gajim