Как создать бинарный пакет с помощью CheckInstall
22 октября 2012
CheckInstall — это удобная утилита, позволяющая создавать бинарные пакеты для Linux из исходного кода приложения. Ее мне посоветовал Денис Федосеев в комментариях к посту про установку Rakudo Star. Спасибо, Денис! В этой заметке совместными усилиями мы создадим с помощью CheckInstall deb-пакет Erlang’а.
Вы спросите, зачем мне понадобилось создавать собственный deb-пакет, когда можно просто сказать sudo apt-get install erlang
? Оказывается, эта команда устанавливает неправильный Erlang, из которого выпилены биндинги к wxWidgets. И, кто знает, быть может в нем не хватает еще чего-то хорошего и полезного. Создать из исходников бинарный пакет вместо того, чтобы просто установить приложение, собрав его из исходников, мудро, потому что в этом случае программу можно с легкостью удалить, воспользовавшись менеджером пакетов.
CheckInstall работает следующим образом. Вы собираете приложение, как делаете это обычно, но последней командой вместо make install говорите checkinstall. Программа отслеживает все изменения в системе, производимые во время установки, и создает бинарный пакет, производящий соответствующие изменения. Само собой разумеется, CheckInstall позволяет указать номер версии пакета, зависимости и тп. Поддерживаются бинарные пакеты Debian, Red Hat и Slackware.
Приступим. Устанавливаем CheckInstall:
Удаляем Erlang:
sudo apt-get autoremove
Тянем исходники:
cd otp
Тянем зависимости:
libgl1-mesa-dev libglu1-mesa-dev libpng3 g++ build-essential \
m4 libssh-dev unixodbc-dev libgmp3-dev fop xsltproc default-jdk
Собираем:
export ERL_TOP=$PWD
export PATH=$ERL_TOP/bin:$PATH
./otp_build autoconf
./configure
make
Примечание: к моменту, когда вы будете читать эти строки, приведенная инструкция по сборке Erlang может устареть. Ознакомиться с инструкцией, поддерживаемой в актуальном состоянии, вы можете на гитхабе.
Создаем deb-пакет:
Информацию о пакете заполняем примерно следующим образом:
Мне было лень указывать зависимости, но вы ведь не допустите столь грубой ошибки, не так ли?
Готово! Осталось только скопировать получившийся пакет в свой Dropbox, чтобы не потерялся. Этот deb-пакет можно использовать повторно, в том числе на другой машине с Debian Linux и аналогичной архитектурой процессора:
dpkg -l | grep erlang-alternative
sudo apt-get remove erlang-alternative
А еще с помощью утилиты alien его можно конвертнуть, например, в RPM (права суперпользователя нужны для установки прав доступа к архивируемым файлам):
Правда, у меня под рукой нет ни CentOS, ни RHEL, ни Fedora, чтобы проверить полученный RPM на работоспособность.
Дополнение: В продолжение темы — Создание GUI приложений с помощью wxErlang.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.