ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2008年6月29日日曜日

Text file busy: exec of.

 何故かPerlを触っています.
 VB/ASP → VB/ASP.Net → PHP → C# と触って来たlightmaterialはPerlを全然触った事がありません(C++もJavaも「使える」と明言出来るレベルではありません orz).
 勿論、コードを「ナントナク」読むとか他の人が書いたコードを少し修正する程度であれば可能ですが、一からPerlプログラムを書きなさい、と言われれば「無理です」と断言せざるを得ないレベルです orz

 が、若干コードを触る必要が出てきそうなので、今のうちから徐々にPerlの独特な言語仕様を覚えようと頑張ってます.
 いや、本当は頑張ってないんですけどw

 それにしても、本当に独特の世界です.

 他の言語のFunctionやメソッドにあたるサブルーチン(VBのSubプロシージャとは違います)の引数が「@_」に入ってるとか、普通に変数と配列を混在させて引数に渡したりすると受け側(サブルーチン内)で変数と配列の区別がつかないとか、「if ($a eq 'Oh my Goods') return 0;」と書かずに「return 0 if ($a eq 'Oh my Gods');」の様に書くとか…挙げればきりがないほど独特です.

 とまぁ、別にWebアプリケーションの初期から広く一般に使用されているPerlの事を今更書いた所で何の意味も無いですねw

 Perlが必要になるのは当然仕事での話なので、会社でも今やってる案件の合間を見て勉強し、家でも同様に勉強してたりします.
 現在のPC、家電の配置状況だとXPを直接触らずFedora機からrdesktopで接続する方が操作性が良く、

 Fedora機 →[rdesktop]→ XP →[samba]→ Fedora機

と言う「なんでやねん」的な遠回りかつ無駄な操作をしていますw
 単にXPの使い慣れたエディタが使いたいだけなんですけど.

 で、XPのエディタでSamba経由で直接Perlのファイルを編集して逐次実行状態を確認していますが(勉強なので)、実行タイミングにより以下の様なエラーが発生する事に気付きました.

Text file busy: exec of '/var/www/html/nandeyanen/test.cgi' faild
 ※当然実行時のブラウザにはPerlにつき物の「Internal Server Error」が表示されます

 んが?
 なんじゃそりゃ?
 同一コードでもタイミングによって成功したり…
 これはどうやらPerlコードの問題じゃないな、と思い調べてみると、Sambaでのファイルロックが邪魔をしているらしい事が分かりました.

 楽園通信社日記(3月8日の記事)
 ※99年の記事ですw 先人達が残す膨大な情報の海に感謝

 どうやらsmb.confで
oplocks = no
 とする事で解決できる様です.
 実際、上記設定でlightmaterialもエラーが解消されました.
 この「oplocks」と言うSambaの設定は

SambaFAQ より一部抜粋)
SMBではファイルを oplock(opportunistic lock,便宜的ロック)することで、そのファイルを独占的にアクセスすることができます。ファイルへのoplock権を得たクライアントは、そのファイルをアクセスしているのは自分だけであると判断し、ファイルのデータをクライアント上で積極的にキャッシュします。

 と言うものであり、前述の様に「oplocks = no」とするか、または

Samba-Jp より一部抜粋)
oplock break timeout パラメータの値を 50 程度に大きめにすることにより、Samba の応答を遅延させ、事象の発生を抑止することができます。

 と言う設定で回避出来る問題の様です.
 どちらかと言うと、noと設定してしまうよりは、後者の「oplock break timeout」パラメータを調整する方がサーバーの設定としては正しいかとは思います.

 それにしても、PerlをやっててSambaの勉強になるとは思ってもみませんでした.

 『知れば知るほど知らない事が増えていく』

 エンドレスなメビウスの輪的な感慨に浸りつつ本日の勉強を続けます orz

2008年4月6日日曜日

OpenLDAPのconfigure時にBerkeley DB version mismatch.

 と言う事で見事につまずきました orz
 make uninstallがあるのにStow使ってインストールしようとしたのが悪かったかなぁ?
 と言うか、それ以前にOpenLDAPにBerkeleyDBが必要な事自体、まったく知りませんでしたから orz

[??@debian]# tar xvzf db-4.6.21.tar.gz
[??@debian]# cd db-4.6.21/build_unix
[??@debian]# ../dist/configure --prefix=/usr/local/stow/BerkeleyDB
[??@debian]# make
[??@debian]# su root -c 'make install'
 ※例にStowで管理してみようと思ったが為にPrefixでStow用のディレクトリ配下を指定

[??@debian]# cd /usr/local/stow
[??@debian]# su root -c 'stow BerkeleyDB'


 ここまでは全然OKです.
 Stowでインストール管理も出来ます(しつこい様ですが、BerkeleyDBにはmake uninstallがありますw).

 そして本題のOpenLDAPです.
 これもStow配下へのインストールを試みます.

[??@debian]# tar xvzf openldap-2.4.8.tgz
[??@debian]# openldap-2.4.8/configure --prefix=/usr/local/stow/openldap
Configuring OpenLDAP 2.4.8-Release ...
[中略]
checking for db.h... yes
checking for Berkeley DB major version... 4
checking for Berkeley DB minor version... 6
checking for Berkeley DB link (-ldb-4.6)... yes
checking for Berkeley DB version match... no
configure: error: Berkeley DB version mismatch
 ※Prefixを付けて標準以外のディレクトリにインストールすると、db.hのチェックで見付けられない可能性があります.今回はStowでインストールかましているのでパスが通っています.

 おうぷし orz
 思い切りエラーが出やがります.
 バージョンが合わないって…おかしい.
 ここ↓を見てバージョンに間違いない事を確認したはずなんだけどなぁ…
 D. Recommended OpenLDAP Software Dependency Versions

 と言う事でいつもの如く他力本願で検索ごー!

 LDAP Programming(のフォーラムらしい)
 ※検索すると日本語ページの結果が出てきましたが、多分そこの情報を鵜呑みにすると面倒な事になります.

 ここの下の方を見ると

export CPPFLAGS="-I/usr/local/BerkeleyDB.4.2/include"
export LDFLAGS="-L/usr/local/BerkeleyDB.4.2/lib"
export LD_LIBRARY_PATH="/usr/local/BerkeleyDB.4.2/lib/"

 と書いてあるので、どうやらパスが通ってないらしい.
 だったらエラーメッセージに「パスが通ってねーんだよコンチクショー!」と出力してくれればいいものを orz
 何故メッセージが「version mismatch」?

 と言う事で、いつまた再インストールやら設定変更するか分かりませんので、何度もexportする必要が無い様にldを使います.

[??@debian]# su
[debian]# echo /usr/local/stow/BerkeleyDB/include >> /etc/ld.so.conf.d/BerkeleyDB.conf
[debian]# echo /usr/local/stow/BerkeleyDB/lib >> /etc/ld.so.conf.d/BerkeleyDB.conf
[debian]# ldconfig
[debian]# exit

 これでパスが通ってる「はず」なので、もう一度configureを実行してみます.

[??@debian]# openldap-2.4.8/configure --prefix=/usr/local/stow/openldap
Configuring OpenLDAP 2.4.8-Release ...
[中略]
checking for db.h... yes
checking for Berkeley DB major version... 4
checking for Berkeley DB minor version... 6
checking for Berkeley DB link (-ldb-4.6)... yes
checking for Berkeley DB version match... yes
checking for Berkeley DB thread support... yes
checking Berkeley DB version for BDB/HDB backends... yes
[中略]
Making servers/slapd/backends.c
Add config ...
Add ldif ...
Add monitor ...
Add bdb ...
Add hdb ...
Add relay ...
Making servers/slapd/overlays/statover.c
Add seqmod ...
Add syncprov ...
Please run "make depend" to build dependencies
[??@debian]# make depend
[??@debian]# make
[??@debian]# su root -c 'make install'
[??@debian]# cd /usr/local/stow
[??@debian]# su root -c 'stow openldap'


 はい、OKそうです…実際に動くかは試してませんがw
 まぁ、ここまでくればなんとかなりそうです.

 それにしても、OpenLDAPを動かすのって結構面倒です.
 今回は素で入れてますが、実際にはオプションなんか指定する必要があるはずですので、その辺の調査も必要ですし.

※本文修正3回以上 orz

Debian4.0(etch)を入れてみた.

 先日Debian3.1(sarge)を入れた訳ですが、Debian4.0(etch)のnetinstall版CDを知人から入手した(相変わらずライタブルなドライブが壊れてて自分じゃ書き込めない orz)ので、『インストールしただけのSargeを消して』etchをインストールしましたw
 まぁ、思い切り一年以上前にリリースされたOSなので、今さらかいっ!と言う感じがするのは気づかなかった事にします.

 何やらインストール時にGUIな環境で出来るという話だったのですが、自宅の古物商で取り扱ってそうなPCではGUIがこけてダメでした.
 諦めてテキストインストールで続行しましたが、インストールプロセスが結構シンプルになった様で、質問(設定)項目も少なくなってました.



 おお、何か小綺麗になりましたよ、全体的にw
 ただ、Gnomeのせいかウィンドウマネージャが変わったのか知りませんが、多少デスクトップ環境の動作が『もっさり』しています.
 …Pen3 550MHzのPCだから仕方ないんですけど orz

 何より驚いたのが「フォントが綺麗になっている」点です.
 どうも平仮名の部分を見ると「M+ Fonts」と同じ様な気がします.
 ちょっと検索してみようか……ヨクワカラナカッタノデナカッタコトニ.

 今までと違いデフォルトフォントでも余り気にならないので、一応「M+ と IPAフォントの合成フォント」をインストールしましたけど、このままいけそうです.

2008年3月30日日曜日

Debianで日本語入力環境+フォント設定.

 OpenLDAPを色々といじろうと思い、Debian(何故か今さらSarge[=ver 3.1])をインストール.
 以前Tracのメモ書いた時にインストールしましたが、Ubuntuを上書きしてしまったので、再インストールと言う事に.

 で、ついでにDebianについて↓を参考に基本的な所から勉強.

 Debianリファレンス

 こんな親切なサイトがあるなら、最初から見ておけばよかった orz

 これでようやく dpkg/dselect/apt/aptitude について「なんとなく」理解.
 後方互換はいいですが、なんか同じ様な機能で沢山コマンドがあると戸惑います.

 取り合えず日本語入力が出来ない状態だったので(インストール選択が悪かったか?)、uim + uim-anthyをインストール.
[??@debian]# aptitude install uim uim-anthy stow
 ※ついでに「Stow」も入れたりしましたw

 念のため再起動をかまします.
 IM用のツールバーらしきものが見当たらなかったので、調べてみると「uim-toolbar-gtk」と言うものを起動するらしい.
[??@debian]# uim-toolbar-gtk &



 おお、これでなんとなく様になりました(※ツールバーは右上).
 常時起動するのであれば、Gnomeメニューの「アプリケーション」→「デスクトップの設定」→「拡張設定」→「セッション」で自動起動設定する事になるかと思います.

 で、フォントがアレなのでスクリーンショットの通り、M+IPAフォントを導入です.

 M+ と IPAフォントの合成フォント

 基本的にはFedoraとほとんど変わらないんですが、DebianではFontの管理を「Defoma (Debian Font Manager)」と言うもので管理する様で、その点だけ作業が異なりました.

[??@debian]# tar xvjf mixfont-mplus-ipa-TrueType-20060520.tar.bz2
[??@debian]# cd opfc-ModuleHP-1.1.1_withIPAFonts_and_Mplus/fonts
[??@debian]# mkdir /usr/share/fonts/truetype/M+IPA
[??@debian]# cp M+* /usr/share/fonts/truetype/M+IPA/
[??@debian]# cd /etc/defoma/hints
[??@debian]# defoma-hints truetype /usr/share/fonts/truetype/M+IPA/*.ttf > M+IPA.hints
[??@debian]# defoma-font -td register-all M+IPA.hints
[??@debian]# mkfontdir
[??@debian]# mkfontscale
 ※fc-cacheが必要かも

 あ〜気づいたらOpenLDAPいじる前にこんな時間だよ…
 Debianの勉強だけで終わったじゃない orz

 元々OpenLDAP for Win32で勉強再開しようと思っていただけに、余計な時間をくってしまいましたが、まぁDebianの勉強が出来たという事でOKとしましょう.
 それにしても、Debianをnetinstallすると余裕で2時間近く時間がかかります(PCの性能が酷く古いのも手伝ってますが).
 年々肥大化するLinuxも考え物ですよね.
 正直Windows Server 2003の方がCD1枚30分前後でインストールが済んでしまいますからねぇ.

2008年3月19日水曜日

Stow.

 と言う便利で素敵なソフトウェアがあるらしい.

 不要なパッケージを完全に削除できるインストーラー GNU Stow

 全然知りませんでした orz
 いつまで経っても素人全開です.はい.

 気を取り直して記事を見る限り、私が求めているものにかなり近い!
  1. パッケージだとオプションの自由度が低いし、かと言ってわざわざパッケージをリビルドするのは面倒
  2. ソースだと自由度が高いけど、完全に削除するのが面倒
  3. インストール方法をパッケージとソースの両方で併用していると、プログラム間の相互連携に問題がおこる場合がある

 と言う問題を一挙に解決!!

 …ただ、標準のディレクトリじゃなくて、別のディレクトリ(この場合Stow用のディレクトリ配下)にインストールすると、他のプログラムと連携とれなくなる場合がある気がしないでもない(ほぼ3番解決してないじゃない orz).

 まぁ、手動でパス通せばいいだけか…

 取り敢えず、Stowを試す前に2ヶ月以上放置している自宅Linux機のアップデートしないといけません.
 と言うか、地獄期間を過ぎた筈なのに何故か明日も仕事 orz
 9日/16日(日曜)も密かに出社済み orz
 そろそろ体にガタが来そうな今日この頃.

2007年6月10日日曜日

Tracのマルチプロジェクト管理用Plugin - TraM.

この概要は表示できません。投稿を閲覧するには ここをクリック してください。

2007年6月3日日曜日

Fedora7リリース.

数日前の話になりますが、Fedora7が正式リリース.

Fedora7からは、通常版のインストールイメージがDVD化されています.
つまり、今まではCD5枚分(レスキュー除く)のイメージが必要でしたが、今回からはDVDイメージ1枚分でOK!と言うことです.
…DVD-Rドライブもってない私はどうすれば? orz
と言う事で、貧乏マックスなlightmaterialはおとなしくLiveCD版をダウンロード.
LiveCD版なら普通にCDイメージですし、(会社の)CD-R/RWドライブを使えば焼けますので.
本当はダメなんですけどねw

LiveCD版には更にGnome版/KDE版が揃ってます.
この辺は好みの問題ですが、最近Xfceが気に入っている私としては、Xfce版も用意してもらいたかった所です.

 LiveCD起動直後はこんな感じです.
 ネットワーク接続通知が出ているのは、単にLANケーブルをルータに差し忘れていたからですw
 印象的には「何も変わってないじゃん」と言うのが第一印象.
 グラフィックはVistaに倣ってか、GDM/KDMともにOpacity的な処理がされていますが、それ以外はパッと見特にFC6と変わっていません.

 もちろん内部的にはリポジトリの統合やら、導入環境のバージョンアップ等々あるんですけど.

 それでも劇的な変化というのはありません.
 LiveCDとしての特徴は、以前書いたUbuntuと同様に、デスクトップにHDDへインストールするためのショートカットが用意されている点、デフォルトでは(当然)英語で起動するので、毎回毎回languageにJapanese選んだ上でキーボード設定を日本語にする必要がある点です.
 正直面倒です orz
 おまけに、lightmaterialのやり方がまずいのか、KDE版では結局日本語に出来ませんでしたw

 名称が変わった事も含め、もう少し劇的な変化があるのかと期待していただけに、少し拍子抜けした感があります.

2007年5月13日日曜日

Trac Web Admin Pluginを入れてみた.

 先日書いた「Tracインストール手順メモ.」の続きです.
 とは言え、かなり間が開いてしまいましたが orz

 今回は
  
 ・Trac Web Admin Plugin [ver 0.1.2dev_r4240](Python2.4版)

 をインストールし、TracのWeb画面上から管理者機能を使える様にしようと思います.

1. setuptoolsをインストール.



 オプション機能のsetuptoolsをインストールします.
 上記の「Tracインストール手順メモ.」を先に見ていれば、ダウンロードからインストール方法まで書いてあります.
 Trac Web Admin Pluginをインストールする前に、このオプション機能をインストールしておかなければいけないようです.



2. Trac Web Admin Pluginをインストール.



 インストールと言っても、手順は非常に簡単です.
 インストールパスは、前回作成したテストプロジェクトのディレクトリである事を前提にしています.

[??@fedora]# cd /sources
mv TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip /usr/local/trac/testprj/plugins/TracWebAdmin-0.1.2dev_r4240-py2.4.egg
[??@fedora]# chown [apache user]:[apache group] TracWebAdmin-0.1.2dev_r4240-py2.4.egg

 実行している事は、Trac Web Admin Pluginの本家サイトに書いてある事だけです.
  1. ダウンロードしたファイルから「.zip」拡張子を削除
  2. プロジェクトの「plugins」ディレクトリにファイルを配置
  3. ファイル権限変更(これは書いてませんが)

 次に、プロジェクト設定ファイルで、Trac Web Admin Pluginを有効にします.

[??@fedora]# vi /usr/local/trac/testprj/conf/trac.ini
…[中略]…
[components]
webadmin.* = enable

 設定ファイル中に[components]セクションが無い場合は、適切な場所に追記します.
 この設定方法は、Tracのマニュアル(TracGuid)に記載してあります.

 さて、インストールは完了しましたが、これだけでTrac Web Admin Pluginが使える訳ではありません.
 ちゃんとユーザー設定、パーミッション設定をする必要があります.



3. ユーザー設定.



 前回のインストール手順メモでは、ごく簡単に(と言うか概要のみ)しか触れていませんでしたが、Trac用のユーザー設定を行います.

[??@fedora]# vi /usr/local/apache2/conf/extra/httpd-trac.conf
 # Tracの設定項目は省略. 前回分参照.
 <LocationMatch "/trac/[^/]+/login">
  AuthType Basic
  AuthName "Test Project"
  AuthUserFile /usr/local/trac/testprj/.htpasswd
  Require valid-user
 </LocationMatch>

 「AuthUserFile」は好みのパスを指定します.
 今回は分かり易い様に、Tracのテストプロジェクト内に「.htpasswd」と言うファイルを作成する事にしました.
 そして、実際に「.htpasswd」(要するに、普通にApacheでパスワード認証する場合と同じファイル)を生成します.

[??@fedora]# htpasswd -c -b /usr/local/trac/testprj [user name] [password]
 ※当然[user name]と[password]を自分の環境にあわせて書き換えます.

 これでユーザー設定が完了しました.
 続いて、Tracプロジェクトのパーミッション設定を行います.



3. パーミッション設定.



 Trac Web Admin Pluginはその名前の通り、Web上からAdministrator的な機能を実行する為のプラグインですので、設定したユーザーがTrac上のAdministrator権限を持っていなければいけません.
 先ほど作成したユーザーに、「TRAC_ADMIN」と言うAdministrator権限を付与します.

[??@fedora]# trac-admin /usr/local/trac/testprj permission add [user name] TRAC_ADMIN

 後は実際に使ってみるだけです.



4. Trac Web Admin Pluginを使う.



 まず、Tracからログインします.
 Tracのトップ画面標示後、右上にある「ログイン」から認証処理を実行します.
 当然、htpasswdで作成したユーザー名、パスワードを入力します.

 そうすると、画面上にユーザー名が表示され(ここまでは標準機能のログイン)、メニューバー(?)に「Admin」ボタンが追加されます.

 環境によっては(?)、認証時に以下の様なエラーが発生するかもしれません.

Traceback (most recent call last):
…[中略]…
The following error occurred while trying to extract file(s) to the Python egg
cache:

[Errno 13] Permission denied: '/root/.python-eggs'

The Python egg cache directory is currently set to:

/root/.python-eggs

Perhaps your account does not have write access to this directory? You can
change the cache directory by setting the PYTHON_EGG_CACHE environment
variable to point to an accessible directory.


 要するに、キャッシュファイルをrootディレクトリに作成しようとしてエラーが発生しているので、アクセス可能なディレクトリを指定して下さいよ、と言う事でしょう.
 この場合、↑の指示に従って、Apacheの設定ファイルに変更を加えます.

[??@fedora]# vi /usr/local/apache2/conf/extra/httpd-trac.conf
 <Location /trac>
  SetHandler mod_python
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir /usr/local/trac
  PythonOption TracUriRoot /trac
  SetEnv PYTHON_EGG_CACHE /usr/local/trac/testprj/.python_eggs
  #↑この1行を追記
 </Location>
 # 以下はパスワード制限する場合に必要.
 <LocationMatch "/trac/[^/]+/login">
  AuthType Basic
  AuthName "Test Project"
  AuthUserFile /usr/local/trac/testprj/.htpasswd
  Require valid-user
 </LocationMatch>

 設定に誤りが無ければ、これで正常にログインできるかと思います.

 Trac Web Admin Pluginの各機能は、この「Admin」ボタンから実行可能です.
 この各種機能を使う事で、上述したtrac-adminを使用したパーミッション設定などをWeb画面上から設定可能になります.
 おお、何とも便利!!

 …ただ、これ公開用で使うのはちょっと恐い気がしないでも無いですね.
 どうなんだろう?
 まぁ、私はローカルでしか使わないので問題ありませんが.

入れ直したUbuntu 7.04.

 先週gnome-terminalがこける、と書きましたが、Ubuntuを入れ直した所、普通に使えました.
 どうやらアップデート中に固まったのが悪かった様です.

 何だかなぁ…
 まぁ、その後は何事もなかったかの様に、普通に使えているので問題無いですが.

 その後使っていて気付いたのが、完全にDesktop向けの用途に機能が絞られている、と言う事です.
 まぁ、名前からして

  日本語ローカライズ版Desktop CD

 なんですから、当然といえば当然かw
 どの辺がDesktop向けかと言うと、デフォルトの状態ではアップデート一覧に、サーバー関係のソフトウェアがまったくリストアップされません.
 Apache-Httpdも(見逃していなければ)リストアップされません.
 その辺はサーバー版使いなさい、と.
 でもサーバー版の日本語ローカライズは用意されていない訳です.
 まぁ、英語でも問題無いですし、自分で日本語環境突っ込めばいい話なのかもしれませんが、そんな事をしていたらせっかくの簡易な環境が、一気に他のディストリビューションより面倒になってしまいます.

 要するにDesktop用途に特化したディストリビューションだと考える方が賢明?
 もう少し使ってみようと思います.
 全体的な使い勝手は素晴らしいと思うので.

 飽きたらDebian 4.0でも入れてみようか.

2007年5月5日土曜日

gnome-terminalがこける on Ubuntu 7.04.

 駄目だこりゃ.
 さんざん褒めておいて何ですが…Terminal起動出来ないと何も出来ませんからぁぁ! orz

 意味分かりません.
 何故かgnome-terminal(要するに端末)が起動しません.
 正確に言うと、起動後(画面が表示される前)にこけます.

 オマケにgnome-terminalが駄目ならKterm Konsole入れよう!と思ったら、「アプリケーションの追加と削除」でエラーが出ます.
E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem.
E: _cache->open() failed, please report.

 …仕方なし(端末起動出来ないから).
 仮想端末(Ctrl+Alt+F1〜F6、戻る時はCtrl+Alt+F7)から原因を調べようと、仮想端末起動.
 んが、当然日本語表示出来ず、エラー表示に何が書いてあるか分かりません(文字化け).
 konするも「インストールされてねーよ!」と怒られつつ、親切にも「apt-getしてね」と書いてあったので、指示に従って

[??@ubuntu]# sudo apt-get install kon2
[??@ubuntu]# sudo dpkg --configure -a
 ※Ubuntuはデフォルトではrootでログイン出来ません(正しいあり方ですが).

 konのインストール時には文字化けのオンパレードで「Y/n」の質問され、たぶんインストールしますか?と言う事だろうと、「Y」と入力し無事インストール完了.
 って、パッケージ管理はAptだったのねw
 そして仮想端末を抜け、おもむろに「アプリケーションの追加と削除」からKonsoleを選択すると普通にインストール完了.
 ふーん.
 kon入ってないと絶望的だった訳で.
 たまたま昔RedHat9使っててkonの存在知ってたから良いような物の…
 私の様な素人にはそんな事分かりませんって.

 気を取直して、Konsole上からgnome-terminalを起動するも…エラーメッセージも無くこける!
 一応エラーメッセージは出る事は出るけど「Bus error」としか出ません orz
 おかしいなぁ.
 何だろう??
 Ubuntuのフォーラム見ても、同じような現象に対する質問が見当たりません.

 …こりゃ入れ直しですね orz

2007年5月4日金曜日

Ubuntu 7.04 on HDD.

 HDDから起動しました.
 …これはLinux(GUI上)の宿命なのか??と言うアップデートが固まる現象はさておき、何事もなかったかのように起動してくれました.

 素敵です.
 報道ステーションでの市川さんの微笑みくらい素敵です. > 意味不明


 Ubuntuのパッケージマネージャが何なのかすら知らずにインストールしてたりしますが(…Apt?…違うかw)、Fedoraから乗り換えたくなるくらいの勢いです.
 まぁ、実際はまだ乗り換えたりしませんけど.
 Fedora7も試してませんし.

 それにしても、インストール完了までが早かった.
 今までのLinuxのインストールの中で最短かも.

Ubuntu 7.04 Feisty Fawn.

 ようやく、半月に及ぶ連続仕事地獄から開放され、カレンダー通りの休みを取る事が出来ました.
 休みって素晴らしい!!!
 …と言うどーでもいい話は置いておき.

 今回の書き込みは前から執拗にインストールしたいと書いていたUbuntu(Linux)からの書き込みです.

 今まで主にと言うか99%のRedHat系Linuxおよび1%のTurboLiuxで構成されて来たLinux経験ですが、先日Debianを初めて触り、そのシンプルな素晴らしさ、Aptの素晴らしさに驚愕しました.
 そして今日は、Ubuntuの「そこまで親切なのか!」と言う『Easy』な素晴らしさに感動すら覚えました.


 Ubuntuの日本語ローカライズ版CD-ROMは2種類用意されています.
 今回試したのは通常版(グラフィカル版).
 CD-ROMからインストーラを起動しようと思ったら、想像に反してライブCD状態で起動(CD-ROMからOSを起動するKnoppixの様なOS、つまりHDDが無くても、Windowsが入っているPCでもOKですよ、と言うやつです).
 「あれ?ダウンロードするisoイメージの間違えたかな?」と思っていたら、デスクトップに「インストール」と言うアイコンが.
 あーなる程ね.
 こりゃ便利だ.
 ライブCD状態で最初に起動して、いろいろ触って気に入ったらインストール出来ますよ、と.
 Knoppixも同じ様な事が出来ますが、Knoppixより便利(簡単)かも??

 そして、更に初心者(私も含め)にやさしい「半Windowsライク」なGUI.
 起動画面すらどことなくWindowsライク(初心者にとって意味不明な起動プロセスの表示もほとんどありません. 最初の数工程を除き、Windowsの様なプログレスバーが表示されます).
 起動後のGnomeのテーマもWindowsライク.

 初心者には取っ付きやすいですねぇ.
 それに、日本語ローカライズ版がちゃんと用意されているだけあり、Debianの様に日本語を使うのにちょっとした手間をかける必要もなく、最初からSCIM-AnthyのLinux最強日本語入力環境が利用できます.

 うーん.
 なんだろう、このイージーな感覚は.
 確かにFedoraもCDを5枚用意したり、ライブCD版を探してダウンロードする労力が苦にならないなら、ほぼ同程度のEasyなLinuxではありますが、Ubuntuの場合は群を抜いてEasyと言うかイージーと言うかCD1枚でオールオーケー的な素晴らしさがあります.
 と書いている今、実は「UbuntuでHDDにUbuntu自身をインストールしながらブログを書いて」いますw
 これって今までに無かった感覚かも.
 私の中では、OSって(Windowsも含め)インストール中はただ終わるのを待っているだけ、と言うのが当たり前でしたから、インストール中にブログ書いたりなんだり出来る環境が凄く新鮮!
 ってまぁ、私が他にそういったOSを触った事が無いだけかもしれませんが orz

 あ、インストール終わったようです.
 再起動してHDDから起動でOKかな?

2007年4月15日日曜日

Tracインストール手順メモ.

 と言う事で、無事TracをApache上で動かす事も出来ましたので、Tracのインストール方法(ソースベース)をメモ.

1. Install環境の確認.



 OS … Fedora Core6(Linux)
     Ubuntu 6.10 Desktop 日本語版(Linux)
     Debian GNU/Linux 3.1 r5(Linux)
  ※FCは必要な環境のいくつかが最初からRPMで入っているケースが多いので、
   2つのディストリビューションで試してみました.
  ※本当はUbuntuで試したかったんですが、何せCD-Rドライブがいかれている
   ので諦めました orz

 今回の主な環境(Python以外ソースから)
  ・Trac … Trac 0.10.3.1日本語版
  ・Webサーバ … Apache
    ※Apacheに関しての記述を飛ばせばtracdでもOK.
  ・データベース … SQLite
  ・バージョン管理 … Subversion

 今回は以上の環境でインストールしてみます.
 他の環境では以下のサイトが役に立つでしょう.

  【Trac全般】
   ・discypus.jp
    ※メニューの「Bug Tracking」から
  【Windows】
   ・探し中…
  【Linux】
   ・パッケージ(RPM)でインストール[導入が楽なのでオススメ]
     ・kazfの日記
   ・積み重ねた日々
  【その他】
   ・探し中…



2. 必要なファイルのダウンロード.



 Tracを動かす場合、以下の環境が必要になります.
 括弧内はlightmaterialが試したバージョンです.
 ※今回はPython以外すべてソースから入れました.
 ・Trac日本語版 [ver 0.10.3.1-ja-1]
 ・Python [ver 2.4.4 / 2.3.5(Debian)]
   → Pythonがデフォルトで入っていない環境を再現出来なかったので、インストール方法は割愛.
 ・SQLite [ver 3.3.6]
 ・PySQLite [ver 2.3.3]
 ・Apache [ver 2.2.4]
 ・mod_python [ver 3.3.1]
 ・Subversion [ver 1.4.3]
   → Python bindingsが有効化(導入)されている必要がある
 ・ClearSilver [ver 0.10.4]

 次の環境はオプション.

 ・setuptools [ver -.-.-]
   → インストールしておいた方がいいと思います.
 ・Trac Web Admin Plugin [ver 0.1.2dev_r4240](Python2.4版)
   ※↑2007-05-13確認
   → trac-adminでの操作をWeb画面上から操作可能にするPlugin.
 ・TraM [ver 0.1]
   ※↑2007-06-10追記
   → 複数プロジェクトの管理をサポートするPlugin.

 以下未確認オプション.
 これからインストールしてみます.

 ・docutils [ver ?]

 今回はこれらのファイル(未確認オプション除く)を
  /sources
 以下に保存したと言う前提で書きます.
 環境に応じ、読みかえる必要があります.



3. Pythonをインストール.



 まぁ、大抵の環境ではPythonが既に導入されているので、このセクションは不要だと思います.
 と言いますか、Pythonが入っていない環境を再現できませんでしたw
 ちなみに、readmeなんかには「rpm版の場合はpython-develとpython-xmlが必要かもね」的な事が書いてありますが、python-xmlを探す事が出来ませんでした(今の所無くても問題ありませんが、何かの拍子に要求されるかも)ので、今回はメモをパス.

 Pythonが導入されていれば、以下のコマンドで確認(起動)できます.

[??@fedora]# python
Python 2.x.x[インストールバージョン] (#1 [日付])
[GCC [GCCバージョン]] on linux2
Type "help". "copyright". "credits" or "license" for more information.
>>>

 終了する場合は[Ctrl + D]で終了出来ます.
 ちなみに「python2」でも「python2.4」でも起動出来ます.
 おそらくpython1.x系とpython2.x系を同居させた環境の為かと思います.
 ※「python2.4」は単体ファイルですが、「python2」は「python」へのシンボリックリンクです.

 ここで上手く行かない場合は…Python日本ユーザー会のサイトを確認して下さい.



4. SQLiteをインストール.



 lightmaterialのFC6環境では、最初からRPMで入っていました.
 何かの依存で入ったのかもしれませんが、最初から入っていたらこのセクションは不要です.

[??@fedora]# cd /sources
tar xvzf sqlite-3.3.15.tar.gz
cd sqlite-3.3.15
./configure
make; make install

 正常にインストールされていれば

 sqlite3
 または
 /usr/bin/sqlite3
 または
 /usr/local/bin/sqlite3

 で起動できます.



5. PySQLiteをインストール.



 PySQLiteはPythonからSQLiteを扱えるようにするアプリケーションらしい.
 PySQLiteをインストールするには、Pythonを使います.

[??@fedora]# cd /sources/
tar xvzf pysqlite-2.3.3.tar.gz
cd pysqlite-2.3.3
python ./setup.py install

 ここで以下の様なエラーが出た場合は、yumかaptitudeで「python-devel」をインストールします.

unable to open /usr/lib/python2.x/config/Makefile

 yumは分かるとして、Debianに慣れていないので一応メモ.

[??@fedora]# aptitude install python-dev

 ※rpmは「python-devel」ですが、Debianは「python-dev」

 依存関係を調べてインストールしてくれます(yumも基本的に同じです).

[??@fedora]# yum install python-devel

 リポジトリの設定によっては、yumで拾ってくれませんので、設定変更するか、自分でpython-develをダウンロードし(この辺から)、rpmでインストールします.

[??@fedora]# rpm -ihv python-devel-2.4.4-1.fc6.i386.rpm

 たぶんpython-develをインストールした後は、問題なくsetup.pyでインストール出来るでしょう.



6. Apacheをインストール.


[tracdで動かす場合は不要]

 他のサイトに山ほど情報が載っていますので、次項以降も含め、今回は単にTracをテストで動かす事を目的としたインストール、設定を行います.
 ※セキュリティに関わる事も飛ばして書いていますので注意して下さい.

[??@fedora]# cd /sources
tar xvzf httpd-2.2.4.tar.gz
cd httpd-2.2.4
./configure --enable-so --with-included-apr --enable-dav
make; make install

 ※WebDAVを有効にしておかないと、最終段階でエラーが出ました.

 エラーが出なければ、

 /usr/local/apache2/conf/httpd.conf

 ファイルを標準的な内容で編集します.
 編集後、下記コマンドで起動確認します.

[??@fedora]# /usr/local/apache2/bin/apachectl start

 ここで以下の様なエラーメッセージが出るかもしれません.

/usr/local/apache2/bin/httpd: error while Loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file or directory

 これはパスが不正でDSOモジュールとしてSQLiteが読み込めてないと言う事ですので、「libsqlite3.so.0(本体 libsqlite3.so.0.8.6)」のシンボリックリンクを「/usr/lib」に置いてあげます.

[??@fedora]# ln -s /usr/local/lib/libsqlite3.so.0.8.6 /usr/lib/libsqlite3.so.0

 Apacheを起動して何もエラーメッセージが出なければ、

 http://localhost

 にアクセスする事で、Apacheが起動している事を確認できるでしょう.



7. mod_pythonをインストール.


[tracdで動かす場合は不要? - 要確認]

 Apacheが動いたら、次はmod_pythonをインストールします.

[??@fedora]# cd /sources
tar xvzf mod_python-3.3.1.tgz
cd mod_python-3.3.1
./configure --with-apxs=/usr/local/apache2/bin/apxs
make; make install

 Pythonが見付からない様であれば、「--with-python=/[path to python]」(ソースからインストールした場合のデフォルトprefixでは「--with-python=/usr/local/lib/python2.4」、RPMパッケージなら「/usr/lib/python2.4」)を指定すると上手く行くようです.
 インストールが終わったら、Apacheの設定ファイルにmod_pythonに関する記述を追記します.

[??@fedora]# vi /usr/local/apache2/conf/httpd.conf
 LoadModule python_module /usr/local/apache2/modules/mod_python.so

 ※上記パスはmake install時にmod_pythonが以下の様に明示してくれます
  Now don't forget to edit your main config and add
   LoadModule python_module /usr/local/apache2/modules/mod_python.so

 そして、Apacheを再起動し、エラーが出ない事を確認します.

[??@fedora]# /usr/local/apache2/bin/apachectl restart

 記述内容に誤りがある場合や、正常にインストール出来ていなかった場合には、ここでエラーが出ます.
 設定内容を見直しましょう.

 次にテストファイル(*.py)を動かしてみます.
 ここでは、日本Pythonユーザー会のサンプルに沿って(多少変更あり)設置してみます.
 まず、Apacheの設定ファイルを編集します.
 Apache2.2.x系ではconfigファイルを機能毎に分離する事が推奨されていますので、以下の様にmod_python用の設定ファイルを作成します.

[??@fedora]# vi /usr/local/apache2/conf/extra/httpd-python.conf
 <Directory /[path to DocumentRoot]/pythontest>
  AddHandler mod_python .py
  PythonHandler testfile
  PythonDebug On
 </Directory>

 Apacheのhttpd.confにIncludeを追記します.

[??@fedora]# vi /usr/local/apache2/conf/httpd.conf
Include conf/extra/httpd-python.conf

 次に、実際にテストファイルを設置します.

[??@fedora]# mkdir /[path to DocumentRoot]/pythontest
vi /[path to DocumentRoot]/pythontest/testfile.py
from mod_python import apache

def handler(req):
    req.write("Hello World!")
    return apache.OK

 ※Pythonはインデントで構文を構築しています.
  インデント位置は保持する必要があります.

 ここまで設定出来たら、実際にmod_pythonが動作しているか確認します.

 http://localhost/pythontest/testfile.py

 にアクセスすると、

 Hello World!

 と表示される事でしょう.
 上手く動作している事が確認できたら、テストファイルは削除し、httpd.confに追記した「Include conf/extra/httpd-python.conf」をコメントアウト(または削除)します.



8. Subversionをインストール.



 Subversionが何であるかの説明は割愛します(一言で言えばCVSの様なバージョン管理システムです).
 検索すると、色々と詳しい事が書いてあるサイトを見つける事が出来ますし.

[??@fedora]# cd /sources
tar xvzf subversion-1.4.3.tar.gz
cd subversion-1.4.3
./configure
make; make install

 Debianでzlibが導入されていない場合、configure時に以下の様なエラーが出ます.

configure: error: subversion requires zlib

 …面倒なので時間が無いのでzlibはソースじゃなくてaptitudeでインストールしました.

[??@fedora]# aptitude install zlib1g-dev

 これで素のDebianでもconfigureが成功するかと思います.
 以下のコマンドで、正常にインストール出来ているかを確認します.

[??@fedora]# svn help
…[使用方法に関してだらだらと]…

 正常にインストール出来ている様であれば、Apacheが正常に起動するか確認します.
 エラーメッセージが表示される場合は「Apacheのconfigure時にAPR-Utilでエラーが出る.」を確認.

 本来、この後はリポジトリの作成、設定等々ありますが、必要最低限のみ記載します.

 svnadmin create --fs-type fsfs [path to repository]
 例として今回は

[??@fedora]# svnadmin create --fs-type fsfs /usr/local/svn/repos

 としてリポジトリを作成してみました.



9. Python bindingsをインストール.



 SubversionとPythonを連系させる為、SubversionのPython bindingsを導入します.
 これは、別途ファイルを用意する必要は無く(パッケージ版は分かりませんが…)、先にダウンロードしたSubversionのソースファイルの中にあります.

[??@fedora]# cd /sources/subversion-1.4.3
make swig-py
make install-swig-py

 正常にインストールが完了した場合、以下のファイルが生成されています.

 /usr/local/lib/svn-python

 また、

 /usr/lib/python2.4/site-packages/svn-python.pth

 が存在するか確認し、存在しない場合は

[??@fedora]# echo /usr/local/lib/svn-python > /usr/lib/python2.4/site-packages/svn-python.pth

 としてパスを通します.
 ※↑は「積み重ねた日々」を参照しました.



10. ClearSilverをインストール.



 テンプレートエンジンらしいですが、ClearSilverについてはよく分かりません.
 …まぁ、他のソフトウェアについても良く分かっていないんですが orz

 気をとり直して

[??@fedora]# cd /sources
tar xvzf clearsilver-0.10.4.tar.gz
cd clearsilver-0.10.4
./configure
make; make install

 Apacheのパスが見付からないとエラーが出る場合は、「--with-apache=/[path to Apache2]」と指定すると良いでしょう.
 ただ、エラーメッセージが出なかったからと言って、ClearSilverが正常にインストールできたかどうか確認する方法をlightmaterialは知りません.
 Tracをインストールし、正常に起動(アクセス)できたか否かで判断しています.



11. Tracをインストール.



 ようやくTracの出番ですw

[??@fedora]# cd /sources
unzip trac-0.10.3.1-ja-1.zip
cd trac-0.10.3.1-ja-1
python ./setup.py install

 ZIP圧縮ですので、unzipが必要です.
 これで「取り敢えずの」インストール完了.
 と、ここでワンクッション.
 今回、日本語版のTracをインストールした訳ですが、Trac0.10.3.1日本語版(trac-0.10.3.1-ja-1.zip)には少し問題があります.
 trac-adminとtracdの改行コードがCrLfであると言う事です.
 このまま起動しようとしても

[??@fedora]# trac-admin
 : そのようなファイルやディレクトリはありません
 [または日本語コンソール環境外であれば…]
 : No such file or directory

 と言うエラーが返ってきます.

 なぜそうなっているのか(敢えてCrLfにしているのか、意図せずCrLfになってしまったのか)は知りませんが、下記の方法でCrLfからLf改行に変更します.

[??@fedora]# cd path/to/trac/bin
※デフォルトprefixで入れているなら「/usr/bin」
tr -d "\r" < trac-admin > ta
mv ta trac-admin
tr -d "\r" < tracd > td
mv td tracd

 ※この操作はdiscypusさんに教えていただいたものです.
  詳しくは↓こちらから

  [エラー] trac-0.10.3.1-ja-1 の trac-admin, tracd の改行コードを修正

 上記操作が終わったら、下記のコマンドで正しくインストールされたかを確認します.

[??@fedora]# trac-admin
 trac-admin - The Trac Administration Console 0.10.3.1
 …[以下使用方法に関してだらだらと]…

 ここまで来たら後一歩です.



12. Tracの設定.



 Tracを動作させる為の各種設定を行います.

 まず、Trac用のディレクトリを作成します.
 これは好みのパスで問題無いでしょう(ApacheのDocumentRoot配下除く).
 今回は「testprj」と言うプロジェクト用のディレクトリも含め、

 /usr/local/trac/testprj

 と言うディレクトリを作成してみます(「/var/trac」などでもいいと思います).

[??@fedora]# mkdir -p /usr/local/trac/testprj

 作成したディレクトリに、Trac用のファイルを作成します.

[??@fedora]# trac-admin /usr/local/trac/testprj initenv

 # 以下、「>」の右側はテストで作成した環境.
 # 空白の場合はデフォルト値(そのままEnter)
 Project Name [My Project]> Test Project
 Database connection string [sqlite:db/trac.db]>
 Repository type [svn]>
 Path to repository [/path/to/repos]> /usr/local/svn/repos
 Templates directory [/usr/share/trac/templates]>

 作成した後は、Apacheから操作出来る様に、所有者を変更してあげます.

[??@fedora]# chown -R [apacheユーザー]:[apacheグループ] /usr/local/trac/testprj

 尚、Tracのドキュメントによると、ここでSELinuxが有効になっている環境では、許可設定を変更してあげる必要があるとの事です(が、何故かlightmaterialの環境ではSELinuxを有効にしているにも関わらず、特にPermissionエラーは出ませんでした).

[??@fedora]# chcon -R -h -t httpd_sys_content_t PATH_TO_REPOSITORY

 次にApacheのTrac用設定を行います(tracdで動かす場合は不要です).
 Apache2.2.x系ではconfigファイルを機能毎に分離する事が推奨されていますので、以下の様にTrac用の設定ファイルを作成します.

[??@fedora]# vi /usr/local/apache2/conf/extra/httpd-trac.conf
 <Location /trac>
  SetHandler mod_python
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir /usr/local/trac
  PythonOption TracUriRoot /trac
 </Location>
 # 以下はパスワード制限する場合に必要.
 <LocationMatch "/trac/[^/]+/login">
  AuthType Basic
  AuthName "TEST"
  AuthUserFile /usr/local/trac/.htpasswd
  Require valid-user
 </LocationMatch>

 Trac用の設定ファイルを作成したら、その設定ファイルをhttpd.conf本体からインクルードする為の記述を追記します.

 Include extra/httpd-trac.conf
 ※適当な場所に記述します.分かり易く、他の設定ファイルをIncludeしている場所の前後に書く方が良いかと思います.

 そしてApacheを再起動.

[??@fedora]# /usr/local/apache2/bin/apachectl restart

 エラーが出なければ無事Tracの設定は完了です.

 tracdで動かすなら

[??@fedora]# tracd --port [適切なポート] /usr/local/trac/testprj

 でtracdを起動します.



13. オプション機能をインストール.



 必要に応じて、オプション機能をインストールします.

 ・setuptools
[??@fedora]# cd /sources
python ez_setup.py


 ・Trac Web Admin Plugin
   2007-05-13別記しました.
   →「Trac Web Admin Pluginを入れてみた.

 ・TraM
   2007-06-10別記しました.
   →「Tracのマルチプロジェクト管理用Plugin - TraM.

 @todo 他のオプション機能については、これから調査.

 これでやっと全ての準備が整いました!!!



14. Tracを使う.



 Apacheなら
  http://localhost/trac/testprj
 へアクセス.
 tracdなら
  http://localhost:[適切なポート]/trac/testprj
 へアクセスしてみると…


 これまでの道のりで誤りがなければTracの素敵な画面が表示されます!
 Debianの場合、Python上の日本語エンコードの問題で、以下のエラーが発生するかもしれません.

LookupError: unknown encoding: EUC-JP

 この場合、コーデックを入れる必要があります.

[??@fedora]# aptitude install python2.3-japanese-codecs


 後は必要に応じてtracのプロジェクト個別設定ファイル

 /[path to trac project]/conf/trac.ini
 例では
 /usr/local/trac/testprj/conf/trac.ini

 を編集するだけです.

 もしここまででエラーが出たら…どこかの設定やインストールが上手く行っていません orz


 Pythonのエラーメッセージが表示されるのであれば、ApacheのTrac用設定に誤りがある可能性が高いかと思います(ただし、Pythonのエラーメッセージ中にPermission〜とエラーが出ていたら、許可設定、権限設定の問題です).
 単にファイル構成がリストアップされた画面になった場合も(Apacheの設定でIndexesを無効にしていたら出ませんが)、ApacheのTrac用設定(と言うか、Pythoの設定ですが)に誤りがある可能性があります.

 lightmaterialが引っかかったのは、trac-adminの改行コード問題と、ApacheのTrac用設定くらいでしたので、それ以外のトラブルについては分かりませんが、検索すると色々出てきそうな気はします.


 それにしても、本当に挫けそうなほど導入が煩雑です.
 ここまで書いておいて何ですが、正直パッケージで導入する方が数段賢いですw
 少なくとも、私はソースで導入して「なんて馬鹿な事をしてしまったんだぁぁぁぁ〜〜!!! orz」と思いました、はい.

 今日はblog書く事自体に疲れました orz

Debianがエラーでインストール出来ない.

/**
 * 2007-04-15 10:47 追記
 *
 * どうやら、私が何も知らないでやっていたのが悪かった様で.
 * 「APTの設定」で「手動で設定」を選び、
 * deb ftp://ftp.jp.debian.org/debian sarge main contrib non-free
 * とsarge(Debian3.1)を明示的に指定、その後推奨されるセキュリティ
 * アップデートを「キャンセル」する事でインストールを続行出来ました.
 */


 OS入れ替えた時の為にTracのインストールメモをまとめようと思い、古いPC(Pen3 550MHzですw)をひっぱり出してDebian GNU/Linuxをインストール中です.
 本当はUbuntuを入れてみたかったんですが、何しろCD-Rドライブが壊れてやがりますので諦めました orz

 以前も会社でインストールしましたので(すぐ削除しましたが)、特にとまどう事も無く……と行きたかったのですが問題にぶちあたりました.
 ベースシステムの設定・インストール(ネット経由)でエラーが発生します.
 途中でKernelイメージを置き換えると言う様なメッセージが表示され(強制)、置き換える前のイメージを削除するか否かの選択メッセージが.
 ここは残しても削除しても同じで、結局その直後に依存関係エラーで先に進めず.
 うーん…

 Debian 4.0がリリースされた(2007/04/08)関係でしょうか??
 手元にあるCDがVer3.1 r5用のネットインストールCDですので、サーバー上のファイルと整合性が取れなくなっているとか?

 どちらにしても、今日はDebianを触る気満々だったので、かなーりショックです orz

 取り敢えずTracをApache上で動作させる事も出来ましたので、Tracいじりつつ車の洗車でもするかなぁ

2007年4月8日日曜日

Tracを動かしてみた.

 と言ってもtracd(Tracに付属するhttpサーバ)で動かすと言う姑息な手段ですw

 tracdで
[??@fedora]# tracd --port [適切なポート番号] /var/www/html/trac

 として動かしてみました.
 ※今更ながら気付きましたが、正直Trac用のディレクトリ作成パスが不正です orz
  何故なら、今のパス設定だと設定ファイルが丸見えだからw

 Apacheでやるとまだ上手く動きませんので、もう少し設定なり環境(パス等含む)を見直す必要がありますが、それでもTracを動かすのも夢物語では無くなりました.

 軽く各機能を見てみましたが…これは良い!!
 素晴らしいです.
 これだけ充実した環境だと、プロジェクト把握が容易に出来ると思われます.
 そりゃ、これだけ動かす条件が多いのにも関わらず使う人が居る訳ですね.


 因みに、先ほどdiscypusさんのサイトを覗いてみたら、改行コード問題について更に詳細に書いてありました.
 有り難や有り難や.

 [エラー] trac-0.10.3.1-ja-1 の trac-admin, tracd の改行コードを修正

動かないAdobeReader for Linux(on FC6).

 先ほど仕事の関係上、某PDFマニュアルをダウンロードして確認していました.
 …何が悲しくて、休みの日に仕事用のファイルを確認してるんだか orz

 と言う話は置いておき、Fedora Core6(と言うかGnomeかな?)にはEvinceと言うPostScript/PDFビューアがあるので、それを使って閲覧していましたが、動作が軽い代わりに膨大なページ数のPDFを閲覧するには向いてない様なので、本家AdobeReaderをダウンロードする事に.

 Adobe Reader
 ※OS自動認識ページなので、Windowsで開いたらWindows用のダウンロードページになります

 ご丁寧にrpm版まで用意されています.
 さっさと仕事の用事を済ませたかったので、迷わずrpm版をダウンロードしてインストール.

[??@fedora]# rpm -ihv AdobeReader_jpn-7.0.9-1.i386.rpm

 ここまでは依存で引っかかる事も無く、何の問題も無し.
 そして早速インストールしたAdobeReaderでPDFを表示…ん?…ひょう…起動しないし orz
 まったくうんともすんとも言いません.
 それどころか、ずーっとCPU使用率100%の状態ですw
 なんじゃそりゃ?と思いつつ、偶然固まったのかとプロセスをkillして再度Reader起動…はい、だめ〜 orz

 うーん、何だろう?
 GUI上から起動してるので、何らかのエラーが出てても気付かないだけかも、と思い、コンソールから起動してみると

[??@fedora]# /usr/bin/acroread
expr: syntax error
expr: syntax error
expr: syntax error
…[延々と続くエラー]…

 なんじゃそりゃw
 どっかおかしい様です.
 が、どこでエラー出てるのかすら表示してくれてませんし、acroread(スクリプトファイル)を開いてみても、膨大な記述量なので、自力で原因を突き止めるのは不可能.

 仕方ないので100%他力本願で調べてみると↓こんなページを発見.

 http://ubuntuforums.org/archive/index.php/t-221769.html
 ※Ubuntu Linuxのフォーラム

 そこにこんな記述がありました.


[上記フォーラムより抜粋]
Change line 421 in /usr/bin/acroread:
# ↑日本語版7.0.9の場合597行目
old:

echo $mfile| sed 's/libgtk-x11-\([0-9]*\).0.so.0.\([0-9]\)00.\([0-9]*\)\|\(.*\)/\1\2\3/g'

new:

echo $mfile| sed 's/libgtk-x11-\([0-9]*\).0.so.0.\([0-9]\)000.\([0-9]*\)\|\(.*\)/\1\2\3/g'

 GTK周りのファイル命名規則と正規表現に相違があるらしい.
 書いてある通りファイルを編集し、再度AdobeReaderを起動してみると

 まるで何事もなかったかのように無事起動!

 ただ、Ver7.0.9のrpmでインストールしたはずなのに、何故かバージョンが7.0.8と表記されているのは疑問ですがw

動いたtrac-admin.

 先日(と言っても、私の場合週末しかblog管理していませんので、先週の話ですが orz)書いたtrac-adminが動かない問題、lightmaterialが参考にさせてもらったdiscypus.jpの管理人さんと思われる方から、そのものズバリの情報をコメントに頂いて、早速試した所サクッと動きました!!

[??@fedora]# /usr/bin/trac-admin

trac-admin - The Trac Administration Console 0.10.3.1
…[以下コマンドリファレンスがズラズラと]…


 discypusさんのご指摘では、どうやら本来Lf改行になっているべきコード(trac-admin/tracd)がCrLf(要するにSjis用改行)になっていたらしい.

 詳しくは↓こちらを参照.

 trac-0.10.3.1-ja-1 の trac-admin, tracd の改行コードを修正

 と言うか、上の記事の投稿日が「2007-03-15」になってると言う事は、discypusさんのサイトをくまなく読んでいれば、さっさと問題を解決出来たって事ですね orz

 とにかく、神の一言で最低限の部分が動くようになったので、他の所でも引っかからないか確認しつつ設定してみます.

2007年4月1日日曜日

そのようなファイルやディレクトリはありません by trac-admin

/**
* 2007-04-08 22:18 追記.
* この問題は神の一言で解決しました.
* 詳しくは「こちら
*/


 はい、全然駄目ぇ〜 orz

 一通り以下のようにインストールしてみましたが、trac-adminが動いてくれません.

  ・mod_python … ソース
  ・trac … 日本語版ソース
  ・ClearSilver … ソース
  ・PySQLite … ソース
  ・Subversion Python binding … ソース(と言うかsubversionのソースから)

 ソースでインストールする時に何か設定が変だったのか、関連ソフトウェアなりライブラリなりが不足しているのか…

 ためしに以下のようにコマンドを打ってみると…

[??@fedora]# trac-admin /var/www/html/trac initenv

: そのようなファイルやディレクトリはありません


 と来たもんだ orz

 普通、コロンの前に対象のファイル名が記載されて「○○と言うファイルなんてありませんよー」と教えてくれる訳ですが、そのファイル名が空で表示されています.
 と言う事は、trac-adminに記述されている変数なり環境変数に値が入っていないと言う事か?と思い、trac-adminの中身を覗いてみるも、当然の如くPythonで記述されているのでイマイチ意味が分かりません orz

 import sys

 このあたりが悪いのかなぁ?
 今からパッケージでインストールするとなると、ソースでインストールしたファイル全部削除すると言う大仕事になっちゃうしなぁ…せめてmake uninstallに対応していれば…と試すも全滅.
 Tracを動かすのはまだまだ先の話になりそうです orz

問答無用で固まるPC(FC6).

 どうやら、昨日誤ってKernelも自動アップデートしてしまったらしい.
 それが原因なのか、はたまた偶然のタイミングなのか、今朝からFC6と言うかPCが何度も固まってます.

 バチコーンと何の前触れもなく、綺麗に固まります.
 まるで、そこだけ時が止まってしまったかのように…

 一切の行動も信号も受付やしませんので、先ほどから3回ほど強制リセットをかける始末 orz

 おかしいと思ってGrubでブートするKernelを見てみたら、見慣れないKernelバージョンがリストアップされていました…ああ、そう言えば昨日のパッケージアップデータ…やけに時間かかってたよなぁ…OpenOfficeのせいかと思ってたらKernelまでバージョンアップしちゃったかなぁ…酒飲んでバージョンアップなんてするもんじゃ無いなぁ… orz

 まぁ、まだこれが原因とは限りませんが、今のところ最有力候補.
 ただこのPC、もともと怪しいハードで組んであって、そこが原因かも知れない(とは言え、CentOSの時も含めて、固まった事なんて無かった様な気がします…)ので、しばらくはKernelを戻して様子を見る事に.

/**
* 2007-04-08 22:09 追記.
*/
 一応書いておいた方がいいかな…
 デフォルトで起動するKernelを変更するには

 /boot/grub/menu.lst
 か
 /boot/grub/grub.conf
 を編集します.
 ※grub.confがある場合は、大抵menu.lstはgrub.confのシンボリックリンクになっているはずです

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/hda
default=0
# ↑ここの数字を以下のリストの順番に沿って、希望の番号に変える

timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu

# ↓このファイル例で言えばここが「default=0」
title Fedora Core (2.6.20-1.2933.fc6xen)
root (hd0,0)
kernel /xen.gz-2.6.20-1.2933.fc6
module /vmlinuz-2.6.20-1.2933.fc6xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.20-1.2933.fc6xen.img

# ↓このファイル例で言えば、ここが「default=1」
title Fedora Core (2.6.19-1.2911.6.5.fc6xen)
root (hd0,0)
kernel /xen.gz-2.6.19-1.2911.6.5.fc6
module /vmlinuz-2.6.19-1.2911.6.5.fc6xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.19-1.2911.6.5.fc6xen.img

 ※あくまでも上記記述内容は例です. 環境によってまったく内容が異なりますが、基本的に上から「default=」0〜と言う順番になります

mod_python.

 先ほど書いたように、Tracをインストールする事前準備として、Apacheのモジュールに「mod_python」が必要との事でしたが、lightmaterialはApacheをソースから入れている為か標準ではmod_pythonが入っていませんでした.
 と言う事で、mod_pythonをインストール.

 mod_pythonは名前の通りPythonをApache上で動作させる為のモジュールです.
 また、詳しくは調べていませんが、最近のバージョンからDSO(Dynamic Shared Objects)のみ対応してるらしいので、Apacheのコンパイル時には「--enable-so」か「--enable-shared」オプションを付ける必要がありそうです(先日書きましたが、「--enable-shared」はconfigureヘルプには出てきませんが、知人の話によると、どうやらApacheではconfigureヘルプには出ないオプションが複数あるようで、「--enable-shared」もその一つらしい).
 じゃぁ、Pythonって何さ?と言うと、lightmaterialの薄い知識ではインタープリターなプログラム言語と言う程度しか知りません(Python自体を動かすのにApacheもmod_pythonも必要ありません).
 この機会に、「Pythonって何さ?」と言う事も調べてみようかと思いました(詳しくは後述).

 取り敢えず、最終目的のTracをインストールするためには、兎にも角にもこのmod_pythonをインストールしなければいけませんので、まず本家からmod_pythonをダウンロードします.

 mod_python

 次にインストールですが、この工程には「日本Pythonユーザー会」のページが役立つでしょう.

 日本Pythonユーザー会

 ついでにプログラム言語「Python」についても、少々知識を仕入れました.

[日本Pythonユーザー会から抜粋]
Python の開発は、1990 年ごろから開始されています。開発者の Guido van Rossum は教育用のプログラミング言語「ABC」の開発に参加していましたが、ABC は実用上の目的にはあまり適していませんでした。このため、Guido はより実用的なプログラミング言語の開発を開始し、英国 BBC 放送のコメディ番組「モンティ パイソン」のファンである Guido はこの言語を「Python」と名づけました。

 ふーん.
 なるほどなるほど.
 このサイトの説明によれば、オブジェクト指向かつ学習が容易で、その開発範囲はゲームからインストーラ(インストーラの一部にPythonが使われているのは知っていました)、はたまたサーバーアプリケーションまで様々な分野に及ぶそうです.
 もっと早く知っていれば(と言うか、調べようとしなかった私が悪い orz)、lightmaterialが使える言語リストに、この「Python」が入っていたかもしれません.
 今はJavaを覚えようと模索中なので、これからいきなり「Python覚えます!」とはいきませんけど.

 とにかく、そんなPythonをApache上(要するにWebアプリケーションとして)で動作させるのがmod_pythonな訳ですね.
 なんとなくPythonの概要が見えてきました.

 そこまで確認した所で、今回の目的であるmod_pythonについて、「mod_pythonマニュアル」が親切にも日本語化されて置いてある事を知りましたので、このマニュアルに従ってインストールしてみる事に.

 mod_pythonマニュアル

ファイル展開.


 本家サイトからダウンロードしたファイルを展開します.

[??@fedora]# tar xvzf mod_python-3.3.1.tgz
[??@fedora]# cd mod_python-3.3.1

 いつもどおり展開して、展開後のディレクトリに入りました.
 今回はマニュアルもあるし、すんなりいきそうです.


configure.


 Apacheをソースから入れている都合上、一応Apache(apxs)パスの指定オプションを付けてconfigureしてみました.

[??@fedora]# ./configure --with-apxs=/usr/local/apache2/bin/apxs

 Apacheをデフォルトのprefixで入れている場合は、指定しなくても行けるかもしれません(?)
 何事も無く終了…あっけない.


make.


 これまたいつも通り、make/make installします.
 普通です.
 すごい普通ですw

[??@fedora]# make; make install

 エラーも出ず、正常にインストール完了.
 後はApacheのconfファイルに、mod_pythonの設定を追記しないといけません.


Apacheの設定.


 confファイルに次の通り追記します.
[??@fedora]# vi /usr/local/apache2/conf/httpd.conf

LoadModule python_module /usr/local/apache2/modules/mod_python.so

 lightmaterialは、分かり易いようにphp_moduleやdav_svn_moduleの下に追記しておきました.
 ここまでは、いつになくスムーズにインストールが出来たのですが、ここからが良く分かりません orz

 マニュアルによると、.htaccessなりhttpd.conf(対象ディレクトリの設定<Directory>項目)にAddHandlerと「PythonHandler」を追記する必要があるとの事ですが…「PythonHandler」って何?w
 AddHandlerはcgiを使う際に記述するのと同様に、Pythonのソースファイルである「.py」について記述します.

 AddHandler mod_python .py

 そして意味の分からない以下の記述を追記.

 PythonHandler mptest
 PythonDebug On

 この記述はマニュアルの通りな訳ですが、例えば

 /var/www/html

 にドキュメントルートを指定している状態で

 <Directory>
 </Directory>

 項目内に「PythonHandler」を記述し、

 /var/www/html/python/mptest.py
 ※中身はマニュアルに書かれた「Hello World」

 としてソースファイルを作っても上手く動きません.
 こんなエラーが帰ってきます.

MOD_PYTHON ERROR
[中略]
Phase: 'PythonHandler'
Handler: 'mptest'
[中略]
ImportError: No module named mptest


 …は?
 何?何?
 意味が分かりませんが…ソースとして設置したファイルをmoduleとして読みかえると意味が分からなくもない.
 例に

 /var/www/html/mptest.py

 とパスを変更して保存してみると、何事もなかったかのように「Hello World!」と表示されやがります.
 全っ然意味が分かりませんw
 まさか全部のコードに対してPythonHandlerを指定しなければいけない訳でもないだろうし…

 この辺の設定、もう少し勉強が必要な様ですが、元々の目的がTracのインストールなだけに、気にせずTracのインストールに行くべきなのか、mod_pythonの設定についてもう少し勉強すべきなのか迷い所ではあります.

 こんな調子で、本当にTracを動かす事が出来るのやら…不安です orz