Использование определенной версии программы в настройке

Я хотел бы установить bison на машину, где у меня нет привилегий root. Когда я попытался использовать configure я получил следующую ошибку:

 checking for GNU M4 that supports accurate traces... configure: error: no acceptable m4 could be found in $PATH. GNU M4 1.4.6 or later is required; 1.4.16 or newer is recommended. GNU M4 1.4.15 uses a buggy replacement strstr on some systems. Glibc 2.9 - 2.12 and GNU M4 1.4.11 - 1.4.15 have another strstr bug. 

Я узнал, что моя версия M4 1.4.13. Я установил новую версию (1.4.17) в свою домашнюю папку и хотел, чтобы configure использовал эту локальную версию, чтобы сделать это, я нашел это в скрипте configure:

 M4 Location of GNU M4 1.4.6 or later. Defaults to the first program of 'm4', 'gm4', or 'gnum4' on PATH that meets Autoconf needs. 

Поэтому я использовал команду:

 ../configure --prefix=$HOME/local/bison M4='$HOME/local/m4/bin/' 

Я предполагаю, что это нормально (поправьте меня, если я ошибаюсь).

После этого я получил эту ошибку:

 checking for flex... flex checking whether lex is flex... no checking lex output file root... lex.yy checking lex library... none needed checking whether yytext is a pointer... no configure: error: Flex is required 

Я установил flex локально в $HOME/local/flex и попытался изменить переменную PATH .

 PATH=$HOME/local/flex/bin/:$PATH 

, но я все равно получил ту же ошибку. Поэтому я не знаю, как сообщить configure, чтобы использовать это местоположение. Я не думаю, что на этот раз есть варианты для него, как и для m4 . И даже если бы это было так, мне все равно было бы интересно, если можно указать расположение (-ы) для configure чтобы искать произвольные программы (с предпочтительным более высоким приоритетом, чем /usr/bin )?

  • Что такое хорошее приложение для ведения блога?
  • Разница между .tar.gz.asc, git.tar.bz2 и .tar.bz2
  • Распределение программного обеспечения
  • Редактирование строк из нескольких файлов, как из одного
  • Default sources.list в Debian Jessie (недопустимые зависимости)
  • Как определить дату, когда часть программного обеспечения была установлена ​​из источника?
  • Проблема с установкой свойств python-software
  • Способ сохранения dotfiles и конфигурации с помощью ssh
  • One Solution collect form web for “Использование определенной версии программы в настройке”

    Вы близки.

    Во-первых, переменная M4 должна быть установлена ​​в путь к фактическому файлу программы M4, а не к каталогу, в котором он живет. Вероятно, более распространенное использование этой переменной, чем ваш случай, заключается в выборе нескольких программ M4, которые уже находятся в PATH , поэтому вам нужно назвать фактический исполняемый файл. В ОС BSD обычно используется платформа m4 а затем программа GNU M4, которая, например, называется gm4 . Возможно, вы захотите использовать версию GNU M4 при создании GNU Bison, и эта переменная позволяет вам это сделать. В противном случае скрипт в противном случае нашел бы версию BSD, в нашей примерной системе.

    Во-вторых, я думаю, что ваша модификация PATH игнорируется. Если вы не export PATH , новое значение будет доступно только для оболочки. У вас есть два способа исправить это:

      export PATH=$HOME/local/flex/bin/:$PATH 

    или:

      PATH=$HOME/local/flex/bin/:$PATH ../configure --flags-and-stuff-here 

    Вторая версия делает изменения только для скрипта configure . Любые программы, запускаемые сценарием, не будут видеть измененную PATH , если она не экспортирует новое значение.

    Лично я сделал бы это первым способом в одном из ваших сценариев запуска (например, ~/.bash_profile ), потому что вы захотите, чтобы ваша личная версия Flex была доступна вам после того, как вы также установили Bison. Выйдите из системы, затем вернитесь и попробуйте запустить flex чтобы проверить его. Если это работает, скрипт configure Bison также должен найти эту версию.

    Interesting Posts
    Linux и Unix - лучшая ОС в мире.