Есть ли способ отработать все необходимые зависимости, но без выполнения "./configure" - C

Те, кто скомпилировал из исходного кода, знают, насколько тяжело запускать "./configure" только для того, чтобы найти эту библиотеку X или пропустить ее, но в худшем случае она выдает глупую строку, говорящую о том, что отсутствует загадочный файл lib, который вы затем нужно перейти к веб-браузеру, набрать пропущенный файл, скрестите пальцы, чтобы Google мог найти ответ для вас...

Я нахожу это очень повторяющимся, поэтому мой вопрос:

Есть ли способ отработать все необходимые зависимости, но без выполнения "./configure"

4 ответа

Решение

Учитывая отсутствие упоминания о конкретном pkg, я предполагаю, что это общий вопрос "как избежать использования configure". Исходя из исходного архива, нет никакого автоматизированного способа проработать зависимости. Это то, что нужно для настройки (вы всегда можете прочитать файлы Makefiles и autoconf и понять зависимости вручную, но тогда вы очень быстро пропустите настройку). Чтобы избежать этого, вам нужно использовать что-то другое, простой tarball, который уже проработал зависимости.

Например, вы можете переключиться на сборку исходных rpms (или debs, в зависимости от вашей системы). Или вы можете использовать систему, такую ​​как Gentoo, которая действительно хороша для разработки зависимостей для вас. Но все они требуют, чтобы интересующий вас pkg был доступен в их формате, поэтому они не будут работать с архивами, которые вы загружаете от поставщика исходного кода.

Прочтите файлы README* или INSTALL* в исходном дистрибутиве, если таковые имеются, или найдите документацию на веб-сайте, с которого вы загрузили его. Если пакет хорошо документирован, зависимости обычно будут где-то перечислены.

Читать configure.ac/configure.in, Ищите звонки AC_CHECK_LIB, AC_CHECK_LIBS, AC_SEARCH_LIBS, AM_PATH_* (некоторые старые пакеты, которые не используют pkg-config положить свои чеки в AM_* пространство имен по какой-то причине), PKG_CHECK_MODULES (за pkg-config), AX_* (многие макросы autoconf-archive написаны для проверки необычных зависимостей) и любые вызовы макросов, начинающиеся с нечетного имени (т. е. не AC_*, AM_* или же AX_*, Пытаться grep '^[^A]'?).

Единственное, что вы можете сделать для сообщества, - это отправить отчет об ошибке / запрос функции сопровождающим пакета. Существует довольно много пакетов, сценарий настройки которых не прерывается при первой отсутствующей зависимости, но выполняется до завершения, а затем печатает сводку всех отсутствующих зависимостей. Это значительно уменьшает утомляемость, которую вы описываете. К сожалению, "довольно мало" означает менее 0,00001 процента (это вымышленная статистика). Если вы сможете убедить разработчиков пакетов переписать свой скрипт configure для поддержки этого поведения, вы внесете свой вклад в улучшение мира.

Удачи с этим!

Другие вопросы по тегам