Как создать бинарный пакет с помощью 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:

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 на работоспособность. Есть ли среди читателей добрые люди с соответствующими дистрибутивами Linux? :)

Если есть кто-нибудь, кто знает другие интересные вещи про работу с бинарными пакетами, вы тоже не молчите!

Дополнение: В продолжение темы — Создание GUI приложений с помощью wxErlang.

Метки: , .

Подпишись через RSS, E-Mail, Google+, Facebook, Vk или Twitter!

Понравился пост? Поделись с другими: