• 89020
  • 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
1118

Loading...

Комментарии

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

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

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

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

Исламская ипотека в Казахстане: в этом году выйдет на розничный рынок

Исламская ипотека в Казахстане: в этом году выйдет на розничный рынок

Многие клиенты, вздыхая о харамном ссудном проценте местных банков, сокрушались по поводу отсутствия у нас халяльного кредитования. Поддержка исламского банкинга на уровне МФЦА есть...
DanaJarlygapova
24 марта 2017 / 18:28
  • 7514
  • 43
Престарелый старец-киборг Рокфеллер предлагал уничтожить 90% населения Земли

Престарелый старец-киборг Рокфеллер предлагал уничтожить 90% населения Земли

Первую пересадку сердца Рокфеллер пережил в 1976 году на 62-м году жизни. Последнюю пересадку ему сделали в августе 2016 года. Пересадка сердца такому старому пациенту не имеет аналогов...
Timur_Tregulov
21 марта 2017 / 23:10
  • 6431
  • 52
Компания LG Electronics открыла предзаказ на новый флагман LG G6

Компания LG Electronics открыла предзаказ на новый флагман LG G6

LG Electronics объявляет о начале предварительного заказа онлайн на новый смартфон LG G6. Оформить предзаказ можно на сайтах магазинов электроники до 16 апреля 2017 года.
LG Electronics
24 марта 2017 / 14:20
  • 4500
  • 0
Беременность по-американски. Никто не ждет до 40 дней, с малышом гуляют с первого дня

Беременность по-американски. Никто не ждет до 40 дней, с малышом гуляют с первого дня

Мои волшебные 9 месяцев протекали в новой среде и далеко от всех родственников и подружек. Никто из моих знакомых в США на тот момент не успел обзавестись малышом, поэтому мне не с кем было...
Zarema_
23 марта 2017 / 9:25
  • 4043
  • 14
Алматы – это город-урод. Если вы живете здесь, то сами найдете кучу примеров

Алматы – это город-урод. Если вы живете здесь, то сами найдете кучу примеров

Париж, Рим, Барселона, Лондон, Алматы, Венеция – выберите город, который на ваш взгляд кажется лишним в этом списке. Если бы не было слова "урод", было бы легче определиться?
corridere
21 марта 2017 / 14:59
  • 4219
  • 75
Страну, где так строят дороги, победить невозможно!

Страну, где так строят дороги, победить невозможно!

Шестиминутный ролик про строительство автомобильной дороги в США - это как острый нож в пузо нашим чиновникам. Они же подавятся бешбармаком, увидев его! Похлеще любого пропагандистского фильма...
Timur_Tregulov
24 марта 2017 / 11:26
  • 3259
  • 31
Будьте бдительны при покупке цифровой техники! «Наебизнес» в магазинах техники

Будьте бдительны при покупке цифровой техники! «Наебизнес» в магазинах техники

Покупая бытовую технику в магазинах будьте внимательны. Сейчас практикуется впаривание дополнительных услуг по настройке. Прежде чем оформлять, проверьте суммы и уточните у манагеров если что-то не сходится.
dr_Motor
20 марта 2017 / 2:13
Это вам не Дисней. Реальный прототип «Красавицы и Чудовища»

Это вам не Дисней. Реальный прототип «Красавицы и Чудовища»

Многие уверенны на 100%, что сказка «Красавица и Чудовище» - это интересная выдумка ее создателей. Однако, действия, происходящие в мультфильме и фильме, имели место в истории, и у главных героев...
Naomi_K
24 марта 2017 / 18:42
  • 3344
  • 32
Посчитав сколько я смогу сэкономить на еде, я понял, что это очень приличная сумма

Посчитав сколько я смогу сэкономить на еде, я понял, что это очень приличная сумма

Именно сейчас я начинаю понимать, как себя чувствуют иногородние студенты, которые живут общежитиях у нас в Алматы. Я не говорю, что они живут плохо, но многие из них рассчитывают только на свои...
noyanovmyras
23 марта 2017 / 0:18
  • 2719
  • 59