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

Информацию о пакете заполняем примерно следующим образом:

Создание deb-пакета с помощью 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 .

EnglishRussianUkrainian