4

Когда мы пытаемся ./configure некоторое программное обеспечение Linux из исходного кода перед его make , обычно возникает огромный список проверок других параметров программного обеспечения, например, ниже приведена крошечная часть такого длинного списка:

-- Java Home guessed: /usr/lib/jvm/java

-- Found ANT: /usr/bin/ant  
-- Building libhdfs
-- Could NOT find MPI (missing:  MPI_LIBRARY MPI_INCLUDE_PATH) 
-- MPI Not Found! Distributed Executables will not be compiled
-- Looking for pthread_setaffinity_np
-- Looking for pthread_setaffinity_np - found
-- Performing Test HAS_MARCH_NATIVE
-- Performing Test HAS_MARCH_NATIVE - Success
-- Performing Test HAS_MTUNE_NATIVE
-- Performing Test HAS_MTUNE_NATIVE - Success
-- Performing Test HAS_CRC32
-- Performing Test HAS_CRC32 - Failed

Меня всегда удивлял этот огромный список проверок - действительно ли они все необходимы? Во многих случаях некоторые условия не выполняются - как в последней строке примера - однако конфигурация продолжается успешно, так что это означает, что они не были необходимы?

2 ответа2

4

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

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

И некоторые из проверок для необязательных вещей. Если есть функция X, которая не нужна, но есть "круто иметь", вы можете проверить X и включить эту функцию в сборку, если можете, но не использовать ее и иметь исправный пакет (без X).

Тогда некоторые функции действительно необходимы, и любой сбой прервет сборку пакета.

Итак, это действительно зависит от функции; Есть ли альтернативы, и действительно ли нам это нужно или это "приятно иметь".

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

2

Они действительно необходимы?

Это зависит от программы, но обычно большинство из них не нужны.

Реальная идея состоит в том, чтобы проверить предпочитаемую программу и, если она недоступна, обратиться к альтернативному компьютеру. Например, проверьте ncurses, если есть: используйте. Если нет, проверьте библиотеку нормальных проклятий. Если есть, используйте это, если нет, проверьте следующую альтернативу или отмените.

Идея, лежащая в основе этого, великолепна, но реализация обычно ошибочна. Слишком много людей копируют сценарии autoconf и / или настраивают из других программ и просто добавляют что-то, пока все не заработает. Это включает в себя много бесполезных.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .