2007年10月10日水曜日

(FreeBSD) apache22をportupgradeしたら、起動しなくなった

www/apache22をportupgradeでアップデートしたら、こんなエラーメッセージが出て、起動しなくなりました。うひゃ。



Performing sanity check on apache22 configuration:
httpd: Syntax error on line 64 of /usr/local/etc/apache22/httpd.conf: Cannot load /usr/local/libexec/apache22/mod_authnz_ldap.so into server: Cannot open "/usr/local/libexec/apache22/mod_authnz_ldap.so"



え?と思って見てみたら、/usr/local/libexec/apache22/mod_authnz_ldap.so というファイルが本当にありません。portupgradeでビルドしたとき、なんらかの原因で、mod_authnz_ldapというモジュールがビルドされず、そして、旧バージョンがアンインストールされ、新しいバージョンがインストールされた結果、ファイルmod_authnz_ldap.soが無くなった、ということのようです。



ここで、ピンときて、/usr/ports/UPDATINGをチェック・・・これが原因ですね。

20070918:
  AFFECTS: users of www/apache22
  AUTHOR: clement@FreeBSD.org



  By popular request, OPTIONS support has been added. When enabled
  (default), these knobs are ignored:
          * WITH_<CATEGORY>_MODULES
          * WITHOUT_<CATEGORY>_MODULES
          * WITH_CUSTOM_<CATEGORY>
          * WITH_MODULES
          * WITHOUT_MODULES
          * WITH_STATIC_MODULES
  However, you can disable OPTIONS by defining WITHOUT_APACHE_OPTIONS.


これまで、portsでapache22をビルドするときのオプション指定は、/usr/local/etc/pkgtools.confにて、こんな風に書いてありました。



  MAKE_ARGS = {
        ~略~
        'www/apache22' => [
                'WITH_LDAP=yes',
                'WITH_LDAP_MODULES=yes',
                ~略~
        ],



このpkgtools.confで指定している、WITH_LDAP_MODULES=yesなどの指定が、今では、デフォルトでは無視されるようになっているらしいです。pkgtools.confに書いたものすべてが無視されているわけではなくて、/usr/ports/UPDATINGにあるように、どのモジュールを有効にするか、などが。



では、オプション指定はどうするかというと、「make config」でメニューを見ながら指定みたいです。makeするときに、WITHOUT_APACHE_OPTIONSをセットしてもいいみたいですが、たぶん、make configを使ったほうがわかりやすいと思います。



# cd /usr/ports/www/apache22/
# make config



とすると、こんな風なメニューが表示されます。



200710091



mod_authnz_ldap.soをビルドするためには、「AUTHNZ_LDAP」をオンにすればよいらしいです。
メニューの項目数がちょっと多すぎて、わかりにくい気もしますが・・・



ちなみに、このメニューでの選択結果は、/var/db/ports/以下に保存されています。



# grep LDAP /var/db/ports/apache22/options
WITH_LDAP=true
WITH_AUTHNZ_LDAP=true





でも、これまで、pkgtools.confには、WITH_AUTHNZ_LDAPなんて書いてなかったのに、なぜビルドされてたんだろう。LDAPを有効にした場合、自動的にAUTHNZ_LDAPも有効になっていたのかなぁ。



0 件のコメント:

コメントを投稿