質問: ◆背景 OS:CentOS7.3.1611 OpenSSL、python3.6、nghttp2、apache2.4.25を全て ソースインストールを 行おうとしております。 OpenSSL、python3.6のソースインストールは完了し、 apacheインストールの前に、nghttp2のソースインストールを 行う際に、configureを行った際に上記エラーが発生しました。 ◆実行コマンド(以下を実行し、上記のエラーが発生しました。) env OPENSSL_CFLAGS="-I/usr/local/openssl-1.0.2/include" OPENSSL_LIBS="-L/usr/local/openssl-1.0.2/lib -lssl -lcrypto" PYTHON3="-L/usr/local/python3.6.0" LDFLAGS="-L/usr/local/python3.6.0/lib" ./configure ※openssl(1.0.2j)とpython3.6のインストールパスを指定しています。 ◆考察、疑問 pythonの開発版(python-devel)のインストールを促されていると認識しています。 ソースインストールであれば、開発版の内容も含んでいるはずなのでpythonのインストールパスを指定すればよいかと考えていましたが、上記のエラーが出て手が止まってしまっています。 1python3.6のソースファイルには開発版モジュールが含まれていない? 2configure時のパス指定が正しくない? 3そもそもこのエラー(内容を見ると警告?)は無視してもよいものなのか?無視した場合のリスクが不明。 4yum install python-develをconfigure前に実行すれば、configure時にはエラーは出なくなりますが、python-develのバージョンが2.7.*と、ソースファイルとバージョンが異なるので、おそらくのこ対応は正しくないと思っています。 お手数ですが、改善策や、アドバイス等頂ければと思います。 宜しくお願いいたします。 #追記 configure後のサマリーを貼り付けたいと思います。 エラー発生時に一緒に表示される内容です。 Pythonのバージョンが3.6でないOSプリインストールのものとなっている箇所があるため、やはりPythonのパス指定が足りないのかと考えています。 Package version: 1.18.1 Library version: 26:3:12 Install prefix: /usr/local System types: Build: x86_64-pc-linux-gnu Host: x86_64-pc-linux-gnu Target: x86_64-pc-linux-gnu Compiler: C compiler: gcc CFLAGS: -g -O2 LDFLAGS: -L/usr/local/python3.6.0/lib C++ compiler: g++ CXXFLAGS: -g -O2 CXXCPP: g++ -E C preprocessor: gcc -E CPPFLAGS: WARNCFLAGS: WARNCXXFLAGS: CXX1XCXXFLAGS: -std=c++11 EXTRACFLAG: -fvisibility=hidden LIBS: Library: Shared: yes Static: yes Python: Python: /bin/python PYTHON_VERSION: pyexecdir: ${exec_prefix}/lib64/python2.7/site-packages Python-dev: no PYTHON_CPPFLAGS:-I/usr/include/python2.7 PYTHON_LDFLAGS: -L/usr/lib64 -lpython2.7 Cython: Test: CUnit: no (CFLAGS='' LIBS='') Failmalloc: yes Libs: OpenSSL: yes (CFLAGS='-I/usr/local/openssl-1.0.2/include' LIBS='-L/usr/local/openssl-1.0.2/lib -lssl -lcrypto') Libxml2: no (CFLAGS='' LIBS='') Libev: no (CFLAGS='' LIBS='') Libc-ares no (CFLAGS='' LIBS='') Libevent(SSL): no (CFLAGS='' LIBS='') Spdylay: no (CFLAGS='' LIBS='') Jansson: no (CFLAGS='' LIBS='') Jemalloc: no (LIBS='') Zlib: yes (CFLAGS=' ' LIBS='-lz ') Boost CPPFLAGS: Boost LDFLAGS: Boost::ASIO: Boost::System: Boost::Thread: Third-party: http-parser: no MRuby: no (CFLAGS='' LIBS='') Neverbleed: no Features: Applications: no HPACK tools: no Libnghttp2_asio:no Examples: no Python bindings:no Threading: yes
回答: インストールする前にまず、公式ドキュメントに一通り目を通しましょう。 nghttp2のドキュメントのRequirements節には、インストールに必要なものが書いてあります。必要なものを全てインストールしたか、ご確認下さい。 また、Python bindingsという節があって、次のように書いてあります。 > > `make` will build the bindings and target Python version is determined by the `configure` script. If the detected Python version is not what you expect, specify a path to Python executable in a PYTHON variable as an argument to configure script (e.g., `./configure PYTHON=/usr/bin/python3.5`). > > > さらに今回は`configure`スクリプトも使っていますから、スクリプトのオプションに何があるのかも見ておくといいですね (あくまでもドキュメントの記述が優先ですが)。`configure --help`の結果を読むと、今回はドキュメントに書いてあるほかに`OPENSSL_CFLAGS`、`OPENSSL_LDFLAGS`も指定したほうがよさそうです。 > > 1python3.6のソースファイルには開発版モジュールが含まれていない? > > > 開発版パッケージは、ビルドずみのソフトウェアを各ディストリビューションの都合で、「開発するときだけ必要なファイル」と「その他のファイル」とを分け、前者をパッケージにしたものです。 ソースからビルド、インストールしたものにはそのような区別はなく、すべてのファイルがインストールされます。 > > 2configure時のパス指定が正しくない? > > > 上述のとおり、オプションが正しくないですね。 > > 3そもそもこのエラー(内容を見ると警告?)は無視してもよいものなのか?無視した場合のリスクが不明。 > > > ご質問のWARNINGとERRORは、configureの中で実行された別々のチェックの結果を示しています。前者では必要なライブラリがないかもしれないので警告にとどめましたが、後者では必要なライブラリがないので処理を継続できないと判断しました。 `configure`のオプションを直して再度試してみて、うまくいかなければご質問に追記下さい。