root権限のないコンピュータにBisonをインストールしたいと思います。を使用しようとすると、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
このローカルバージョンを使用したかったのですが、設定スクリプトで次のものが見つかりました。
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
しかし、まだ同じエラーが発生します。したがって、この場所を使用するように構成に指示する方法がわかりません。今回は以前のようにオプションがないと思いますm4
。存在していても、configure
任意のプログラムを見つける場所を指定できる場合(好ましくはより優先順位が高い/usr/bin
)、まだ興味があるでしょう。
答え1
あなたは近いです。
まず、M4
変数は、そのファイルがあるディレクトリではなく、実際のM4プログラムファイルのパスに設定する必要があります。それはおそらくあなたの場合より一般的に使用されているので、実際の実行可能PATH
ファイルの名前を指定する必要があります。 BSDタイプのオペレーティングシステムでは、まずプラットフォームを持ち、次にm4
GNU M4プログラム(gm4
例:. GNU BisonをビルドするときにM4のGNUバージョンを使用したい場合があります。スクリプトはBSDバージョンを最初に探します。
第二に、あなたの編集内容は無視されているようですPATH
。export
を実行しない限り、新しい値はシェルでのみ使用できますPATH
。この問題を解決する方法は2つあります。
export PATH=$HOME/local/flex/bin/:$PATH
または:
PATH=$HOME/local/flex/bin/:$PATH ../configure --flags-and-stuff-here
2番目のバージョンではスクリプトのみが変更されましたconfigure
。スクリプトによって開始されたすべてのプログラムは、以下PATH
でなければ変更を見ることができません。それ新しい値をエクスポートします。
~/.bash_profile
個人的には、Bisonをインストールした後にプライベートFlexバージョンを使用することもできるので、起動スクリプトで最初のアプローチ(たとえば)を使用します。ログアウトしてから再度ログインし、実行してflex
テストしてみてください。これがうまくいったら、Bisonconfigure
スクリプトもそのバージョンを最初に見つけなければなりません。