2008年6月アーカイブ

悲しくなった、一因には、これもあったかもしれない。

職場Webサーバの改定を促進するため、あるプログラムを創っていた。Pelrで書いた。
まず、自宅サーバに導入、関係委員にテストをしてもらった。
うまく動いたので、公式サーバでテストをしたのだが、うまく動かない。

厳密に考えれば、自宅サーバはLeopard、公式サーバはPanther、Perlは共に5.10.0。
違うといえば違うし、同じといえば同じ、だ。
で、ハマる。

Leopardのgccは4.0.1、Pantherのそれは3.3だ。
この違いか、と、思ってしまったのだな。
で、gccの導入に週末を潰した。
結局、ここに書いたように、原因はあたしの勘違いにあったのだけれども、悔しいので、記事にしちまう。


1.gcc-4.0.1 on Panther
まず、portで必要な部品を導入。
port install gmp
port install mpfr
port install autogen

環境変数をセット。
setenv LD "/usr/bin/ld"
setenv CC "/usr/local/bin/gcc"

gccは、元々導入されている3.3を使うことにした。
gcc_select gcc33

で、だ。この、gcc_select、portで導入したのだが、妙なファイルを作ってくれる。
選択するgccの関連ファイルを
/usr/local/etc/select/gcc/
に1つずつファイルとして保存しているのだが、この中の、gcc33の中身が、
/usr/bin/gcc-3.3
/usr/bin/cpp-3.3
/usr/bin/c++-3.3
/usr/bin/bin/g++-3.3
-
/usr/bin/gcov-3.3
-

となっているのだな。Leopardは元々gcc4.0.1だ。その場合も、
/usr/bin/gcc-4.0
/usr/bin/cpp-4.0
/usr/bin/c++-4.0
/usr/bin/bin/g++-4.0
-
/usr/bin/gcov-4.0
-

と記述されている。
/usr/bin/bin/g++-3.3

/usr/bin/bin/g++-4.0
も、存在してないよぉ〜ん。
誰も不具合を指摘しないのかな。
切り替えてしまえば、元々導入していたgccは利用しないのかも、ね。特に、g++は...
気持ち悪いので、手動で編集し直しておいた。
それはそれとして、gcc-4.0.1、ね。
以下の作業は、
http://wistaria.ap.t.u-tokyo.ac.jp/Members/wistaria/log/gcc-4.3

を参考にさせていただいた。

適当なサブディレクトリに移動して、
curl -O http://ftp.gnu.org/gnu/gcc/gcc-4.0.1/gcc-4.0.1.tar.bz2
mkdir gcc-4.0.1-build ; cd gcc-4.0.1-build
tar jxf gcc-4.0.1.tar.bz2
mkdir gcc-4.0.1-build ; cd gcc-4.0.1-build
../gcc-4.0.1/configure --prefix=/usr/local/gcc-4.3.1


The following languages will be built: c,c++,fortran,java,objc
*** This configuration is not supported in the following subdirectories:
     target-libmudflap target-libada gnattools
    (Any other directories should still work fine.)
なんて表示されるけど、多分、使わないので、無視。

gmake -j4
gmake check

この時、autogenが活躍するのだけど、
*** 12,18 ****
  #if defined( X11_NEW_CHECK )
  struct wedge {
  #ifdef __cplusplus
! Widget        old, c_new;
  #else
     Widget     old, new; /* fixinc check FAILS ON BSD */
  #endif
--- 12,18 ----
  #if defined( X11_NEW_CHECK )
  struct wedge {
  #ifdef __cplusplus
!       Widget  old, c_new;
  #else
     Widget     old, new; /* fixinc check FAILS ON BSD */
  #endif

といったような、ホワイトスペースに関係する違いを指摘してくれる。
ご苦労さん。
気にしないで...勿論、単なるホワイトスペースの違いだとチェックはした...

gmake install

後は、gcc_select用のファイルを用意する。
cd /usr/local/etc/select/gcc/
vi gcc401

/usr/local/gcc-4.0.1/bin/gcc
/usr/local/gcc-4.0.1/bin/cpp
/usr/local/gcc-4.0.1/bin/c++
/usr/local/gcc-4.0.1/bin/g++
/usr/local/gcc-4.0.1/bin/gcj
/usr/local/gcc-4.0.1/bin/gcov
/usr/local/gcc-4.0.1/bin/gfortran

こんな感じ。


2.gcc-4.3.1 on Panther
前項で用意したので、は、あるが、念のため。手順としては、
port install gmp
port install mpfr
port install autogen

と、部品を用意。
環境変数をセット、
setenv LD "/usr/bin/ld"
setenv CC "/usr/local/bin/gcc"

しといて...この場合のgccは、4.0.1を使ってみた。
cd /tmp/
curl -O http://ftp.gnu.org/gnu/gcc/gcc-4.3.1/gcc-4.3.1.tar.bz2
tar jxf gcc-4.3.1.tar.bz2

mkdir gcc-4.3.1-build ; cd gcc-4.3.1-build
../gcc-4.3.1/configure --prefix=/usr/local/gcc-4.3.1

やはり、
The following languages will be built: c,c++,fortran,java,objc
*** This configuration is not supported in the following subdirectories:
     target-libmudflap target-libada gnattools
    (Any other directories should still work fine.)

と表示される。無視。

make -j4 bootstrap
を実行したら、
checking assembler for .machine directive support... no
*** This target requires an assembler supporting ".machine"
you can get it from: ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg
make: *** [configure-gcc] Error 1
と、表示されて止まってしまった。
実は、4.0.1の導入を先に書いたのだけれども、作業時間は4.3.1の導入が先だった。
だから、前項の通りに進めても、うまくできないかも。

さて、
ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-528.5.dmg
は、存在していなかった。

http://gcc.gnu.org/install/specific.html#powerpc-x-darwin
http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html

を探って、
ftp://gcc.gnu.org/pub/gcc/infrastructure/cctools-590.36.dmg

を見つける。
ちなみに、自宅の実験機、元自宅サーバPowerMac Cubeには、Xcode 1.5が導入されている。さらに、このcctoolsを導入。
この実験機で作業を進めると、
/sw/lib/odcctools/bin/ld: unknown flag: -macosx_version_min
なんてエラーが出てしまう。
gcc-4.0.2をfinkだったかsvnだったか、で、導入していて、ldが悪さをするのだな。
だから、あえて、
setenv LD "/usr/bin/ld"
setenv CC "/usr/local/bin/gcc"

と、設定したのでした。
それと、再度gmakeを使う時には、
gmake clean
と実行しただけでは、
configure: error: run `make distclean' and/or `rm ./config.cache' and start over
といった具合に、怒られてしまう。
へいへい。

気を取り直して、
gmake -j4 bootstrap
gmake check

例のように、ホワイトスペースに関するエラーがでまして、無視。
後は、

gmake install

最後に、gcc_select用のファイルを用意。
cd /usr/local/etc/select/gcc/
vi gcc431

/usr/local/gcc-4.3.1/bin/gcc
/usr/local/gcc-4.3.1/bin/cpp
/usr/local/gcc-4.3.1/bin/c++
/usr/local/gcc-4.3.1/bin/g++
/usr/local/gcc-4.3.1/bin/gcj
/usr/local/gcc-4.3.1/bin/gcov
/usr/local/gcc-4.3.1/bin/gfortran



gccを導入すると、FORTRANが使えるようになるのだよねぇ〜
ある人が、FORTRANのプログラムを表示することは、公然猥褻罪だ、と、言っていたな。
ある人は、FORTRANでプログラミングを覚えた人は、ダメだ、と、言っていたな。
別の人は、BASICでプログラミングを覚えた人は、ダメだ、と、言っていたな。

だから、あたしは、ダメな人、なんだな。
ちょっと、ダメでない、という、言い訳をすれば、FORTRANでもBASICでも、奇麗にプログラムを書く、という努力はしたよ。何しろ、数日過ぎれば、書いた自分でさえ、何をするためのプログラムなのかわからなくなったから、明日の自分への手紙だと思って書いたのであります。ちょっと、カッコいい、と、思うのは、あたしだけ、だろうね。

とは言え、今は、どちらのプログラムも、参考書が無いと書けない。
否、アルゴル系のプログラムは、全て、参考書が無いと書けない、よ。
論理だけが勝負、で、それをどう表現するのか、は、いちいち記憶していない。
何しろ、今日の昼、何を食べたのかさえ忘れているもん。
...食べてないかも


某チャンネルでスターゲイト SG-1 * の連続放送を見ている。
今日は、ある科学者が統合失調症で幻覚に従って行動し、SG-1が振り回されていた。
なんだか、悲しくなった。

ここ2週間ほど、あまり調子が良くない。先週は通院できずじまい。
ほとんど、寝ている。
SSRIの服用停止による副作用が出てきた。
今回、ひどいのは頭痛だ。ブルフェン200mg錠を朝昼晩服用して、ようやく治まる。
ちなみに、日本人の1日の最大量は450mgだったはずだ。
頭が、もやぁっ〜っと、している。
ひたすら、眠い。

指導生どもや業者さんの顔がちらつく。
東北地方で地震があった。
ケータイに速報が届いていたが、妹がケータイメールを送ってくれるまで、じっとしていた。
本当ならば、両親の無事を心配し、電話をかけなければならなかった。
できない。

渾身のチカラを入れて創ったエシラスは、使われなくなるようだ。
このことが、今のあたしにどれだけのショックを与えるのか、職場のだれも知らない。
単に、あたしの負担軽減という美名の元に行動している。
指導生徒ともに作成した「作品」である。
暴れる元気もない。

今日は、火曜日だった。
気付いたら、14時を回っていた。
とりあえず起きて、ブルフェンを服用して、煙草を吸う。
メールを書いた。
エシラスに対する誤解を解くための文章を書いているうちに、それなりに、頭ははっきりしてきたように思う。

デバック中のプログラムを見直す。
PHPとPerlがごちゃになる。
アルゴル系のプログラムはなんとかなるが、オブジェクト指向というのは、よくわからん。
強引にC言語の構造体とポインタの類推で創っている。
それでも、なんとかなっている。

自宅サーバでテストするとうまくできるのに、公式サーバではうまく動かない。
なんだぁ、こりゃぁ、で、週末が過ぎた。
伝統的なデバック、要所にprint文を入れて、テスト用のプログラムを動かす。
くだらないことだった。
しかし、printしてみて、初めてわかった。
そうね、chompで改行コードを削除しないといけないのね。
ふん。

この続きは、gccの導入に書こうかな。
要するに、念のため、自宅サーバと同じ環境を作ろうと、gcc-4.0.1を導入して、perl-5.10.0を再導入しちまったのであります。
...ちなみに、perl-5.10.0の導入の最初は、
sh Configure -de

としましたです。ここに書いた方法とは、敢えて変えてみた。
...あれ、書いてなかった。
Intel Macならば、
sh Configure -Accflags="-arch i686 -arch ppc" -de

PowerPCならば、
sh Configure -Accflags="-arch ppc" -de

と、しておりました。


さて、勿論、これらを導入しても、あたしの作ったプログラムは、ちゃんとエラーで止まったのでした。
あほらし。

指導生が言っていたな。
プログラムは間違わない、人間が間違える。
はい、そのとおり。

configとmakeの吐き出す文字列を1日眺めて達成感なし
syslogとmailのlogがあふれ出すterminalが反射する顔
ググっても解決策さえ見つからず吾の専門ではないんだぜ
親分は大勘違い専門の立場を生かした助言とは何?
誤解解く努力もできずひたすらに試行錯誤の週末が過ぐ
うつうつとニコチン頼りて試行する錯誤の果てぞ飲酒となりし
自らに課した目標高過ぎし百も承知で挑みつ果てし
エシラスは文科省へのアリバイと割り切ることぞできるはず無き
日々作るアルゴル系のプログラム自己満足の極みなれども
中級のエンジニアだと思ひたし部品創ってなんぼの仕事
部品ども自作ながらもそれなりに組み合わせればシステムなりき
作品となりたる吾のシステムを捨てる部所有り事情も知らず
事情などわかるはずなし継ぎはぎをしても動かす技ぞ持ちける
吾が脳も継ぎはぎをしてほしきもの酒のチカラでやっと動けり
捨てられて大きく欠ける吾が左脳夜明けの月も霞む六月
1日に10万単位の行を読むErrorに怯えwarningは無視
知らぬ間に積み重なりきwarningコマンドすらも受け付けぬ彼
不規則を我慢はできず正確な機械にのめり打ち込める吾
サーバは機械のくせに生意気に個性持ちたりなんでだろなぁ
通院もままならぬままパキシルが切れし副作用慣れるものなり

またまた、怖いことに、偶然、気付いた、のだが、職場サーバの1つで、DNSがうまく動いていなかった。
このマシンは、支線のドメインとは異なるドメインを持っている。
先代の自宅サーバ、PowerMac Cube...CPUを入れ替えて1.8GHzにしちまったやつ...の設定をそのまま引き継いで利用していた。
恐らく、/etc/named.confがAppleのSoftware Updateで自動的に書き換えられてしまったのだろう。
Software Updateはそれなりに便利(窓達のそれとは違うとあたしは思っているけど)なのだけれども、あたしが書き換えた設定ファイルを上書きしてしまうことが有って、困る。
/etc/periodic/内のファイルが書き換えられたことに気付くまで、数ヶ月かかった。
もっとも、/etc/weekly.local、/etc/daily.localファイルを作るのが「正当」なのだろうけど、お間抜けなことに、それに気付くまでも数ヶ月かかってしまった。

それはそれとして、問題のマシンは、PowerMac G5 Pantherマシンである。
一応、/etc/named.confを元に戻したのだけれども、/var/log/system.logにエラーが出ていた。幸い、この時よりは全く怖くないのが幸い。

面倒なので、Webminを導入することにした。

ただしっ
DNSの設定は、単に、/etc/rndc.keyを作り直すだけで、正常に動くようになったのだけど。
Postfixの設定を見直す機会になったのは、有り難い。
Leopard(Server)と異なり、PostfixEnablerのチカラを借りて既に設定していた。
その所為だろう。Webminを利用して簡単ピーで設定できる。

有り難やぁ〜、有り難たやぁ〜

先達に感謝!

職場LAN上で、勝手にIPアドレスを使ってるやからがいる、らしい。
おまけに、禁止されているP2Pも使っている、ようだ。
仕方ないので、ネットワークを監視する、ことにした。
まぁ、本来のLAN管理者の仕事だから、しかたがない。

かつては、窓達NTであるアプリケーションを稼働させていたのだが、肝腎のマシンがいかれてしまって、それっきりになっている。
指導生の1人に作業依頼しているのだが、あてにならない、ので、自分が動く訳だ、な。

Wireshark、は、偶然知った。ダウンロードページには、Mac OS X、も含まれている。
ただし、Intel Mac、なんだな。

管理している支線は2本、1本には急にDNSサーバを立てたマシンがつながっている。で、このマシン、PowerMac G4なんだな〜
もう1本の支線上には、Intel Macがつながっている。ただし、Tigerマシン。

とりあえず、自宅サーバ、Intel Mac Leopard Serverに導入して実験。
これまで、X11が嫌いで使うことはない、と、思っていたのだけれども、使う破目になってしまった。
それなりに動いているし、なかなか、面白い。
...こーゆーのを見て面白いと思うところが、ヤバいっす。

PowerMac G4 Leopardマシンと、Intel Mac Tigerマシンには、portコマンドで必要なモジュールを導入し、手動インストールを試みたが、ダメ。
portコマンドで、Wiresharkのインストールがダメだったから手動で試みた。
どちらの場合も、GTK+、X11で失敗するのだな。

困ったところで、次のようなページを見つける。
http://yebo-blog.blogspot.com/2007/05/wiresharkmac-os-x.html

なんでも、「Gtk+ for Mac OS X」プロジェクト、というのが有るらしい。
なるほど。

で、さらに、
http://www.christian-hornung.de/
では、
Wireshark.app based on GTK native (without X11) for Intel Mac - OS X 10.4.9 Installer Package published
なんてことをしてくれている。すげぇ〜

さらに、さらに、

Mac OS X Leopard native Wireshark Installer Package
Intel Package: Leopard-native-Wireshark-Intel.dmg.bz2
PPC Package:Leopard-native-Wireshark-PPC.dmg.bz2

も、あるではないか。
すげぇなぁ〜

PowerMac G4 Leopardマシンには、Leopard-native-Wireshark-PPC.dmg.bz2、を導入。
Intel Mac Tigerマシンには、Wireshark-GTK-native-on-Intel-Mac-OS-X-10.4.9.dmg.tgzを導入。
両マシンとも、それなりに動いている。
ただし、自宅サーバIntel mac Leopard Serverの場合とは異なり、ボタンに表示される文字列が□になる場合が有って、ちびっと困る。
フォントをOsakaにしてみたけど、ダメみたい。
うーん。

まぁ、うまくパケットを捕まえられればいいのだし、見守ることにしましょ。


自宅サーバは、Leopard Serverだ。
だから、DNSの設定に苦労はしなかった。

職場サーバの1つに、普通のLoepardを導入して、「練習」していたのだが、急きょ、これを使って、DNSサービスをしなければならなくなってしまった。
それまで、放ったらかしで、無法地帯になっていた支線に配置するためだ。

で、まぁ、自宅サーバの/etc/named.confと/var/named/内のファイルどもを流用すればいいだろう、と、気軽に作業を進めたのだけれども、launchctlで起動させると、system.logに怖いメッセージを残し始めてしまった。例えば、こんな感じ...

Jun  1 00:00:12 dns named[29092]: starting BIND 9.4.1-P1 -f
Jun  1 00:00:12 dns named[29092]: could not listen on UDP socket: permission denied
Jun  1 00:00:12 dns named[29092]: creating IPv4 interface lo0 failed; interface ignored
Jun  1 00:00:12 dns named[29092]: could not listen on UDP socket: permission denied
Jun  1 00:00:12 dns named[29092]: creating IPv4 interface en1 failed; interface ignored
Jun  1 00:00:12 dns named[29092]: not listening on any interfaces
Jun  1 00:00:12 dns named[29092]: /private/etc/named.conf:16: couldn't add command channel 127.0.0.1#54: permission denied
Jun  1 00:00:12 dns named[29092]: logging channel 'default' file '/Library/Logs/named.log': permission denied
Jun  1 00:00:12 dns named[29092]: couldn't open pid file '/private/var/run/named.pid': Permission denied
Jun  1 00:00:12 dns named[29092]: exiting (due to early fatal error)
Jun  1 00:00:12 dns com.apple.launchd[191] (org.isc.named[29092]): Exited with exit code: 1
Jun  1 00:00:12 dns com.apple.launchd[191] (org.isc.named): Throttling respawn: Will start in 10 seconds

で、
http://www.fraction.jp/log/archives/2007/11/02/Leopard_de_BIND
や、
http://earlybirds.ddo.jp/namahage/inegalog/article.php?id=22
や、
http://earlybirds.ddo.jp/namahage/inegalog/article.php?id=49
や、
http://www.atmarkit.co.jp/flinux/rensai/bind01/bind01.html
や、
http://www.atmarkit.co.jp/flinux/rensai/bind901/bind901a.html
を読み直して、viを駆使して、作業したけれども、ダメ、なのであります。

ついに、
https://earlybirds.ddo.jp/namahage/inegalog/article.php?id=21
を参考に、Webmin(日本のユーザーグループも有るみたい)とUserminを導入することにした。
まず、日本のユーザーグループのページからソースファイルをダウンロード、setup.shを走らせると、あらまぁ簡単、導入されちゃいました。
モジュールの中の言語を日本語にして、さらに、アップデートして、ついでにUserminを導入して、不足していたperlモジュールを導入して...これはうまくできなかったので、CPAN経由で導入して、これはうまくできそぉ〜、と、安心したのはつかの間、結局、DNSの設定はうまくいかなかったのだ、な〜

そもそも、起動に問題が有るのか、と、思って、Lingon、も、導入してみた。
なかなか、便利、そうなのではあるが、viでplistファイルをいじくった方が実感が有る。
で、結局、org.isc.named.plist、の、記述には、問題はない、ようなのだな。
自宅サーバのそれと同じ、なのだから、動かないはずがない。
困る。
で、寝る。

気を取り直して、/etc/named.confを眺める。ついでに、自宅サーバのそれと比べる。
なんで、root特権を持って起動しているのに、permission denied、なのか、が、わからんのですよ。

普通Leopardの/etc/named.confでは、ログの指定に対して次のように記述されていた。

logging {
        category default {
                _default_log;
        };

        channel _default_log  {
                file "/Library/Logs/named.log";
                severity info;
                print-time yes;
        };
};


対して、自宅サーバLeopard Serverの場合には、Includeを使いまくっていたけれども、結局、

logging {
        category default {
                apple_syslog ;
        };
        channel apple_syslog {
                file "/Library/Logs/named.log";
                severity info;
                print-time yes;
        };
};

と、書かれている、の、だ、な。
で、この自宅サーバの記述に合わせて修正したら、動いちまった。

魔法の言葉、apple_syslog、だな。

QRコード

QRコード対応携帯からアクセスできます
QRコード対応携帯からアクセスできます  
Creative Commons License
このブログのライセンスは クリエイティブ・コモンズライセンス.
Powered by Movable Type 5.12

Yahoo!ブログの記事

飼い主になっていただきます : 2012年01月14日

病院の玄関のフラワーポッド : 2012年01月10日

病院の水槽の生き物 : 2012年01月09日

2円の買い物 : 2012年01月07日

新年のご挨拶 : 2012年01月03日

阿蘇にて、2011/12/17-18 : 2011年12月20日

時速1000Km/hじゃ、の、別バージョン : 2011年12月19日

時速1000Km/hじゃ : 2011年12月18日

ぶどう、では、ない : 2011年12月15日

怖い顔 : 2011年12月13日

月別 アーカイブ

2011

  3 2 1

2010

  12 11 10 9 8 7 6 5 4 3 2

2009

  11 10 6 5 4 3 2 1

2008

  11 9 8 7 6 5 4 3 2

2007

  12 11 8 7 6 5 4 3 2 1

2006

  12 11 10 9 8 7 6 5 4 3 2 1

2005

  12 11 10 9 8 7 6 4 3 1

2004

  12 11 10 9 8 7 6 5 4

2003

  12 7 6 5 4 3 1

2002

  12 11 9 8 7 6 5 4 3 2 1

2001

  12 11 10 9 8 7 6 5 4 3 2 1

2000

  12 11 10 9 8