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

Ниже приведен список команд, которые помогают создавать 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…

  • Mut@NT

    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/Загрузки…

  • Mut@NT

    Сергей Луконин: А может просто нужно перейти в верный каталог? Вряд ли в корне есть каталог “Загрузки”, скорее всего путь должен быть /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: Нет такого файла или каталога

  • Mut@NT

    Роман: Подскажите, пожалуйста, что я упустил или сделал не так? 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;