• 93600
  • 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
1172

Загрузка...
Loading...

Комментарии

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

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

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

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

Маргулан Сейсембаев: Об идеальных учителях, финской модели обучения и дисциплине

Маргулан Сейсембаев: Об идеальных учителях, финской модели обучения и дисциплине

Крупнейшая частная школа осознала, что внедрять финскую модель в чистом виде в Казахстане, не имеет смысла. Нельзя давать детям свободу без "идеальных" учителей.
Zhumanova
вчера / 8:18
  • 4819
  • 7
О проститутках, ЗППП и других сексуальных страстях

О проститутках, ЗППП и других сексуальных страстях

У меня обширный сексуальный опыт, и я этим не хвастаюсь. Будь у меня возможность, променял бы это всё на одного партнёра. Но так как с личной жизнью не заладилось, а секс я очень люблю, то приходилось изворачиваться.
bez_prav
18 окт. 2017 / 18:01
Я помню тот день, когда мне позвонили друзья и сообщили: «Она выходит замуж». Часть 2

Я помню тот день, когда мне позвонили друзья и сообщили: «Она выходит замуж». Часть 2

Я знал дату свадьбы. За неделю до свадьбы в соцсети "Вконтакте" на все мои последние фото, был проставлен лайк с её профиля. Сердце забилось сильнее. В душе загорелась наивная, крошечная надежда.
Dominator-kz
17 окт. 2017 / 15:41
Льготное кредитование для молодежи Алматы. Не хоромы, но для начала неплохо

Льготное кредитование для молодежи Алматы. Не хоромы, но для начала неплохо

Если вам нет 35 лет и у вас нет своего жилья, то есть интересная гос.программа. Нишевая программа - молодые семьи Алматы до 35 лет, семья - это как минимум 2 супруга без детей.
DanaJarlygapova
19 окт. 2017 / 16:21
Мой парень – «тиран». Почему я вступила в такие отношения?

Мой парень – «тиран». Почему я вступила в такие отношения?

История из моей жизни. Я вспоминаю эти отношения и сама не могу понять - как так произошло? А дело в том, что вы и сами не заметите. Это наступает плавно и динамично.
Altynai_JA
18 окт. 2017 / 14:17
Доверяют ли граждане Казахстана полицейским? Социальный опрос

Доверяют ли граждане Казахстана полицейским? Социальный опрос

Борьба с оборотнями в погонах идёт не один год, но без особого эффекта. Это даёт повод подробнее поговорить о нашей полиции и её проблемах. Как относятся к полицейским казахстанцы?
voiceQZ
20 окт. 2017 / 18:42
  • 2611
  • 41
Как и где найти дешевые авиабилеты?

Как и где найти дешевые авиабилеты?

Дешевые авиабилеты и не только. Какими сайтами воспользоваться лучше всего? Байки о том, что чем раньше вы покупаете билет, тем дешевле, не всегда верны и точны.
dianaobyrne
вчера / 9:25
  • 2062
  • 15
Сказ об офисных планктонах. А какой работник ты?

Сказ об офисных планктонах. А какой работник ты?

Я проработала во многих компаниях и повстречала очень много разных интересных людей. Исходя из моих наблюдений, могу описать несколько категорий работников. Может, речь пойдет о ком-то из вас…
Altynai_JA
18 окт. 2017 / 17:51
  • 2022
  • 20
«Автобусная неделя». Выдержит ли аким Шымкента давку в общественном транспорте?

«Автобусная неделя». Выдержит ли аким Шымкента давку в общественном транспорте?

Аким Шымкента Габидулла Абдрахимов нашёл решение накопившихся проблем городского транспорта. Все ключевые работники акимата некоторое время будут сами ездить на автобусах.
openqazaqstan
18 окт. 2017 / 10:53
  • 1954
  • 36