Очень часто у пользователей Debian, Ubuntu и других основанных на Debian дистрибутивов возникает необходимость пересобрать .deb-пакет какой-то программы из исходных текстов. Ниже будет показано как это можно сделать. Немного конкретизируем задачу: автор этих строк использует дистрибутив Ubuntu Karmic (9.10), в репозитории которого есть Jabber-клиент Gajim версии 0.12.5, однако появилось желание использовать Gajim версии 0.13. Готового пакета для Karmic найдено не было, однако для Ubuntu Lucid (10.04) Alpha этот пакет уже был. Соответственно напрашивалось два варианта решения поставленной задачи:
Автор решил использовать второй способ. Приступаем к решению этой задачи. Для начала нужно зайти на страницу пакета на http://packages.ubuntu.com и скачать архивы с исходными текстами. Для Gajim это страница http://packages.ubuntu.com/gajim а архивы (на момент написания статьи):
Скачав эти файлы установим инструменты, необходимые для пересборки пакетов: 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 Теперь можно пользоваться более новой версией любимой программы:) Остальные программы и библиотеки бэкпортируются аналогичным образом. На этом всё. Приятной работы! |
Анонимный посетитель 2010-01-24 18:04:56 (*)
> Если будет выдано сообщение о не хватке каких-то пакетов — их нужно установить.
Зачем? Есть штатные средства - apt-get build-dep gajim
> Если будет выдано сообщение о не хватке каких-то пакетов — их нужно установить.
Зачем? Есть штатные средства - apt-get build-dep gajim
Цитата: Зачем? Есть штатные средства - apt-get build-dep gajim |
Это всё клёво, но это работает в рамках текущего среза. Если ты ставишь версию новее чем в твоём репозитории - зависимости могут "поплыть".
morbo 2010-01-25 07:05:46 (*)
>После успешной установки можно зависимостей запустим сборку командой:
Слово "можно" - лишнее?
>Это всё клёво, но это работает в рамках текущего среза. Если ты ставишь версию новее чем в твоём репозитории - зависимости могут "поплыть".
Это всё клёво, но таки ставить зависимости лучше сначала с помощью apt-get build-dep gajim. Если всё нормально, то во-первых версия новее может скомпилироваться с зависимостями из текущего репозитория - тогда ничего дополнительно ни ставить ни бэкпортировать не придётся. А во-вторых, если она не скомпилируется, то хотя бы меньше придётся ставить и бэкпортировать.
Есть ещё такая вещь - atp-get source -b gajim, но это не бэкпортирование, а просто установка из исходников. Смысла в ней мало. Разве что скомпилировать пакет с более свежими установленными в системе зависимостями.
В целом по статье могу сказать, что это общеизвестный минимум.
>После успешной установки можно зависимостей запустим сборку командой:
Слово "можно" - лишнее?
>Это всё клёво, но это работает в рамках текущего среза. Если ты ставишь версию новее чем в твоём репозитории - зависимости могут "поплыть".
Это всё клёво, но таки ставить зависимости лучше сначала с помощью apt-get build-dep gajim. Если всё нормально, то во-первых версия новее может скомпилироваться с зависимостями из текущего репозитория - тогда ничего дополнительно ни ставить ни бэкпортировать не придётся. А во-вторых, если она не скомпилируется, то хотя бы меньше придётся ставить и бэкпортировать.
Есть ещё такая вещь - atp-get source -b gajim, но это не бэкпортирование, а просто установка из исходников. Смысла в ней мало. Разве что скомпилировать пакет с более свежими установленными в системе зависимостями.
В целом по статье могу сказать, что это общеизвестный минимум.
MooSE 2010-01-25 09:13:40 (*)
Цитата: Слово "можно" - лишнее? |
Поправил. Спасибо.
Цитата: В целом по статье могу сказать, что это общеизвестный минимум. |
Не сомневаюсь. Вообще этот сайтик для меня скорее записная книжка, чтобы потом долго не искать.... :)
Комментариев нет:
Отправить комментарий