17 | | また、単一の `.py` ファイルで成り立つプラグインは、各 TracEnvironment かグローバルの `plugin` ディレクトリに配置します。 ''([http://trac.edgewall.org/milestone/0.10 milestone:0.10] 以降)'' TracIni#GlobalConfiguration を参照してください。 |
18 | | |
19 | | == Trac プラグインのインストール == #InstallingaTracPlugin |
20 | | |
21 | | === 単一のプロジェクト === #ForaSingleProject |
22 | | |
23 | | プラグインは [http://peak.telecommunity.com/DevCenter/PythonEggs Python eggs] としてパッケージ化されています。つまり、拡張子が `.egg` となっている ZIP アーカイブのファイルです。 |
24 | | |
25 | | plugin のディストリビューションをダウンロードして `.egg` ファイルをビルドしたいのであれば、以下の通りにして下さい: |
26 | | * ソースをアンパックして下さい。それにより setup.py が提供されるでしょう。 |
| 22 | また、単一の `.py` ファイルで成り立つプラグインは、各プロジェクトの `plugins` ディレクトリか共有の `plugins` ディレクトリに配置します。 |
| 23 | |
| 24 | == Trac プラグインのインストール == #InstallingaTracplugin |
| 25 | |
| 26 | === 単一のプロジェクト === #Forasingleproject |
| 27 | |
| 28 | プラグインは一般的に [http://peak.telecommunity.com/DevCenter/PythonEggs Python eggs] としてパッケージ化されています。つまり、拡張子が `.egg` となっている .zip アーカイブのファイルです。 |
| 29 | |
| 30 | プラグインのディストリビューションをダウンロードして `.egg` ファイルをビルドしたい場合: |
| 31 | |
| 32 | * ソースをアンパックして下さい。それにより `setup.py` が提供されるでしょう |
38 | | Python egg をビルドするための Python のバージョンと |
39 | | Trac を動かしている Python のバージョンが一致しなければなりません。 |
40 | | 例えば、 Trac を Python のバージョン 2.3 以前で動かしていて、 |
41 | | 2.4 にアップグレードしたときに、 |
42 | | Python egg は認識されなくなるでしょう。 |
43 | | |
44 | | マルチプロジェクトを設定している場合、 Python インタプリタインスタンスのプールはプロジェクトの必要に応じて動的にアロケートされ、プラグインは Pyhton のモジュールシステムの一定の位置を占有しますので、最初にロードされたバージョンのプラグインが、他のすべてのプロジェクトでも使用されます。言い換えれば、マルチプロジェクトセットアップされたプロジェクト間では、あるプラグインの異なるバージョンを使用することはできません。プラグインは (下記の方法で) すべてのプロジェクト向けにインストールし、個々のプロジェクトで有効/無効を設定する方が安全でしょう。 |
45 | | |
46 | | === すべてのプロジェクト === #ForAllProjects |
| 45 | Note: Python egg をビルドするための Python のバージョンと Trac を動かしている Python のバージョンが一致しなければなりません。例えば、 Trac を Python のバージョン 2.5 以前で動かしていて、 2.6 にアップグレードしたときに、Python egg は認識されなくなるでしょう。 |
| 46 | |
| 47 | Note: マルチプロジェクトを設定している場合、 Python インタプリタインスタンスのプールはプロジェクトの必要に応じて動的にアロケートされ、プラグインは Pyhton のモジュールシステムの一定の位置を占有しますので、最初にロードされたバージョンのプラグインが、他のすべてのプロジェクトでも使用されます。言い換えれば、マルチプロジェクトセットアップされたプロジェクト間では、あるプラグインの異なるバージョンを使用することはできません。プラグインは (下記の方法で) すべてのプロジェクト向けにインストールし、個々のプロジェクトで有効/無効を設定する方が安全でしょう。 |
| 48 | |
| 49 | === すべてのプロジェクト === #Forallprojects |
55 | | もし、システムに `easy_install` がなくてプラグインをインストールするには上記の必要条件のセクションを見て下さい。 Windows ユーザは `Scripts` ディレクトリを Python をインストールしたディレクトリ (例えば、 `C:\Python23\Scripts`) を環境変数 `PATH` に加えなければなりません。 (より詳しい情報は、 [http://peak.telecommunity.com/DevCenter/EasyInstall#windows-notes easy_install の Windows Notes] を参照して下さい。) |
56 | | |
57 | | Zip で固められた Python egg をインストールし、 Web サーバに Python egg のキャッシュディレクトリに書き込み権限をつけているのにも関わらず、 Trac がパーミッションエラーを出したら、解凍した Python egg を単に置き直すことによって回避できます。 `easy_install` に `--always-unzip` オプションを付けるだけです: |
58 | | {{{ |
59 | | easy_install --always-unzip TracSpamFilter-0.2.1dev_r5943-py2.4.egg |
| 58 | システムに `easy_install` がない場合、インストールするために上記の必要なセクションを見てください。 Windows ユーザは Python をインストールした `Scripts` ディレクトリ (例えば、 `C:\Python24\Scripts`) を環境変数 `PATH` に加えなければなりません。 (より詳しい情報は、 [http://peak.telecommunity.com/DevCenter/EasyInstall#windows-notes easy_install の Windows Notes] を参照してください。) |
| 59 | |
| 60 | zip で固められた Python egg をインストールした後で Trac がパーミッションエラーを出し、 web サーバによって書き込み可能な Python egg のキャッシュディレクトリを提供したくないときは、 Python egg を解凍することで問題を回避できます。`easy_install` に `--always-unzip` オプションを付けるだけです: |
| 61 | {{{ |
| 62 | easy_install --always-unzip TracSpamFilter-0.4.1_r10106-py2.6.egg |
86 | | 1. setuptools でインストールした場合、 `easy_install -m [plugin name]` を実行し、 `$PYTHONLIB/site-packages/easy-install.pth` から参照を削除します。 |
87 | | 1. 実行可能ファイルを `/usr/bin`, `/usr/local/bin`, `C:\\Python*\\Scripts` などから削除します。実行可能ファイルが分からない場合、 `setup.py` の `[console-script]` を参照します。 |
88 | | 1. インストールされた場所 (通常 `$PYTHONLIB/site-packages/` 配下) の .egg ファイルやディレクトリを削除します。 |
89 | | 1. Web サーバを再起動する。 |
90 | | |
91 | | egg の場所が分らない場合、探すためには以下の方法を使います (この方法は、どのようなパッケージでも使えます) - `myplugin` の箇所は、プラグインのネームスペースで置き換えてください。ネームスペースはプラグインの有効化の時に使用した名前と同じになります。 |
| 92 | |
| 93 | 1. setuptools でインストールした場合、 `easy_install -m [plugin name]` を実行し、 `$PYTHONLIB/site-packages/easy-install.pth` から参照を削除します |
| 94 | 1. `/usr/bin`, `/usr/local/bin`, `C:\\Python*\\Scripts` などから実行可能ファイルを削除します。実行可能ファイルが分からない場合、 `setup.py` の `[console-script]` を参照してください |
| 95 | 1. インストールされた場所 (通常 `$PYTHONLIB/site-packages/` 配下) の .egg ファイルやディレクトリを削除します |
| 96 | 1. Web サーバを再起動します |
| 97 | |
| 98 | egg の場所が分らない場合、探すためには以下の方法を使います (この方法は、どのようなパッケージでも使えます)。`myplugin` の箇所は、プラグインのネームスペースで置き換えてください。ネームスペースはプラグインの有効化の時に使用した名前と同じになります: |
159 | | |
160 | | グローバル領域にプラグインをインストールした場合 (TracEnvironment の `plugin` ディレクトリ内 ''ではなく'') 、 [TracIni trac.ini] に明確に有効にする設定をしなければなりません。以下の事項を確認して下さい: |
161 | | * `[components]` セクションに必要な行数を追加したか。 |
162 | | * パッケージ / モジュール名は正しいか |
163 | | * 正しい値、 "enabled" になっているかどうか。例えば、 "enable" ではなく。 |
164 | | |
165 | | === Python egg ファイルのパーミッションのチェック === #Checkthepermissionsontheeggfile |
166 | | |
167 | | Trac は Python egg ファイルを読めなければなりません。 |
| 166 | グローバル領域にプラグインをインストールした場合 (Environment の `plugins` ディレクトリ内 ''ではなく'') 、 [TracIni trac.ini] に明確に有効にする設定をしなければなりません。以下の事項を確認して下さい: |
| 167 | |
| 168 | * ...`[components]` セクションに必要な行数を追加したか |
| 169 | * ...パッケージ / モジュール名は正しいか |
| 170 | * ..."enable" や "Enable" ではなく、正しい値 "enabled" になっているかどうか |
| 171 | |
| 172 | === Python egg ファイルのパーミッションのチェック === #Checkthepermissionsonthe.eggfile |
| 173 | |
| 174 | Trac は Python egg ファイルを読み込み可能でなければなりません。 |
179 | | 複数のプロジェクトがある場合に plugins ディレクトリにプラグインを置くなら確実に正しいバージョンのプラグインがロードされていることを確認する必要があります。ここにいくつかの基本的なルールがあります: |
180 | | * 実行中の Trac サーバ (すなわち各々の Python プロセス) にはプラグインの 1 バージョンだけがロードできます。 Python の名前空間とモジュールリストは (プラグインが`有効 (enabled)` になっているか `無効 (disabled)` になっているかに関わらず) 全プロジェクトで共有されるでしょう。そしてそれは複製をハンドルすることができません。 |
181 | | * グローバルにインストールされたプラグイン (通常は `setup.py install`) はグローバルな plugins ディレクトリあるいはプロジェクト毎の plugins ディレクトリ内のどんなバージョンも無視するでしょう。グローバルにインストールされたプラグインは、他のどのプラグインよりも前に動作するでしょう。 |
182 | | * Trac サーバが (`TRAC_ENV_PARENT_DIR` セットアップのように) 複数のプロジェクトをホスティングした場合、異なったプロジェクトで異なるバージョンのプラグインを使用していると、どのバージョンのプラグインが使用されるかは不明です。異なるバージョンのプラグインのうちいずれか一つがロードされるでしょう。そしてロードされたプラグインは全てのプロジェクトで共有されます。 Trac は基本的に一番最初にリクエストを受けたプロジェクトからプラグインをロードします。 |
183 | | * Python の site-packages 内に複数のバージョンをリストしておく (すなわち `setup.py install` を使用してインストールする) のは素晴らしいことです。 - setuptools は最も新しいバージョンを確実にインストールします。しかし、複数バージョンのプラグインをグローバルな plugins ディレクトリや、プロジェクト毎の plugins ディレクトリに格納しないでください。 - Trac はプラグインを探すときに バージョン番号、格納された日付などを気にしません。この場合 Trac がどのプラグインを最初に見つけ出すかを確実に指定する方法はありません。 |
| 186 | 複数のプロジェクトがある場合に plugins ディレクトリにプラグインを置くなら、確実に正しいバージョンのプラグインがロードされていることを確認する必要があります。ここにいくつかの基本的なルールがあります: |
| 187 | |
| 188 | * 実行中の Trac サーバ (すなわち各々の Python プロセス) にはプラグインの 1 バージョンだけがロードできます。 Python の名前空間とモジュールリストは (プラグインが`有効 (enabled)` になっているか `無効 (disabled)` になっているかに関わらず) 全プロジェクトで共有されるでしょう。そしてそれは複製をハンドルすることができません |
| 189 | * グローバルにインストールされたプラグイン (通常は `setup.py install`) は共有 plugins ディレクトリあるいはプロジェクト毎の plugins ディレクトリ内のどんなバージョンも無視するでしょう。グローバルにインストールされたプラグインは、他のどのプラグインよりも''先に''動作するでしょう |
| 190 | * Trac サーバが (`TRAC_ENV_PARENT_DIR` セットアップのように) 複数のプロジェクトをホスティングした場合、異なったプロジェクトで異なるバージョンのプラグインを使用していると、どのバージョンのプラグインが使用されるかは不明です。異なるバージョンのプラグインのうちいずれか一つがロードされるでしょう。そしてロードされたプラグインは全てのプロジェクトで共有されます。 Trac は通常一番最初にリクエストを受けたプロジェクトからプラグインをロードします |
| 191 | * Python の site-packages 内に複数のバージョンをリストしておく (すなわち `setup.py install` を使用してインストールする) のは素晴らしいことです。 - setuptools は最も新しいバージョンを確実にインストールします。しかし、複数バージョンのプラグインを共有 plugins ディレクトリや、プロジェクト毎の plugins ディレクトリに格納しないでください。 - Trac はプラグインを探すときに バージョン番号、格納された日付などを気にしません。この場合 Trac がどのプラグインを最初に見つけ出すかを確実に指定する方法はありません |
187 | | plugins に対するログが出力されず、 egg が読み込み可能であり、 Python のバージョンが正しく、 ''その上で'' egg がグローバルにインストールされて (そして trac.ini で使用可能に設定されて) いても、なぜかプラグインが動かず、なんのエラーメッセージも表示されない場合は、 [http://trac.edgewall.org/wiki/IrcChannel IrcChannel] で質問してください。 |
| 195 | plugins に対するログが出力されず、 egg が読み込み可能であり、 Python のバージョンが正しく、 ''その上で'' egg がグローバルにインストールされて (そして trac.ini で使用可能に設定されて) ''いても''、なぜかプラグインが動かず、なんのエラーメッセージも表示されない場合は、 [trac:IrcChannel IrcChannel] で質問してください。 |
| 196 | |
| 197 | == web ベースのプラグイン管理 == #Web-basedpluginadministration |
| 198 | |
| 199 | !WebAdmin プラグイン (0.11 から標準付属) を導入することで、 `TRAC_ADMIN` 権限を持ったユーザは web 上でプラグインの設定が行えるようになります: |
| 200 | |
| 201 | * インストールされたプラグインの有効/無効を設定する |
| 202 | * Python egg をアップロードすることでプラグインをインストールする |
| 203 | |
| 204 | セキュリティ上の理由から 2 番目の機能を無効にしたいときには、`trac.ini` の `[components]` セクションに以下の一行を追記してください。 |
| 205 | {{{ |
| 206 | trac.admin.web_ui.PluginAdminPanel = disabled |
| 207 | }}} |
| 208 | この設定はパネル全体を無効にしてしまうため、1 番目の機能も使用できなくなります。 |