---
title: "Сборка или компиляция программ из исходников в linux"
description: "Иногда получается что нет нужной программы в репозитории, или на сайте производителя нет сборки под ..."
author: "makenskiy"
published: "2011-04-27T07:11:25+00:00"
modified: "2011-04-27T07:18:16+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/sborka-ili-kompilyaciya-programm-iz-ishodnikov-v-linux-149481"
markdown_url: "https://yvision.kz/post/sborka-ili-kompilyaciya-programm-iz-ishodnikov-v-linux-149481/markdown"
site_name: "Yvision.kz"
---

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

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

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

Тема собственно родилась по просьбе одного хорошего человека, который попросил вынести в отдельный топик. Буду собирать для примера geany на голом только что установленном дистрибутиве Debian squeeze с Gnome на борту. «Почему geany? Он же есть в репозитории.» — спросите вы. Просто это первая программа которую собрал в linux, так сказать ностальгия.

Readme

Так к чему я это? К тому что обычно пишется «как собрать» в файле Readme или Install, прежде чем делать что-то посмотрите в этот файл, наверняка там написан не только процесс установки, но и зависимости которые нужны для пакета.

Обычно все сводится к выполнению

 

```
$ ./configure$ make# make install
```

 
 

или

 

```
$ ./configure$ make# checkinstall -[D][R][S]
```

 

Скачиваем geany

Можно скачать по [ссылке](http://www.geany.org/Download/Releases), а можно воспользоваться консольной утилитой 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\](http://itbuben.org/uploads/images/00/00/02/2011/04/16/d96530.png)](http://itbuben.org/uploads/images/00/00/02/2011/04/16/6cb6c7.png)

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

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

 

```
$ apt-cache search gtk 2.0
```

 

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

 

```

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

 

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

 

```
$ ./configure
```

 

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

[!\[configure\](http://itbuben.org/uploads/images/00/00/02/2011/04/16/a9683b.png)](http://itbuben.org/uploads/images/00/00/02/2011/04/16/1db865.png)

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

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

 

```
$ make
```

 
 

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

 

[!\[make\](http://itbuben.org/uploads/images/00/00/02/2011/04/16/ea35c8.png)](http://itbuben.org/uploads/images/00/00/02/2011/04/16/efbf32.png)

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

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

 

```

# make install
```

 
 

или

 

```
$ sudo make install
```

 

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

[!\[make install\](http://itbuben.org/uploads/images/00/00/02/2011/04/16/2ea247.png)](http://itbuben.org/uploads/images/00/00/02/2011/04/16/123212.png)

На этом все. Архив 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\](http://itbuben.org/uploads/images/00/00/02/2011/04/16/99e45f.png)](http://itbuben.org/uploads/images/00/00/02/2011/04/16/fd0814.png)

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

[!\[Сборка или компиляция программ из исходников в linux\](http://itbuben.org/uploads/images/00/00/02/2011/04/16/044fcc.png)](http://itbuben.org/uploads/images/00/00/02/2011/04/16/1e6d46.png)

NOTE: Для checkinstall мне пришлось поставить еще apt-build т.к. его не было в системе. [FAQ по checkinstall](http://asic-linux.com.mx/~izto/checkinstall/faq.php)

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

** кросспостинг с [блога](http://itbuben.org/blog/Unix-way/829.html)*

---

Source: [https://yvision.kz/post/sborka-ili-kompilyaciya-programm-iz-ishodnikov-v-linux-149481](https://yvision.kz/post/sborka-ili-kompilyaciya-programm-iz-ishodnikov-v-linux-149481)