Создание DEB / RPM пакета из исходников или как использовать checkinstall
Очень часто нужные программы, которые удается найти на просторах Интернета, не имеют готовых DEB или RPM пакетов. В репозиториях дистрибутивов так же не всегда находится актуальная версия программы. Поэтому установка программы из исходного кода бывает единственным выходом.
Так как здесь рассматриваются пакетные дистрибутивы Linux, то собирать из исходников мы будем в DEB и RPM пакеты. Такие пакеты в последующем легко устанавливаются и удаляются в ОС.
Ниже приведен список команд, которые помогают создавать DEB и RPM пакеты из исходников. Еще ниже каждая команда будет более подробно расписана.
Создание DEB-пакетов из исходного кода:
Подробное описание каждого шага
Установка программы checkinstall
Установка пакета checkinstall не должна вызвать особых сложностей. В операционных системах, использующих DEB пакеты, установка производится командой:
В операционной системе, использующей RPM пакеты, установка пакета checkinstall выполняется командой:
Если такой пакет в Вашей ОС не обнаружен, то Вам следует посетить домашнюю страницу проекта и скачать требуемую версию для Вашего дистрибутива:
http://checkinstall.izto.org/download.php
Переход в директорию с исходным кодом программы
Переход в директорию с исходным кодом программы достаточно прост и также не должен вызвать никаких затруднений.
Хотелось бы напомнить об очень удобном инструменте командной строки Linux – клавише TAB. Кнопка TAB позволяет автоматически дописывать название длинных директорий и файлов. Требуется ввести лишь первые символы названия директории / файла и нажать клавишу TAB, которая автоматически допишет полное название.
Почти все исходники распространяются в архивах формата tar.gz. Для разархивирования архива набираем команду:
Прочитать дополнительную информацию по работе с любыми архивами можно здесь.
Конфигурируем исходники под свою ОС
Проще говоря, это процесс «настройки» исходного кода под конкретную ОС. В результате этого процесса создается файл с описанием конфигурации.
Конфигурирование исходников обычно осуществляется простой командой:
Эта команда не вносит никаких изменений в ОС и тем самым не сможет никак повредить ее.
Бывают случаи, когда авторы программ, добавляют дополнительные ключи установки. Просмотреть инструкцию по установке, написанную автором программы, можно командой:
или прочитать в файле readme или install
Этот этап самый трудоемкий, так как необходимо установить все дополнительные пакеты, от которых зависит исходный код компилируемой программы. Если в ходе выполнения этой команды на экране появилось сообщение об ошибке и процесс конфигурирования остановился, то это значит что какой-то зависимый пакет отсутствует в системе.
К примеру, при конфигурировании Pidgin возникла ошибка:
checking for PANGO… yes
checking for X11… yes
checking for GTKSPELL… no
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 с ключами:
Далее отвечаем на несколько вопросов. По умолчанию все ответы на задаваемые вопросы подходят в большинстве случаев, поэтому везде нажимаем Enter.
В результате всех вышеописанных действий создается пакет требуемого формата в этой же директории.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
Вдохновлен
не хочет выполняться пункт ./configure :( пишет ~/Загрузки/FileZilla3$ ./configure
bash: ./configure: No such file or directory
что делать? ( как видно пробовал скомпилировать filezilla…
Попробуйте переместить исходники в другое место. Возможно русские буквы всему виной
А может просто нужно перейти в верный каталог? Вряд ли в корне есть каталог “Загрузки”, скорее всего путь должен быть /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: Нет такого файла или каталога
Прочитайте в самой директории firefox файл readme. Обычно там пишут как откомпилировать, просто возможно там у Вас скрипт автоматической установки без компилирования или еще что.
P.S. А если не секрет, зачем вам компилировать Firefox, он же есть в репозиториях или для эксперимента просто?
Вы или очень умный веб-мастер или я копи-пастер очень тупой. Никак не получается стыбзеть у вас статейку. Хочу полностью скопировать, но не получается…
ps: спасибо за ценную инфу:)
Да вроде дополнительно ничего к этому не предпринимал. :) Я не против, если будет в ответ стоять активная ссылка на авторство
./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;