Поиск   

Собираем deb-пакет

Собираем deb-пакет.


В репозитариях Ubuntu собрано огромное количество программ и библиотек. На сайтах самих программ достаточно часто встречаются deb-пакеты, которые можно скачать и установить. Однако все же бывает ситуация, когда нужного ПО нет в репозитариях или на сайте нельзя скачать пакет для Ubuntu, или, наконец, в репозитарии есть старая версия, но она вас не устраивает тем, что в ней присутствует досадный баг или нет нужной функциональности.

Не спешите качать исходники и делать ./configure && make && make install. Это приведет к тому что у вас возникнет каша из библиотек и софта, установленного вручную и через apt, управляться с которой станет очень тяжело. Гораздо лучше потратить побольше времени и приготовить deb-пакет, который уже потом установить используя apt. Преимущества же apt над ручной установкой очевидны.

Допустим мы находимся в ситуации, когда в следующей версии Ubuntu или Debian есть необходимая нам программа, а в текущей версии в репозитории ее нет.

Например, у меня на рабочем компьютере установлена Ubuntu 7.10 Gutsy и мне хочется установить программу Guake. В репозиториях Gutsy ее нет. На сайте deb-пакета под мою версию Ubuntu нет, потому придется делать его самому.

Отправляемся на сайт packages.ubuntu.com и ищем на нем guake в репозитариях для всех версий Ubuntu; обнаруживаю пакет для Ubuntu 8.10. Чем больше различие в версиях убунты, тем больше вероятность получения неожиданных проблем при бэкпортировании. Но что же, попробуем, судя по зависимостям проблем не должно быть слишком много.

Для бэкпортирования или сборки из исходников нам понадобятся определенные утилиты. Перед началом работы установим минимальный набор, который будет необходим для этого. Это пакеты debhelper, dh-make, devscripts, fakeroot, build-essential, automake, gnupg, lintia. Отмечу что для пакетирования конкретного софта будут требоваться дополнительные комплияторы, dev-версии библиотек, которые видимо лучше устанавливать когда они понадобятся.

После установки софта мы готовы к бэкпортированию guake.

1. Подготовим директорию в которой будем работать:

konstantin@konstantin-desktop:~$ mkdir -p /tmp/dev/deb/guake
konstantin@konstantin-desktop:~$ cd !!:2
cd /tmp/dev/deb/guake
konstantin@konstantin-desktop:/tmp/dev/deb/guake$


2. Заходим на страницу пакета и в колонке справа находим ссылку на dsc-файл (guake_0.3.1-3.dsc). Качаем исходные коды пакета при помощи dget:

dget archive.ubuntu.com/ubuntu/pool/universe/g/guake/guake_0.3.1-3.dsc


3. В результате у нас скачаны 3 файла с исходными кодами. Распаковываем командой

konstantin@konstantin-desktop:/tmp/dev/guake$ dpkg-source -x guake_0.3.1-5.dsc
gpg: Подпись создана Пнд 01 Сен 2008 08:07:22 VLAST ключом DSA с ID DD899610
gpg: Не могу проверить подпись: открытый ключ не найден
dpkg-source: extracting guake in guake-0.3.1
dpkg-source: unpacking guake_0.3.1.orig.tar.gz
dpkg-source: applying ./guake_0.3.1-5.diff.gz



4. Перейдем в новый каталог

konstantin@konstantin-desktop:/tmp/dev/guake$ cd guake-0.3.1/


5. Выполняем dhc -i

konstantin@konstantin-desktop:/tmp/dev/guake/guake-0.3.1$ dch -i


6. В результате откроется редактор на файле guake-0.3.1/debian/changelog. Там уже будет вставлен необходимый шаблонный текст. останется лишь напротив звёздочки вписать что-нибудь вроде

Backported from Interpid

guake (0.3.1-5ubuntu1) gutsy; urgency=low


* Backported from Interpid

— Konstantin Mikhaylov Thu, 18 Sep 2008 15:07:30 +1100


7. Начинаем процедуру сборки пакета

konstantin@konstantin-desktop:/tmp/dev/guake/guake-0.3.1$dpkg-buildpackage -rfakeroot



Скорее всего собрать пакет сходу не удастся из-за отсутствия некоторых библиотек. У меня так и вышло:

konstantin@konstantin-desktop:/tmp/dev/guake/guake-0.3.1$ dpkg-buildpackage -rfakeroot
dpkg-buildpackage: source package is guake
dpkg-buildpackage: source version is 0.3.1-5ubuntu1
dpkg-buildpackage: source changed by Konstantin Mikhaylov
dpkg-buildpackage: host architecture i386
dpkg-buildpackage: source version without epoch 0.3.1-5ubuntu1
dpkg-checkbuilddeps: Unmet build dependencies: autoconf libgtk2.0-dev intltool python-gtk2-dev
dpkg-buildpackage: Build dependencies/conflicts unsatisfied; aborting.
dpkg-buildpackage: (Use -d flag to override.)


Видим, что для сборки требуются autoconf, libgtk2.0-dev, intltool, python-gtk2-dev (после завершения мы можем их удалить, дабы не засорять систему). Устанавливаем их через apt и снова пытаемся собрать пакет. Если все пакеты необходимые для сборки успешно установлены, то начнется сборка пакета, в том числе выполнится configure, обработается make-файл и собственно скомпилируется сама программа.

8. Смотрим что получилось

konstantin@konstantin-desktop:/tmp/dev/guake/guake-0.3.1$ cd…
konstantin@konstantin-desktop:/tmp/dev/guake$ ls -l
итого 702
drwxr-xr-x 7 konstantin konstantin 984 2008-09-18 15:13 guake-0.3.1
-rw-r--r-- 1 konstantin konstantin 2584 2008-09-18 15:04 guake_0.3.1-5.diff.gz
-rw-r--r-- 1 konstantin konstantin 1320 2008-09-18 15:03 guake_0.3.1-5.dsc
-rw-r--r-- 1 konstantin konstantin 2658 2008-09-18 15:12 guake_0.3.1-5ubuntu1.diff.gz
-rw-r--r-- 1 konstantin konstantin 552 2008-09-18 15:12 guake_0.3.1-5ubuntu1.dsc
-rw-r--r-- 1 konstantin konstantin 697 2008-09-18 15:13 guake_0.3.1-5ubuntu1_i386.changes
-rw-r--r-- 1 konstantin konstantin 212372 2008-09-18 15:13 guake_0.3.1-5ubuntu1_i386.deb
-rw-r--r-- 1 konstantin konstantin 481572 2008-09-18 15:04 guake_0.3.1.orig.tar.gz


9. Устанавливаем полученный пакет

konstantin@konstantin-desktop:/tmp/dev/guake$ sudo dpkg -i guake_0.3.1-5ubuntu1_i386.deb


и пользуемся программой.

  • Понравилось? Так читай первым!
    • Google Reader or Homepage
    • Читать в Яндекс.Ленте
18 сентября 2008 смотрели: 189 рейтинг Donat   комментарии: 0 Статьи
Система Orphus

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.


Добавление комментария

Уведомлять о новых комментариях на Email?



Чтобы мы знали, что вы не робот—введите пожалуйста цифры или буквы с изображения.

Включите эту картинку для отображения кода безопасности
обновить код



 



| © Kamenki 2008 | design by студия Константина Сорокина | Отредактировал и дополнил Donat | Обратная связь |

Популярное

Теги

Требуется для просмотраFlash Player 9 или выше.

Опрос

Вы используете twitter?
Да
Нет
Чаво

Ссылки

Глобальный каталог сайтов

ТОП Рейтинг


Rambler's Top100

Рейтинг@Mail.ru

количество читателей онлайн и всего