| 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 が提供されるでしょう。 |
| 27 | | * 以下のようにして実行してください: |
| | 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` が提供されるでしょう。 |
| | 33 | * 以下のようにして実行してください: |
| | 34 | |
| 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 |
| 67 | | `easy_install` をソースからインストールする方法を以下に示します。Subversion のリポジトリか、 tarball/zip のソースを引数に与えてください。 |
| 68 | | {{{ |
| 69 | | easy_install http://svn.edgewall.com/repos/trac/sandbox/spam-filter |
| 70 | | }}} |
| 71 | | |
| 72 | | ==== プラグインを有効にする ==== #Enablingtheplugin |
| 73 | | 個別の TracEnvironment にプラグインをインストールする場合と異なり、システム全体にインストールしたプラグインを有効にするためには、 [wiki:TracIni trac.ini] ファイルで明示的に指定しなければいけません。設定ファイルの `[inherit] plugins_dir` オプションに指定したパスにプラグインをインストールする場合も同じく、明示的に指定する必要があります。設定ファイルの `[components]` セクションに次のような記載を行います: |
| | 70 | `easy_install` を使ってソースからインストールすることができます。Subversion のリポジトリ又は ソースの tarball/zip を引数に与えてください。 |
| | 71 | {{{ |
| | 72 | easy_install http://svn.edgewall.com/repos/trac/plugins/0.12/spam-filter-captcha |
| | 73 | }}} |
| | 74 | |
| | 75 | ==== プラグインを有効にする ==== #Enablingtheplugin |
| | 76 | |
| | 77 | 個別の TracEnvironment にプラグインをインストールする場合と異なり、システム全体にインストールしたプラグインを有効にするためには、 [wiki:TracIni trac.ini] ファイルで明示的に指定しなければいけません。設定ファイルの `[inherit] plugins_dir` オプションに指定した共有の plugins ディレクトリにプラグインをインストールする場合も同じく、明示的に指定する必要があります。 |
| | 78 | |
| | 79 | 設定ファイルの `[components]` セクションに次のような記述を加えれば完了です: |
| 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 ファイルを読み込み可能でなければなりません。 |
| 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 がどのプラグインを最初に見つけ出すかを確実に指定する方法はありません。 |
| 184 | | |
| 185 | | === 上記のすべてに失敗した場合 === #Ifalloftheabovefailed |
| 186 | | |
| 187 | | plugins に対するログが出力されず、 egg が読み込み可能であり、 Python のバージョンが正しく、 ''その上で'' egg がグローバルにインストールされて (そして trac.ini で使用可能に設定されて) いても、なぜかプラグインが動かず、なんのエラーメッセージも表示されない場合は、 [http://trac.edgewall.org/wiki/IrcChannel IrcChannel] で質問してください。 |
| | 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 がどのプラグインを最初に見つけ出すかを確実に指定する方法はありません。 |
| | 192 | |
| | 193 | === 上記のすべてに失敗した場合 === #Ifalloftheabovefailed |
| | 194 | |
| | 195 | plugins に対するログが出力されず、 egg が読み込み可能であり、 Python のバージョンが正しく、 ''その上で'' egg がグローバルにインストールされて (そして trac.ini で使用可能に設定されて) ''いても''、なぜかプラグインが動かず、なんのエラーメッセージも表示されない場合は、 [http://trac.edgewall.org/wiki/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 番目の機能も使用できなくなります。 |