Сборка приложений из исходного кода в 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

для установки в пользовательский каталог.

Теги: , , , ,

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

Комментарии (2) на “Сборка приложений из исходного кода в Ubuntu”

  1. help говорит:

    А я написал бы из этого команды автоматизации. Для тех кто новичок в Linux это может оказаться полезным, поэтому опишу как это делается.
    Создаём пустой файл в домашнем каталоге и пишем в него список команд:
    auto-apt run ./configure
    make
    sudo checkinstall
    или другие и сохраняем. Меняем имя файла (в данном примере логично назвать автомтизированное конфигурирование, сборка пакета и последующая установка – Auto config, make deb, install – acmdi)
    Теперь права: открываем меню мышки на файле – свойства – вкладка права – ставим ГАЛКУ на "позволять выполняться как программе", закрываем. Теперь переброс в каталог исполнения:
    Приложения > стандартные > теримнал
    sudo nautilus /usr/local/bin/
    если вы пользуетесь стандартой оболочкой Ubuntu, но можно и:
    sudo cp [имя файла] /usr/local/bin
    в данном случае всё будет сделано из под консоли и иметь вид:
    sudo cp acmdi /usr/local/bin
    Использование такое: Заходим из под терминала в папку с сиходниками (там как раз и нужно выполнять команду ./configure) и пишем acmdi. Процессы пойдут по списку что в документе, а именно:
    auto-apt run ./configure
    make
    sudo checkinstall

  2. helios говорит:

    Хм… думаю в начале стоит написать что-то вроде:
    "Для торопыг: 1) идём в консоли до папки исходников 2)./configure&&make&&make install
    Не получилось? – читаем дальше."

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

Вы должны авторизоваться для отправки комментария.