Как создать бинарный пакет с помощью CheckInstall
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:
sudo apt-get install checkinstall
Удаляем Erlang:
sudo apt-get remove erlang
sudo apt-get autoremove
Тянем исходники:
git clone git://github.com/erlang/otp.git
cd otp
Тянем зависимости:
sudo apt-get install autoconf libncurses5-dev libwxgtk2.8-dev \
libgl1-mesa-dev libglu1-mesa-dev libpng3 g++ build-essential \
m4 libssh-dev unixodbc-dev libgmp3-dev fop xsltproc default-jdk
Собираем:
git checkout OTP_R15B03
export ERL_TOP=$PWD
export PATH=$ERL_TOP/bin:$PATH
./otp_build autoconf
./configure
make
Примечание: к моменту, когда вы будете читать эти строки, приведенная инструкция по сборке Erlang может устареть. Ознакомиться с инструкцией, поддерживаемой в актуальном состоянии, вы можете на гитхабе.
Создаем deb-пакет:
sudo checkinstall
Информацию о пакете заполняем примерно следующим образом:

Мне было лень указывать зависимости, но вы ведь не допустите столь грубой ошибки, не так ли?
Готово! Осталось только скопировать получившийся пакет в свой Dropbox, чтобы не потерялся. Этот deb-пакет можно использовать повторно, в том числе на другой машине с Debian Linux и аналогичной архитектурой процессора:
sudo dpkg -i erlang-alternative_20121018-1_i386.deb
dpkg -l | grep erlang-alternative
sudo apt-get remove erlang-alternative
А еще с помощью утилиты alien его можно конвертнуть, например, в RPM (права суперпользователя нужны для установки прав доступа к архивируемым файлам):
sudo alien --to-rpm erlang-alternative_20121018-1_i386.deb
Правда, у меня под рукой нет ни CentOS, ни RHEL, ни Fedora, чтобы проверить полученный RPM на работоспособность.
Дополнение: В продолжение темы – Создание GUI приложений с помощью wxErlang.