2007年4月30日 月曜日

undefined method `+’ for nil:NilClass

Filed under: FreeBSD — 投稿者:よしとも
時間:0時36分|パーマリンク
AddClips 経由でソーシャルブックマークに登録:
人気度: 41%
by Popularity Contest 日本語版

 ローカルサーバーには FreeBSD を入れていて、そこで使用しているソフトは Ports システムで管理しています。そして、その管理には portupgrade というツールを使用しているのですが、久しぶりにその設定ファイルをいじったら次のようなエラーが出るようになってしまいました。

CODE:
  1. ** Error occured reading /usr/local/etc/pkgtools.conf: undefined method `+' for nil:NilClass

 結構間抜けな原因でしたが、ずっと気がつかないままだったのでメモしておきます。

 変更した設定ファイルは /usr/local/etc/pkgtools.conf。ここに、次のような記述を追加しました。

CODE:
  1. ENV['PORTS_INDEX'] ||= ENV['PORTDIR'] + '/INDEX.local'

 当然これは間違っています。次のが正しい記述。

CODE:
  1. ENV['PORTS_INDEX'] ||= ENV['PORTSDIR'] + '/INDEX.local'

 ENV['PORTDIR'] ではなく ENV['PORTSDIR'] です。S が抜けていました。
 undefined method の意味を関数とか機能だと解釈していたため、何がいけないんだろうとずっと悩んでいました。何のことはない。未定義変数に文字列結合はできないという意味だったようです。portupgrade は Ruby で書かれていて、このエラーは Ruby によるもののようです。Ruby をある程度使っていないと、これはわからないですね。

コメント (0)

2007年2月22日 木曜日

FreeBSD 6.x のロケールファイルは 5.x と違うらしい

Filed under: FreeBSD — 投稿者:よしとも
時間:23時13分|パーマリンク
AddClips 経由でソーシャルブックマークに登録:
人気度: 31%
by Popularity Contest 日本語版

 FreeBSD をアップグレードしてしばらく経ちますが、ある Perl ライブラリがバージョンアップできなくて悩んでました。ロケールが設定されてないとか何とか。環境変数を設定しなおしても同じメッセージが。

 エラーメッセージを検索してみたりしているうちに、ロケールファイルというものがあるらしいという情報が。「FreeBSD ロケールファイル」で検索してみると、確かにあるようです。ロケールが名前になっているディレクトリがたくさんあり、その中にもなにやらファイルが。どうやらこれのことのようです。

 で、さらに検索結果を眺めていると、6.0 からはロケールファイルのフォーマットが変わっているという情報が。6.0 以前の環境でコンパイルしたプログラムは、このせいでうまく動作しないとか。問題のライブラリは Perl スクリプトでコンパイルするようです。そして、インストールされている Perl は FreeBSD をアップグレードする前に Ports からインストールしたものです。 perl -v で同じメッセージも出ます。

 というわけで、Perl の再インストールをしてみました。perl -v でエラーメッセージが出なくなりました。

コメント (0)

2007年1月28日 日曜日

FreeBSDアップグレードでDNSが行方不明に

Filed under: FreeBSD — 投稿者:よしとも
時間:22時58分|パーマリンク
AddClips 経由でソーシャルブックマークに登録:
人気度: 47%
by Popularity Contest 日本語版

 予定より1週間遅れましたが、ローカルサーバーの FreeBSD を 5.4 から 6.2 にバイナリアップグレードしました。イメージファイルをダウンロードして CD-R に焼いて起動させて実行。何の問題もなく終了。

 そのはずでした。

 念のためチェックしていると、ウェブサーバーが応答しないことが判明。Webmin で確認してみると Apache が起動していません。手動で起動させてみると、今度は名前の解決ができないとかでエラー。名前の解決を手動で試みるも、やはりエラー。
 DNS サーバーの BIND を調べてみると、起動していますが設定ファイルが書き換えられています。不安を感じながらも手作業で修復。でもエラー。

 散々調べた結果、問い合わせ先がローカル IP アドレスだとサーバーを見つけられないようです。localhost にしてやるとグローバルサーバーのドメインも含めて名前解決できます。まったく持って謎です。

 現在はプロバイダの DNS を参照することで何とかなっていますが、ローカルマシンの名前解決ができないので不便です。原因に思い当たる方いらっしゃいましたらお助けください。

dig コマンドによる問い合わせ

CODE:
  1. # dig @localhost example.com
  2.  
  3. ; <<>> DiG 9.3.3 <<>> @localhost example.com
  4. ; (2 servers found)
  5. ;; global options:  printcmd
  6. ;; Got answer:
  7. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31756
  8. ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
  9.  
  10. ;; QUESTION SECTION:
  11. ;example.com.                   IN      A
  12.  
  13. ;; ANSWER SECTION:
  14. example.com.            172800  IN      A       192.0.34.166
  15.  
  16. ;; AUTHORITY SECTION:
  17. example.com.            21600   IN      NS      a.iana-servers.net.
  18. example.com.            21600   IN      NS      b.iana-servers.net.
  19.  
  20. ;; ADDITIONAL SECTION:
  21. a.iana-servers.net.     172800  IN      A       192.0.34.43
  22. b.iana-servers.net.     172800  IN      A       193.0.0.236
  23.  
  24. ;; Query time: 1075 msec
  25. ;; SERVER: 127.0.0.1#53(127.0.0.1)
  26. ;; WHEN: Sun Jan 28 17:09:25 2007
  27. ;; MSG SIZE  rcvd: 125
  28.  
  29. # dig @192.168.0.1 example.com
  30.  
  31. ; <<>> DiG 9.3.3 <<>> @192.168.0.1 example.com
  32. ; (1 server found)
  33. ;; global options:  printcmd
  34. ;; connection timed out; no servers could be reached

2007年1月29日 追記

 /var/log/message を見てみると、次のようなエラーが出てました。

CODE:
  1. Jan 29 06:08:29 server named[668]: could not listen on UDP socket: permission denied
  2. Jan 29 06:08:29 server named[668]: creating IPv4 interface fxp0 failed; interface ignored
  3. Jan 29 06:08:29 server named[668]: could not listen on UDP socket: permission denied
  4. Jan 29 06:08:29 server named[668]: creating IPv4 interface fxp0 failed; interface ignored

 エラーメッセージを見つけたらインターネット検索が最近のお約束です。早速 Google 様に伺うことに。1時間ごとに同様のエラーが出るというブログ記事を発見。

 次のようにあったので、早速実行。

BIND9を再起動すると解消するが、BIND9はHUPシグナルを受け取らないため、「kill -HUP pid」ではなくrndcを使うか、一度終了させてから再度起動させないとうまくいかない。

 うまく名前解決できました。一歩前進です。

 また、次のような情報もありました。こちらはすでにやっているので違うかもしれませんが、有用に思えたので書いておきます。

 options セクションに、次のコードを追加することでリクエストを受け付けてくれるようになるとのことです。自分自身への問い合わせのため、127.0.0.1 は必須です。

CODE:
  1. listen-on { 172.16.1.16 ; 127.0.0.1 ; } ;

 また、調査してなくてよくわかっていないのですが、interface-interval というオプションの値を0にするといいらしいです。

googleして、named.confに以下を追加

options {
interface-interval 0;
};

 このオプションについては、またあとで調べてみようと思います。

2007年2月1日 追記

 listen-on で、LAN の IP アドレスを追加することで解決しました。このサブセクションに記述された IP アドレス宛の要求を処理するとのこと。
 interface-interval は、ネットワークインターフェースのチェックをする間隔だそうです。増減することはまずないので0にしておきました。

コメント (0)

2007年1月16日 火曜日

FreeBSD 6.2-RELEASE が公開されました

Filed under: FreeBSD — 投稿者:よしとも
時間:22時52分|パーマリンク
AddClips 経由でソーシャルブックマークに登録:
人気度: 28%
by Popularity Contest 日本語版

 昨日の記事の中で次のバージョンがリリースされたらローカルサーバーの FreeBSD をアップグレードすると書いたばかりですが、ちょうどその日にリリースされてました。Xbox でも動くようになったようです。

 Opera9 を導入したので、土日あたりで BitTorrent からダウンロードしてアップグレードしようと思います。

コメント (0)

2007年1月15日 月曜日

1年中働いています

Filed under: コンピューター, FreeBSD — 投稿者:よしとも
時間:15時15分|パーマリンク
AddClips 経由でソーシャルブックマークに登録:
人気度: 24%
by Popularity Contest 日本語版

 人間ではなく、コンピューターの話。

 プログラムのテスト場所目的でローカルサーバーを稼動させているのですが、その連続稼働日数が365日を越えていました。昨日で370日です。

 テスト場所といいつつも、NTP サーバーや DNS サーバーも兼ねてたりします。パソコンと一緒に起動させたりするのも面倒なので、結局24時間起動しっぱなし。どうせならファイルサーバーにと思って Samba も入れましたが、HDD の容量が少ないので保留。印刷エラーでプリンタサーバーにもできず。

 ちなみに、中身は AthlonXP ベースのただの自作パソコンです。OS は FreeBSD 5.x。6.2がリリースされたらアップグレードしようと思ってます。

 さいごに、サーバーに一言。
 1年間ありがとう。また1年よろしく。

コメント (0)
Page 2 of 3«123»

HTML convert time: 0.274 sec. Powered by WordPress ME

Images is enhanced with WordPress Lightbox JS by Zeo