2016-04-29 4 views
0

Я пишу программу, которая требует LLVM, и думает об использовании autotools для ее отправки в Linux, поэтому с точки зрения пользователя процесс будет выглядеть как хорошо известный ./configure && make && sudo make install.Установка зависимостей в скрипте configure

С помощью autotools обычно устанавливается диспетчер системных пакетов для установки зависимостей. Проблема в том, что по какой-либо причине это не работает с LLVM; на Ubuntu 14.04, apt-get думает, что последняя версия - 3,4, тогда как на самом деле понадобится более новая версия. Таким образом, мне нужно предоставить скрипт для загрузки и сборки LLVM в первую очередь (его локальная копия, не мешая какой-либо старой версии, которая может быть в системе), процесс занимает несколько часов.

Самое очевидное место, чтобы положить этот процесс в начало configure. Это считается нормальным и разумным? Или существует соглашение о том, что configure должен содержать только те объекты, которые обычно вставляются в него, и установка зависимостей должна быть другим скриптом, который пользователь запускает сначала и отдельно? В последнем случае существует ли конвенция о том, что должен назвать этот отдельный сценарий?

+2

Это нормально для Ubuntu 14.04, чтобы содержать старый LLVM, поскольку 14.04 был 2 года назад. Менеджеры системных пакетов никогда не устанавливают новейшие версии программного обеспечения, они устанавливают версии, содержащиеся в дистрибутиве. – wRAR

+0

@wRAR Хорошо, так что это не просто сбой на моем конце, это нормально и, как ожидается, я должен сделать свои собственные механизмы для зависимых от версии зависимостей, достаточно справедливыми. – rwallace

ответ

2

Не устанавливайте ничего во время настройки. Имя сценария «configure» не «install-dependencies».

Напишите конфигурационную проверку, и если llvm отсутствует, дайте пользователю объяснение, как его установить. При необходимости укажите отдельный скрипт для загрузки llvm.

Рекомендуется использовать configure (и make) как обычный непривилегированный пользователь, а не как root. Таким образом, у вас могут даже не быть прав на установку чего-либо. Вам нужно будет проверить, установлено ли «sudo» и т. Д. Также может случиться так, что система, которую пользователь устанавливает, не имеет сетевого подключения (брандмауэр и т. Д.), Поэтому загрузка будет неудачной.