わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

アパッチのメイクでエラー

SEOで来られても困るのでタイトルはあえてカタカナにします.以下,コマンド名もカタカナ書きにしてみます.2年生向け授業で,毎年恒例,アパッチのビルドをやってもらいました.httpd-2.4.37.tar.bz2といくつかのファイルを,自分のホームディレクトリ以下,所定の場所に置いておきまして,これを使うように指示しました.学生はダウンロード不要です.一連のコマンドを実行すれば,ビルドとインストールができ,設定ファイルのポート番号も変えておくと,アパッチコントロール・スタートでサーバが起動します.
Webで容易に見つかる,ビルドの仕方は,管理者権限を必要とします.しかし計算機室にある学内管理のPCでは,学生も自分も,そんな権限を持っていません.各自のホームディレクトリ以下にインストールする必要があります.その指定方法を,さらなる情報収集の上で,考えてほしいのですが,ビルドとインストールにかける時間は1コマだけです.次のコマでは,ビルドしたサーバをもとに次の課題に取り組んでもらいます.そこで休み時間に,正解となるコマンド群を学生に見せています.
しかしそれでも,メイクでエラーが発生するという学生がいました.
多くの学生が,次の課題に取り組んでいる中,その学生のそばに行き,エラーメッセージをじっくり見ました.こんなメッセージです.

ab.o: In function `ssl_proceed_handshake':
(パスは略)/httpd-2.4.37/support/ab.c:(行番号も略): undefined reference to `EC_curve_nid2nist'
ab.o: In function `main':
(パスは略)/httpd-2.4.37/support/ab.c:(行番号も略): undefined reference to `SSLv2_client_method'
collect2: error: ld returned 1 exit status
make[2]: *** [ab] エラー 1

見た瞬間に,SSL関連のエラーと分かります.EC_curveは楕円曲線暗号のことでしょう.
しかし毎年のように授業でアパッチをビルドさせ,バージョン2.4でもひと手間ふた手間が必要になっているのを,把握していても,この種のエラーは初めて見ました.
1人につきっきりというわけにもいかず,授業はそれなりに進行させて,この学生には,授業時間外で,こちらの用意したビルドのコマンドを順に実行するよう指示しました.ただしコンフィギュアとメイクとメイク・インストールのコマンドには,後ろに「2>&1 | tee ファイル名」をつけて,画面に表示させながら,出力(エラーも)をファイルに保存してもらいました.
それをファイルで送ってもらい,エラー箇所を見ても,原因がよく分かりません.コンフィギュア実行時に以下のメッセージが出ますが,WARNING(警告)であってエラーではありません.

configure: WARNING: Your APR does not include SSL/EVP support. To enable it: configure --with-crypto

自分も計算機室に行き,学生に指示したのと同じコマンドで,コンフィギュアの結果をファイルに保存しました*1.それで学生のファイルと,違いを見てみることで,やっと原因がつかめました.
その学生のコンフィギュア結果の中に,他のユーザのホームディレクトリ名が入っていました.
環境変数を独自に設定しているのではと考え,その学生の.bashrcを覗かせてもらうと,「PATH=」のあとに,そのユーザ名を含む,pythonのパスが入っていました.そのパスを少し書き換えて,ファインドの引数に指定してみると,libssl.aとlibssl.soが,末尾に表示されました.
他の科目で,設定していたのでしょう.
自室に戻って,学生にメールを送りました.設定を削除して,ターで作ったディレクトリを削除してターからやり直すよう,指示しました.

*1:「Your APR does not include SSL/EVP support」を含むWARNINGは,自分のコマンド実行でも出てきました.