Сборка приложений из исходного кода в Ubuntu

Вообще, в производных от Debian системах, в число которых входит и Ubuntu, не принято собирать приложения из исходных кодов. Этого, зачастую, можно избежать, потому как в репозиториях полно различных приложений, на все случаи жизни. По некоторым сведениям, их больше, чем во всех остальных распространённых дистрибутивах линукса.

Два простых пути для установки приложений из меню, мышкой:

  • ПриложенияУстановка/удаление…
  • СистемаАдмининстрированиеПрограмма управления пакетами Synaptic
В первом интерфейсе все приложения снабжены своей иконкой, а так же небольшим сопроводительным текстом-описанием и рейтингом (статистика собирается анонимно со всех пользователей, которые разрешили использовать их данные). Во втором интерфейсе есть абсолютно все пакеты, однако в нём проще запутаться и поставить или удалить не то, что требуется.

Однако, бывают случаи, когда необходимое вам приложение отсутствует в репозитории, например потому, что оно ещё не стабильно, либо распространяется только в исходных кодах, либо его написал ваш сосед-программист, ну или по какой-то другой причине. Тогда придётся собирать его из исходников. Если вы обратитесь к любому руководству по сборке приложений, вы увидите три строки, известных (почти) любому пользователю линукса со стажем более полугода. А именно:

./configure
make
sudo make install
Кратко о каждой из этих команд

./configure

Эта команда подготавливает исходные коды к компиляции под конкретную платформу, а именно в вашей операционной системе. Она проверяет налицие необходимых программ (компиляторов, сборщиков и т. п.), библиотек, а так же заголовочных файлов (something.h). Достаточно часто случается, что в вашей системе недостаёт какого-нибудь необходимого приложения, либо файла заголовков, необходимого для компиляции программы. В таком случае, эта команда выведет сообщение об ошибке. Если у вас достаточный опыт, то вы, конечно же, легко определите, что заголовочный файл some_extra_thing.h находится в пакете extra_things_for_cool_nerds-dev, однако не всегда просто определить, что именно хочет от вас программа, чего ей не хватает.

Тогда нам на помощь придёт утилита под названием auto-apt. Она хранит информацию о заголовочных файлах, которые имеются в репозиториях и поможет вам найти, в каком пакете хранится тот или иной заголовочный файл.

Если ./configure вывела вам сообщение о недостаче заголовочного файла Xlib.h, воспользуйтесь командой

auto-apt search Xlib.h
Она ответит вам следующим:
usr/include/X11/Xlib.h libdevel/libx11-dev
Это обозначает, что нужный вам файл содержится в пакете libx11-dev, относящемся к категории libdevel (пакеты для разработки) и после установки пакета (sudo apt-get install libx11-dev) будет лежать по адресу usr/include/X11/Xlib.h

Есть ещё более простой путь вызова ./configure, который сам предложит вам установить все необходимые пакеты

auto-apt run ./configure
Вам нужно будет только следить за процессом установки и изредка нажимать Y для установки необходимых пакетов.

make

Это вторая и, пожалуй, главная команда из этой триады. Она выполняет компиляцию и сборку всех необходимых компонентов системы. Если ошибка появляется во время выполнения этой команды, скорее всего ошибка в коде, который вы пытаетесь собрать. В таком случае, остаётся только обратиться к разработчику программы. Но обычно, после успешного выполнения ./configure, здесь ошибок не бывает.

make install

Этой командой вы устанавливаете приложение. Если вы хотите установить её для всех пользователей, общесистемно, вам необходимы права пользователя root. В Ubuntu это решается вызовом этой команды после sudo, то есть
sudo make install
НО! При установке этим путём, вы можете нарушить целостность системы, поскольку эта команда не сохранит данные о том, какие файлы и куда были установлены. Таким образом, удаление этой программы сможет принести вам много мороки. Чтобы облегчить возможноые страдания, была написана утилита под названием checkinstall. Она проверяет, что и как хочет сделать команда make install, а потом собирает по полученным сведениям deb-пакет и устанавливает его в систему (то есть, для удачного выполнения этой команды ей так же нужны права суперпользователя). Благодаря этому, вы сможете потом легко удалить ненужное вам более приложение, используя например Synaptic, упоминавшийся в начале статьи.

Установка программ в пользовательский каталог

Бывает, что некоторые программы не нужны общесистемно, тогда нужно на этапе конфигурирования указать, что программа будет устанавливаться в пользовательский (или иной) каталог. Для этого, обычно, первая команда видоизменяется следующим образом:
./configure --prefix=/home/$USER
Тогда команду make install нужно вызывать без префикса sudo.

Выводы

Для упрощения установки программы из исходных кодов, в Ubuntu вы можете воспользоваться немного изменённым набором команд:
auto-apt run ./configure
make
sudo checkinstall
для установки общесистемной, либо:
auto-apt run ./configure --prefix=/home/$USER
make
make install
для установки в пользовательский каталог.

Ключевые слова: