Компиляция и установка программного обеспечения - боль и проблема, которую я не могу преодолеть. Я просто хочу побежать через мое понимание этого процесса с кем-то более знающим, чтобы очистить свой разум, чтобы перейти на следующий уровень.
Многие научные программы, которые мне нужны, не распространяются в виде пакетов. Я понимаю, что "./configure" устанавливает переменные компиляции, а проверка на наличие зависимостей "make" выполняет компиляцию "sudo make install", которая помещает все библиотеки и бины на свои места. Однако это никогда не работает. Я редко выхожу из стадии а) "./configure", не попадая в ад зависимости, и если я это сделаю, б) "sudo make install", вероятно, уничтожит мою коробку.
а) ад зависимости очень расстраивает. Иногда у меня есть библиотека, но она мне не нравится. Или библиотека не хочет устанавливать. Или «настроить» не может найти его. Или мой дистрибутив разместил его где-то не должно быть. Или есть две версии в моей системе. Проблема в том, что я не могу понять, как диагностировать и, следовательно, исправить эти проблемы. Какие полезные ссылки выучить кому-то, кому не нужно становиться программистом?
б) Насколько я понимаю, «make install» заменит некоторые библиотеки и изменит настройки без того, чтобы мой менеджер пакетов знал об этом. Поэтому некоторые программы не запускаются, другие не могут быть обновлены. Итак, если я не использую «make install» и просто храню скомпилированный двоичный файл в своем пользовательском каталоге с символической ссылкой, добавленной в PATH, я буду в чистом виде?
Моя коробка однопользовательская, имеет множество бесплатных HD, поэтому мне не важно иметь несколько (десятки) копий библиотек, если это решит мои проблемы. Пространство дешево.
apt-get build-dep <package>
для автоматической установки необходимых зависимостей.Ответы:
Большинство пакетов будут иметь
<package>-dev
(для Debian) или<package>-devel
(для Red Hat) библиотеки, с которыми нужно ссылаться для сборки.Так, например, если источник говорит, что это требуется
libxml
, в системах на основе Debian вы найдетеlibxml2
иlibxml2-dev
(используйтеapt-cache search <dependancy>
для их поиска).Вам понадобится
libxml2-dev
построить его иlibxml2
запустить../configure
Шаг обычно поддерживает флаги любят--with-libxml=/usr/lib/
указывать его на правильные библиотеки (./configure --help
должны перечислить все варианты). Он также обычно поддерживает изменение места установки с помощью--prefix=$HOME/sw
. Использование префикса вне того, что контролируется вашим менеджером пакетов, - лучший способ избежать конфликтов с установленным менеджером пакетов.О Debian и производных с использованием
--prefix
в/usr/local/
или/opt/local/
должны быть безопасными.Если нужная вам библиотека (или версия) недоступна в менеджере пакетов, просто скачайте исходный код и скомпилируйте его, используя аналогичные параметры. Наиболее важно использовать
--prefix
внешний вид вашего менеджера пакетов и при компиляции программного обеспечения, которое вы действительно хотите использовать--with-<library>=/<path/to/installed/library>
.источник
Есть инструмент,
auto-apt
который можно использовать для этого.От человека авто-кв :
Он используется следующим образом:
Другой способ - использовать
apt-get build-dep <package>
дистрибутивы на основе Debian.источник
apt-get build-dep <package>
работал на меня. Было неприятно бегать./configure
снова и снова, чтобы выучить еще один необходимый пакет!Для распределений на основе RPM, вы можете попробовать свои силы в создании собственных пакетов (это не что трудно ...).
Преимущества правильного пакета заключаются в том, что менеджер пакетов отслеживает программное обеспечение, и вы можете легко скопировать свои настройки в другом месте / на следующем компьютере. При правильном переносе исходного пакета (новая версия, исправление ошибок, базовые библиотеки обновляются) проще, чем в следующий раз разобраться с этим с нуля.
источник