Создание DEB / RPM пакета из исходников или как использовать checkinstall

Очень часто нужные программы, которые удается найти на просторах Интернета, не имеют готовых DEB или RPM пакетов. В репозиториях дистрибутивов так же не всегда находится актуальная версия программы. Поэтому установка программы из исходного кода бывает единственным выходом.

Так как здесь рассматриваются пакетные дистрибутивы Linux, то собирать из исходников мы будем в DEB и RPM пакеты. Такие пакеты в последующем легко устанавливаются и удаляются в ОС.

Ниже приведен список команд, которые помогают создавать DEB и RPM пакеты из исходников. Еще ниже каждая команда будет более подробно расписана.

Создание DEB-пакетов из исходного кода:

sudo apt-get install checkinstall
cd директория_исходного_кода_программы
./configure
make
sudo checkinstall

Подробное описание каждого шага

Установка программы checkinstall

Установка пакета checkinstall не должна вызвать особых сложностей. В операционных системах, использующих DEB пакеты, установка производится командой:


sudo apt-get install checkinstall

В операционной системе, использующей RPM пакеты, установка пакета checkinstall выполняется командой:


sudo rpm -i checkinstall

Если такой пакет в Вашей ОС не обнаружен, то Вам следует посетить домашнюю страницу проекта и скачать требуемую версию для Вашего дистрибутива:


http://checkinstall.izto.org/download.php

Переход в директорию с исходным кодом программы

Переход в директорию с исходным кодом программы достаточно прост и также не должен вызвать никаких затруднений.


Хотелось бы напомнить об очень удобном инструменте командной строки Linux – клавише TAB. Кнопка TAB позволяет автоматически дописывать название длинных директорий и файлов. Требуется ввести лишь первые символы названия директории / файла и нажать клавишу TAB, которая автоматически допишет полное название.


Почти все исходники распространяются в архивах формата tar.gz. Для разархивирования архива набираем команду:


tar xvzf имя_архива.tar.gz

Прочитать дополнительную информацию по работе с любыми архивами можно здесь.

Конфигурируем исходники под свою ОС

Проще говоря, это процесс «настройки» исходного кода под конкретную ОС. В результате этого процесса создается файл с описанием конфигурации.
Конфигурирование исходников обычно осуществляется простой командой:


./configure

Эта команда не вносит никаких изменений в ОС и тем самым не сможет никак повредить ее.


Бывают случаи, когда авторы программ, добавляют дополнительные ключи установки. Просмотреть инструкцию по установке, написанную автором программы, можно командой:


./configure —help

или прочитать в файле readme или install

Этот этап самый трудоемкий, так как необходимо установить все дополнительные пакеты, от которых зависит исходный код компилируемой программы. Если в ходе выполнения этой команды на экране появилось сообщение об ошибке и процесс конфигурирования остановился, то это значит что какой-то зависимый пакет отсутствует в системе.


К примеру, при конфигурировании Pidgin возникла ошибка:


checking for GTKyes
checking for PANGOyes
checking for X11… yes
checking for GTKSPELLno
no
configure: error:
GtkSpell development headers not found.
Use —disable-gtkspell if you do not need it.

В приведенном листинге видно, что GTK, PANGA, X11 соответствуют требованиям компилируемого исходного кода (yes), а проверка GTKSPELL вывела значение no. Скорее всего в этом примере требуется установить libgtkspell-dev.


Из этого примера видно, что это дело не такое уж и сложное. Если в процессе конфигурирования не возникло ошибок, то процесс считается завершенным успешно.

Компилирование исходников

Компилирование исходного кода – процесс «автоматический» при условии успешного выполнения предыдущего пункта.


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

Создание DEB-пакета из исходного кода

Программа checkinstall создает и устанавливает пакет для Вашей ОС. Тип пакета (DEB или RPM) checkinstall определяет сам. Для жесткого указания типа создаваемого пакета используем команду checkinstall с ключами:



sudo checkinstall -R

sudo checkinstall -D

sudo checkinstall -S


Далее отвечаем на несколько вопросов. По умолчанию все ответы на задаваемые вопросы подходят в большинстве случаев, поэтому везде нажимаем Enter.


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

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен

Комментарии (13)

  • #

    не хочет выполняться пункт ./configure :( пишет ~/Загрузки/FileZilla3$ ./configure
    bash: ./configure: No such file or directory
    что делать? ( как видно пробовал скомпилировать filezilla…

  • #

    Meison: не хочет выполняться пункт ./configure :( пишет ~/Загрузки/FileZilla3$ ./configure bash: ./configure: No such file or directory что делать? ( как видно пробовал скомпилировать filezilla…

    Попробуйте переместить исходники в другое место. Возможно русские буквы всему виной

  • #

    Mut@NT: Meison: не хочет выполняться пункт ./configure :( пишет ~/Загрузки/FileZilla3$ ./configure bash: ./configure: No such file or directory что делать? ( как видно пробовал скомпилировать filezilla…

    Попробуйте переместить исходники в другое место. Возможно русские буквы всему виной

    А может просто нужно перейти в верный каталог? Вряд ли в корне есть каталог “Загрузки”, скорее всего путь должен быть /home/USERNAME/Загрузки…

  • #

    Сергей Луконин: А может просто нужно перейти в верный каталог? Вряд ли в корне есть каталог “Загрузки”, скорее всего путь должен быть /home/USERNAME/Загрузки…

    Значек ~ (называется тильда) заменяет написание /home/USERNAME/
    К примеру: cd ~/Desktop – переход в директорию Desktop текущего пользователя.

  • Роман
    #

    Подскажите, пожалуйста, что я упустил или сделал не так?
    1. Скачал архив firefox.tar.bz2 и распаковал при помощи File Roller
    2. Установил checkinstall
    3. Попытался конфигурировать:
    user@user-desktop:~$ cd /home/user/firefox
    user@user-desktop:~/firefox$ ./configure
    bash: ./configure: Нет такого файла или каталога

  • #

    Роман: Подскажите, пожалуйста, что я упустил или сделал не так? 1. Скачал архив firefox.tar.bz2 и распаковал при помощи File Roller 2. Установил checkinstall 3. Попытался конфигурировать: user@user-desktop:$ cd /home/user/firefox user@user-desktop:/firefox$ ./configure bash: ./configure: Нет такого файла или каталога

    Прочитайте в самой директории firefox файл readme. Обычно там пишут как откомпилировать, просто возможно там у Вас скрипт автоматической установки без компилирования или еще что.

    P.S. А если не секрет, зачем вам компилировать Firefox, он же есть в репозиториях или для эксперимента просто?

  • Аноним
    #

    Вы или очень умный веб-мастер или я копи-пастер очень тупой. Никак не получается стыбзеть у вас статейку. Хочу полностью скопировать, но не получается…
    ps: спасибо за ценную инфу:)

  • Mut@NT
    #

    Аноним: Вы или очень умный веб-мастер или я копи-пастер очень тупой. Никак не получается стыбзеть у вас статейку. Хочу полностью скопировать, но не получается…
    ps: спасибо за ценную инфу:)

    Да вроде дополнительно ничего к этому не предпринимал. :) Я не против, если будет в ответ стоять активная ссылка на авторство

  • san4o
    #

    ./configure: Нет такого файла или каталога

    на подобные вопросы искать нада в файле ридми, в каталоге с исходником ибо в каждом отдельном случае варианты установки хоть и немного, но могут отличатся, либо по другому скрипт называтся который и проверит зависимости и установит и тп.
    Главное суть понят, собирать пакет после успешной компиляции исходников …

  • Лёха
    #

    такая же фигня с ./configure, хотел собрать nestopia на убунту не получается( тоже пишет нет такого файла или каталога,я был бы не такой злой если б начал писать, что там библиотеки нет какой-нибудь или пакет надо еще установить, а тут нет файла или каталога, ппц

  • Николай
    #

    root@debian:/home/nick/wine-1.7.3# sudo checkinstall -D

    checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran Эта программа распространяется на условиях GNU GPL

    The package documentation directory ./doc-pak does not exist.
    Should I create a default set of package docs? [y]:

    Готовится документация к пакету…OK

    Пожалуйста напишите описание пакета.
    Закончите ваше описание пустой строкой или EOF.

    вот тут я застрял…..подскажите пожалуйста

  • Николай
    #

    вот что пишет
    ========================= Результаты установки ===========================
    make: *** Нет правила для сборки цели `install’. Останов.

    **** Установка неудачна. Отменяется создание пакета.

    Очищается…OK

    Удачи.

  • Пользователь
    #

    tar.bz2 нужно распаковать командой следующего вида
    Команда для распаковки архива tar.bz2 в заранее определенную деректорию
    на примере браузера Firefox_ESR
    # cd /opt && tar xjvf /home/balkan/Загрузки/firefox.tar.bz2 , где /opt – куда /home/balkan/Загрузки/ – откуда

    Ничего компилировать не надо!!! Это как портативный софт в windows

    Создание .desktop (ярлык, иконка)
    1. # touch /usr/share/applications/Firefox ESR.desktop
    2. # nano /usr/share/applications/Firefox ESR.desktop
    3.
    Firefox
    [Desktop Entry]
    Name=Firefox_ESR
    GenerickName=Web Browser
    Exec=/opt/firefox/firefox %U
    Icon=/opt/firefox/browser/chrome/icons/default/default32.png
    Terminal=false
    Type=Application
    Startup=true
    Categories=Network; Web Browser;