• 87492
  • 41
  • 4
Нравится блог?
Подписывайтесь!

Сборка или компиляция программ из исходников в linux

Иногда получается что нет нужной программы в репозитории, или на сайте производителя нет сборки под ваш дистрибутив, но позарез нужен именно пакет данной версии, обычно так происходит с новыми релизами. Почему нет их репозиториях описывать не вижу смысла.

Тема собственно родилась по просьбе одного хорошего человека, который попросил вынести в отдельный топик. Буду собирать для примера 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
   

На данном этапе мы получили сообщение

configure

Гуглим «ошибку» или ищем сразу в репозитории. Тут нужно поставить девелоперский пакет libgtk.

Выполняем поиск и смотрим список

 
$ apt-cache search gtk 2.0
 

Устанавливаем

 
# apt-get install libgtk2.0-dev -y
 

Теперь повторяем опять

 
$ ./configure
 

В итоге получили сообщение что все гуд, если нет, устанавливаем дальше необходимые пакеты по такому же принципу.

configure

Сборка и установка

Переходим непосредственно к самой сборке, выполнив для компиляции

 
$ make
   

Получили примерно вот такой лог

 

make

Если с ошибкой, значит гуглим ошибку, потом повторяем. Но на этом этапе ошибки возможны как правило только с еще сильно нестабильным софтом, тут скорей всего помочь может только багрепорт разработчику.

Если все хорошо, теперь можно выполнить от root, или с префиксом sudo

 
# make install
   

или

 
$ sudo make install
 

Смотрим наш только что установленный редактор

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 для любой другой программы этот список может быть достаточно большим.
    checkinstall

4. Если решили что все в порядке, продолжаем нажав «Enter». Новый созданный пакет будет лежать в этой же директории, в нашем случае ~/geany-0.20, а так же установлен в системе.

NOTE: Для checkinstall мне пришлось поставить еще apt-build т.к. его не было в системе.
FAQ по checkinstall

На этом все, спасибо за внимание.

* кросспостинг с блога

Виктор Макенский makenskiy
Решение принято, процесс запущен |========================== >
27 апреля 2011, 19:11
1079

Загрузка...

Комментарии

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Японец о Казахстане: «Ваши девушки уж сильно себе набивают цену...»

Японец о Казахстане: «Ваши девушки уж сильно себе набивают цену...»

"Мужчины должны у вас тут права качать, ибо их процент в вашей численности населения уступает проценту женщин". Я машинально начала уверять, что у нас в стране таковых не имеется...
Sapientia
5 дек. 2016 / 10:52
  • 7794
  • 65
Мысли вслух. Почему казахи перестали общаться с родственниками и ходить в гости?

Мысли вслух. Почему казахи перестали общаться с родственниками и ходить в гости?

Дастархан в те времена был скромен. Не было понятия «сынау» - осуждения кто как живет, какой в доме ремонт и т.д. Пока взрослые обсуждали задержку заработной платы, мы играли в армию, жмурки, строили городки...
socium_kzo
5 дек. 2016 / 15:19
  • 7275
  • 17
Взгляд со стороны: Назарбаев глазами кыргыза

Взгляд со стороны: Назарбаев глазами кыргыза

В чем уникальность этой личности? В чем его успех или провалы? Эти вопросы требуют глубокой аналитики и исследований. Я же хочу рассказать о Нурсултане Абишевиче глазами рядового кыргыза...
maxes
1 дек. 2016 / 8:05
  • 5825
  • 20
Молчание врачей. Дети ЮКО, заражённые ВИЧ 10-11 лет назад, узнают о диагнозе-приговоре

Молчание врачей. Дети ЮКО, заражённые ВИЧ 10-11 лет назад, узнают о диагнозе-приговоре

Как сообщают новостные издания, в ближайшее время в Южном Казахстане 102 детям в возрасте 11-12 лет сообщат об их страшном диагнозе. Все эти дети были заражены ВИЧ, причём большинство было инфицировано по вине врачей.
openqazaqstan
2 дек. 2016 / 13:57
  • 4343
  • 4
Почему Дональд Трамп назвал Казахстан чудом. Президент подтягивается по географии

Почему Дональд Трамп назвал Казахстан чудом. Президент подтягивается по географии

Трамп и не подозревает, что 16 декабря 1991 Казахстан не создал, а восстановил свою национальную государственность. Иначе бы он упомянул не только 25 лет, а больше чем 550 лет казахской истории.
Stehlikova
2 дек. 2016 / 9:02
  • 4910
  • 88
Мой личный опыт использования Astra Plat: мелочи в моем кармане заметно стало меньше

Мой личный опыт использования Astra Plat: мелочи в моем кармане заметно стало меньше

Давно ждал запуска электронного билетирования в общественном транспорте Астаны. В ноябре 2016 года этот день настал. Мой опыт насчитывает последние 2 недели и мне есть чем поделиться.
iamYerlan
1 дек. 2016 / 15:24
  • 3392
  • 15
10 причин, по которым я не смогла работать учителем. Не только в зарплате дело, ребята

10 причин, по которым я не смогла работать учителем. Не только в зарплате дело, ребята

Я почти год проработала в школе, и когда уходила оттуда, была самым счастливым человеком в мире. Тот год, честно говоря, я и сейчас вспоминаю с ужасом.
demonica
вчера / 17:21
  • 3420
  • 51
После крупной пьяной аварии бизнесмены в Чечне отказались торговать спиртным. В Казахстане едва ли такое возможно

После крупной пьяной аварии бизнесмены в Чечне отказались торговать спиртным. В Казахстане едва ли такое возможно

После тяжкого ДТП по вине пьяного водителя в Чечне закрылись все магазины, торгующие алкоголем. Их владельцы – 14 бизнесменов – добровольно отказались от выданных им лицензий.
openqazaqstan
5 дек. 2016 / 13:09
Как отдохнуть за 220$. Гоа – это не Индия: купил дешевую путевку и улетел!

Как отдохнуть за 220$. Гоа – это не Индия: купил дешевую путевку и улетел!

В Гоа я не первый раз. Очень многое знаю. Минус такой путевки только в том, что вы не сможете выбрать пляж и отель, но за такие смешные деньги – какая разница. Гоа – это не Индия.
fima
2 дек. 2016 / 11:32
  • 3263
  • 25