Иногда получается что нет нужной программы в репозитории, или на сайте производителя нет сборки под ваш дистрибутив, но позарез нужен именно пакет данной версии, обычно так происходит с новыми релизами. Почему нет их репозиториях описывать не вижу смысла.
Тема собственно родилась по просьбе одного хорошего человека, который попросил вынести в отдельный топик. Буду собирать для примера geany на голом только что установленном дистрибутиве Debian squeeze с Gnome на борту. «Почему geany? Он же есть в репозитории.» — спросите вы. Просто это первая программа которую собрал в linux, так сказать ностальгия.
Readme
Так к чему я это? К тому что обычно пишется «как собрать» в файле Readme или Install, прежде чем делать что-то посмотрите в этот файл, наверняка там написан не только процесс установки, но и зависимости которые нужны для пакета.
Обычно все сводится к выполнению
$ ./configure
$ make
# make install
или
$ ./configure
$ make
# checkinstall -[D][R][S]
Скачиваем geany
Можно скачать по ссылке, а можно воспользоваться консольной утилитой wget, если вы не выполняли команду «cd» до этого, то скачается в ваш корневой каталог пользователя /home/user.
$ wget -c http://download.geany.org/geany-0.20.tar.bz2
Распаковываем
Можно распаковать как угодно, и каким угодно «архиватором», предлагаю сделать это так
Для tar.bz2
$ tar -xvjf geany*.tar.bz2
Для tar.bz
$ tar -xvfz geany*.tar.bz
Переходим в распакованную директорию
$ cd geany*
Установка необходимых пакетов для сборки
В дальнейшем ставить уже не надо будет
# apt-get update && apt-get install build-essential -y
Сборка классическим make, make install
Конфигурация
Не буду описывать различные префиксы, их можно посмотреть в help, но если вы собираете впервые, то оно вам не нужно.
./configure --help. В большинстве случаев достаточно ./configure без префиксов.
Можно установить все сразу, но буду показывать процесс конфигурации т. к. не всегда очевидны все необходимые пакеты. Этот процесс может занять достаточно много времени, к этому надо быть готовым. Не всегда можно скомпилировать программу под любой дистрибутив т.к. можно упереться в цепь неразрешенных зависимостей, а иногда приходится их тоже собирать.
Выполняем
$ ./configure
На данном этапе мы получили сообщение
Гуглим «ошибку» или ищем сразу в репозитории. Тут нужно поставить девелоперский пакет libgtk.
Выполняем поиск и смотрим список
$ apt-cache search gtk 2.0
Устанавливаем
# apt-get install libgtk2.0-dev -y
Теперь повторяем опять
$ ./configure
В итоге получили сообщение что все гуд, если нет, устанавливаем дальше необходимые пакеты по такому же принципу.
Сборка и установка
Переходим непосредственно к самой сборке, выполнив для компиляции
$ make
Получили примерно вот такой лог
Если с ошибкой, значит гуглим ошибку, потом повторяем. Но на этом этапе ошибки возможны как правило только с еще сильно нестабильным софтом, тут скорей всего помочь может только багрепорт разработчику.
Если все хорошо, теперь можно выполнить от root, или с префиксом sudo
# make install
или
$ sudo make install
Смотрим наш только что установленный редактор
На этом все. Архив tar.gz2 и каталог geany который был извлечен из архива можно удалить, выполнив последовательно
Перейти в корень /home/user
$ cd
Удалить geany-0.20.tar.bz2
$ rm -rf geany-0.20.tar.bz2
Удалить geany-0.20
$ rm -rf geany-0.20
Сборка пакетов для установки при помощи пакетного менеджера
Говорят что после классической установки возможны проблемы с удалением программы. Не знаю, с этим не сталкивался все без проблем удалялось, но не утверждаю что это не имеет место быть.
Для решения этих проблем есть утилита checkinstall которая сначала создает пакет .deb, .rpm, а потом его уже устанавливает. После сборки пакета при помощи checkinstall не желательно давать его кому-то еще, эта утилита сделана исключительно для удобства работы на отдельно взятом компьютере.
Выполняем все то же, что и в классическом варианте, но с некоторыми изменениями.
Сheckinstall
Ставим сначала пакет checkinstall для сборки
# apt-get install checkinstall -y
Конфигурация
Конфигурируем, устанавливая необходимые пакеты как было выше.
$ ./configure
Собираем пакет и устанавливаем
Выполняем
$ make
Теперь вместо make install выполняем checkinstall, конечно тоже от root или с префиксом sudo.
Для .deb
# checkinstall -D
Для .rpm
# checkinstall -R
Для TGZ(Slackware)
# checkinstall -S
Далее нас попросят ответить на несколько вопросов
1. Enter
2. Enter
3. Заполняем, уточню, это не обязательные поля, можно смело пропустить, если пакет больше использоваться не будет.
- [0] Maintainer — пишем ваш email
- [10] Requires — Зависимости пакета, тут нужно указать не девелоперские пакеты (!-dev), в нашем случае это libgtk2.0 для любой другой программы этот список может быть достаточно большим.
4. Если решили что все в порядке, продолжаем нажав «Enter». Новый созданный пакет будет лежать в этой же директории, в нашем случае ~/geany-0.20, а так же установлен в системе.
NOTE: Для checkinstall мне пришлось поставить еще apt-build т.к. его не было в системе.
FAQ по checkinstall
На этом все, спасибо за внимание.
* кросспостинг с блога