wiki:TracJaUpgrade

TracJa アップグレードガイド 0.12

このページについて

Trac (Trac-ja) 0.11 から 0.12 へのアップグレードに関する覚え書き。

参考ページ

Trac 0.12 の主な新機能

  • インターフェースの国際化 ( Babel)
    • ユーザー (ブラウザー) の使用言語で表示される
  • 1 つの Trac 環境で複数のリポジトリをサポート
  • 並べて編集モード (Wiki)
    • テキストエリアとプレビューを横に並べて表示
    • テキストエリアの内容に応じて自動的にプレビューが更新される
  • チケット
    • コメントの内容が編集可能に (自動更新されるプレビューにも対応)
    • 同梱の  TicketDeleter コンポーネントを有効にするとチケットの削除が可能
    • 各項目 (添付ファイル、コメント一覧、チケットの編集エリア) が折りたたみ可能に
  • 表関連の Wiki プロセッサ (#!th, #!td など)
    • 複数行にわたるセル内容、スタイル指定、セルの行結合、表の入れ子、セル中の Wiki 文法などの複雑な表を作成できる

アップグレードに向けた準備

アップグレード作業に入る前に確認しておく項目や行っておく作業など。

注意事項

 さくらインターネット のレンタルサーバにインストールした Trac 環境を想定している。詳細は TracJa インストールガイド - インストール環境 (インストール構成) を参照。

サポートが終了したパッケージ

以下のパッケージを使用している環境では、Trac のアップグレードを行う前にパッケージの更新が必要となる。

  • Python 2.3
    • Python をアップグレードするとすべての Python パッケージの再インストールが必要となる
      • Trac, easy_install, Subversion の Python バインディングなど
  • SQLite 2.x
    • データベース形式を SQLite 3.x に変換する ( Upgrading SQLite from 2.x to 3.x 参照)
    • PySqlite 1.1.x
      • Python 2.4 を使用する場合は PySqlite をアップグレードする (Python 2.5 以降は同梱されている)
    • PySqlite 2.5.2 - 2.5.4
      • Trac のアップグレード時にデータベース更新に失敗する問題がある
        • Python 2.4 を使用する場合は PySqlite をアップグレード/ダウングレードする
  • Subversion 1.4.x
    • 今のところ動作に問題はないが、今後のバージョンにおける動作保証は行われない

バックアップ

trac-admin コマンドの hotcopy コマンドを使用すると、Trac を稼働させたまま簡単にバックアップを行うことができる。Trac のアップグレードを行う前に、念のため Trac 環境をバックアップしておく場合は hotcopy コマンドを実行する。

%trac-admin /path/to/projenv hotcopy /path/to/backupdir

hotcopy コマンドを実行すると、次のようなデータが含まれた Trac 環境のスナップショットが生成される。

  • テンプレートファイル (site.html)
  • インストール済みの Trac プラグイン
  • ログファイル (trac.log)
  • データベースファイル (trac.db)
  • 設定ファイル (trac.ini)
  • Wiki ページやチケットへの添付ファイル

※ Trac のバックアップについて詳しくは TracBackup を参照。

アップグレード

Babel

Trac 0.12 以降は  Babel を利用することでインターフェースの国際化がサポートされる。Trac のインターフェースを日本語化 (国際化) するには Trac より先に Babel をインストールする。

Easy Install を利用して Babel 0.9.5 をインストールする。

%easy_install Babel==0.9.5

※ Trac の UI が英語のままで構わない場合は Babel のインストールは不要。

Trac (Trac-ja)

Easy Install を利用して  Trac-ja をアップグレードする。

%easy_install -U http://www.i-act.co.jp/project/products/downloads/Trac-0.12.2.ja1.zip

※ Babel がインストールされた Trac 0.12 以降では、Trac の UI はデフォルトで日本語化 (国際化) される。Trac-ja に含まれる日本語の Trac ドキュメントなどが不要な場合は、オリジナル (英語) の Trac への移行も検討することができる。Easy Install を利用してオリジナル (英語) の Trac へアップグレードする場合は、次のようなコマンドを実行する。

%easy_install -U Trac

Trac 環境 (TracEnvironment)

Trac アップグレード後に Trac 環境のアップグレードも必要となる場合がある。アップグレード後の Trac にアクセスした際に、"この Trac Environment はアップグレードを行う必要があります。" というメッセージが表示される場合は、trac-admin コマンドの upgrade コマンドを実行する。

%trac-admin /path/to/projenv upgrade

※ upgrade コマンドは Trac 環境がすでに最新の状態の場合は何も行わない。Trac 環境を更新するべきか分からない場合は、念のため実行しておいても特に問題はない。

※ upgrade コマンドを実行すると、自動的にデータベース (trac.db) のバックアップが行われる。

Trac ドキュメント (Wiki 文書)

Trac 環境には Trac アップグレード前のバージョンの Trac ドキュメント (Wiki 文書) がコピーされている。Trac ドキュメントをアップグレードしたバージョンに更新する (同期) 場合は、trac-admin コマンドの wiki upgrade コマンドを実行する。

%trac-admin /path/to/projenv wiki upgrade

※ wiki upgrade コマンドを実行すると、通常の Wiki 編集と同じようにページの更新履歴が残る。そのため更新されたすべてのページの差分表示をタイムラインから一括で確認することができる。

※ wiki upgrade コマンドでは WikiStart ページは更新の対象外となる。

アップグレード後の作業

Trac アップグレード後に行っておく対応作業など。

不要となる Trac プラグイン

egg ファイルの解凍先の変更

Trac インストール時の egg ファイルの解凍先ディレクトリが次のように変更されている。

Trac のバージョン 解凍先 解凍先の例
0.11 lib/python/site-packages/ lib/python/site-packages/Trac-0.11.7.ja1-py2.6.egg/
0.12 ~/.python-eggs/ ~/.python-eggs/Trac-0.12.2.ja1-py2.6.egg-tmp/

Trac の静的リソースへのリンクがある場合は、参照先を更新する必要がある。

※ たとえば trac/htdocs へのシンボリックリンクがある場合は、次のようにリンクを作成し直す。

%rm ~/www/htdocs
%ln -s ~/.python-eggs/Trac-0.12.2.ja1-py2.6.egg-tmp/trac/htdocs ~/www/htdocs

複数リポジトリの設定

Trac 0.12 以降は複数リポジトリがサポートされている。複数のリポジトリを管理するため複数の Trac 環境を作成している場合、利便性や保守性を考えて Trac 環境の統合を検討することができる。具体的な手順はリポジトリ管理 - 単一リポジトリからの移行手順を参照。

※ Trac 0.12 では複数リポジトリのサポートを導入するにあたり、HTTP リクエストごとに発生するリポジトリとの同期処理が改善されている。そのため単一リポジトリのままであっても、複数リポジトリの設定を行っておくことで同期処理の負荷を軽減させることができる。

※ 参考:アップグレードの説明 - 複数のリポジトリのサポート

post-commit フックへの移行

Trac 0.12 ではリポジトリとの同期方法として post-commit フックを利用した明示的な同期処理が追加されている。post-commit フックでは複数リポジトリがサポートされ、リポジトリとの同期処理の負荷が軽減されるため、Trac では明示的な同期が推奨されている。

※ 以前のバージョンの Trac で使用されていた trac-post-commit-hook は、単一リポジトリ (複数リポジトリの設定をしている場合はデフォルトリポジトリ) に対してのみ機能する。

※ リポジトリと同期方法の関係をまとめると次のようになる。

複数リポジトリ リポジトリ数 機能する同期方法 推奨される同期方法
未設定 単一 post-commit, trac-post-commit-hook post-commit
設定済み 単一 post-commit, trac-post-commit-hook post-commit
設定済み 複数 post-commit, trac-post-commit-hook (デフォルトリポジトリのみ) post-commit

※ リポジトリの同期に関する詳細については以下のページを参照。

Authz パーミッションの設定方法の変更

Trac 0.12 では Authz パーミッションを使用するための設定方法が次のように変更された。

AuthzPolicy (authz_policy)
  • Authz 形式に似た設定ファイル (authzpolicy.conf) を使用するパーミッションポリシー
  • AuthzPolicy コンポーネントとして再実装された (デフォルトで無効)
  • AuthzPolicy を使用していた場合は tracopt.perm.authz_policy.* を有効にする必要がある
mod_authz_svn ライクなパーミッションポリシー
  • Subversion の認証ファイルを使用するパーミッションポリシー (パスベース認証)
    • ユーザー名とリポジトリパスを指定して、ディレクトリごとのきめ細かいアクセス制限が可能
  • AuthzSourcePolicy コンポーネントとして再実装された (デフォルトで有効)
  • mod_authz_svn ライクなパーミッションポリシーを使用していた場合は、permission_policies の先頭に AuthzSourcePolicy を追加する必要がある

※ Authz パーミッションに関する詳細については以下のページを参照。