gruphepsi.us - Репозиторий 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 как сделать deb пакет 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 <konstantin@konstantin-desktop> 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 <konstantin@konstantin-desktop>
    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
    и пользуемся программой.

Нужно ли продолжение?

Источник: https://habrahabr.ru/post/40183/



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Руководство по сборке и бэкпортированию deb пакетов Конкурс игрушка года

Как сделать deb пакет HOWTO Сборка ПО и создание.deb-пакетов из исходников в
Как сделать deb пакет Простейший способ собрать свой deb-пакет с данными
Как сделать deb пакет Создаем.deb пакет и репозиторий для Cydia на Windows OS - iG
Как сделать deb пакет Python - Как создать deb пакет? - Stack Overflow на русском
Как сделать deb пакет Собрать deb пакет из git репозитория Admin Форум
Как сделать deb пакет Правильная сборка deb-пакета General Форум
Как сделать deb пакет Собираем deb-пакет. Часть 1 / Хабрахабр
Как сделать deb пакет Сборка deb пакетов Development Форум
Глава 15. Создание пакета Debian GitHub - unxed/far2l-deb:.deb package for far2l DebianRussian/deb-inside - Debian Wiki 9 способов получить великолепный загар без помощи солнца Болит лицо: левая сторона, правая сторона, часть лица Втирка для ногтей. Как использовать, наносить, как делать Губы, как у Мэрилин, кошачьи глазки, как у Одри и другие советы