EPrints 2.3技術文書 - バージョンアップ法 |
一般的に言えば、EPrintsバージョン2にバージョンアップするには、EPrintsを解凍して現在使用しているバージョンと同じパスにインストールする必要があります。 インストーラは既存のバージョンを検知してバージョンアップします。 変更されたファイルは自動的にバックアップされますので、消失することはありません。 ただし、自分が行った修正が重要な場合は、おそらくバージョンアップの前にバックアップを取るべきです。
必ずApacheを停止してから、バージョンアップをしてください。
必ずシステムを完全にバックアップしてから、バージョンアップをしてください。
そして、バージョンアップの前後のバージョンにあわせた方法でバージョンアップを行ってください。
これを補助するツールをhttp://software.eprints.org/files/から入手することができます。
非常に多くのアーカイブ設定法を変更したので、ここですべてを挙げられません。本当に興味のある場合は、CHANGELOG
ファイルを参照してください。
複数のアーカイブを運用している場合は、各アーカイブについて実行してください。
アーカイブIDがfoobarのアーカイブを例に説明します。
バージョンアップをするために、diff
コマンドを使ってアーカイブの設定ファイルディレクトリのファイルに行った変更を記録することを勧めます。
% diff /opt/eprints2/defaultcfg/ /opt/eprints2/archives/foobar/cfg/
diffの出力をどこか安全な場所に保存してください。
/opt/eprints2/archives/foobar/cfg/
を削除します。
そして、EPrints2.0をインストールします。聞かれたらバージョンアップに同意します。
新しいデフォルト設定ディレクトリをアーカイブの設定ファイルディレクトリにコピーします。
% cp -R /opt/eprints2/defaultcfg/ /opt/eprints2/archives/foobar/cfg/
保存しておいた「diff」ファイルを使って、変更を/opt/eprints2/archives/foobar/cfg/
に再適用します。
次のSQLコマンドを実行する必要もあります。
UPDATE document SET security='' WHERE security='public';
コマンドラインからmysqlに接続するために次のコマンドを実行します。
% mysql -u eprints foobar -p
アーカイブを利用するためにeprintsユーザのパスワードを入力します。そして、先ほどのSQLを実行します。
generate_apacheconf
を再実行して、Apacheをリスタートします。
バージョン2.0からのバージョンアップは、この2.0へのバージョンアップに比べればたいしたことはないはずです。 これ以後、設定ファイルが劇的に変更されることはなかったからです。
このバージョンはほとんどバグフィックスです。設定ファイルに若干バグがあるので、手で修正する必要があります。
EPrintsのバージョンアップ後に、作成しているアーカイブ毎に以下を繰り返し実行してください。
citations-en.xml
にあるposter用のcitationのyearフィールドの名前が間違って&years;になっていますので、これを&year;に修正します。
ArchiveFreeTextIndexingConfig.pm
に、「return」が単語境界でなく単語の一部として処理されるというバグがあります。
このファイルを修正していない限り、単に/opt/eprints2/defaultcfg/
にある新しいファイルで置き換えます。
ArchiveRenderConfig.pm
を修正します。
eprint_fieldname_abstractを捜して、その行の後に以下の行を追加します。
$page->appendChild( $h2 );
このリリースではいくつかのバグを修正していますが、重要な変更点は、購読誌機能の追加とOAI 2.0のサポートです。 詳細については配布物にあるNEWSファイルを参照してください。
EPrintsのバージョンアップ後に、作成しているアーカイブ毎に以下を繰り返し実行してください。
% bin/upgrade ARCHIVEID
このスクリプトは実行中の変更作業を報告します。MySQLのルートパスワードが必要です。
慎重を期すために、mysqldumpを実行してデータベースをバックアップしておいた方が良いかもしれません。
OAIシステムを設定していた場合は、OAI 2.0に必要な設定を追加する必要があります。
これは、/opt/eprints2/defaultcfg/ArchiveOAIConfig.pmからコピーすることができます。
「OAI-PMH 2.0」の名前を持つブロックとサブルーチンmake_metadata_oai_dc_oai2
がOAI 2.0用の設定部分です。
これらをアーカイブ用のArchiveOAIConfig.pmにコピーして、必要に応じて変更します。
購読誌をメールで送付するためにcrontabに項目を追加する必要があります。アーカイブ毎に1組の新しいcronエントリが必要です。
new()
を呼び出す際の引数の順番を(サブジェクトやユーザなどに対するものと共通にするために)変更しました。
ArchiveRenderConfig.pmの以下を
my $target = EPrints::EPrint->new( $session, $session->get_archive()->get_dataset( "archive" ), $eprint->get_value( "commentary" ));
次のように変更します。
my $target = EPrints::EPrint->new( $session, $eprint->get_value( "commentary" ), $session->get_archive()->get_dataset( "archive" ));
(最後の2つの引数の順番を逆にします。)
EPrintsのバージョンアップ後に、(アーカイブ毎に)以下を実行してください。
% bin/upgrade ARCHIVEID
push @dcdata, [ "creator", EPrints::Utils::tree_to_utf8( EPrints::Utils::render_name( $session, $author, 0 ))];
以下のように変更します。
push @dcdata, [ "creator", EPrints::Utils::make_name_string( $author )];
$table->appendChild( _render_row( $session, $session->html_phrase( "eprint_fieldname_type" ), $eprint->render_value( "type" )));
次のブロックを
if( $security eq "staffonly" ) { # If you want to finer tune this, you could create # a new priv. and use that. return $user->has_priv( "editor" ); }
以下にします。
if( $security eq "staffonly" ) { # If you want to finer tune this, you could create # new privs and use them.
# people with priv editor can read this document... if( $user->has_priv( "editor" )) { return 1; }
# ...as can the user who deposited it... if( $user->get_value( "userid" )== $eprint->get_value( "userid" )) { return 1; }
# ...but nobody else can return 0;
}
$info->appendChild( $table );
以下を追加します。
my @subs = $user->get_subscriptions; my $subs_ds = $session->get_archive->get_dataset( "subscription" ); foreach my $subscr( @subs ) { my $rowright = $session->make_doc_fragment; foreach( "frequency","spec","mailempty" ) { my $strong; $strong = $session->make_element( "strong" ); $strong->appendChild( $session->make_text( $subs_ds->get_field( $_ )->display_name( $session ))); $strong->appendChild( $session->make_text( ": " )); $rowright->appendChild( $strong ); $rowright->appendChild( $subscr->render_value( $_ )); $rowright->appendChild( $session->make_element( "br" )); } $table->appendChild( _render_row( $session, $session->html_phrase( "page:subscription" ), $rowright ));
}
<type name="editor">の最後に以下を追加します。
<field name="editperms" staffonly="yes" /> <field name="frequency" required="yes" /> <field name="mailempty" required="yes" />
また、<type name="admin">の最後に以下を追加します。
<field name="editperms" /> <field name="frequency" required="yes" /> <field name="mailempty" required="yes" />
さらに、ArchiveConfig.pmの(「subscription fields」の近く)に以下を追加します。
# Fields used for limiting the scope of editors $c->{editor_limit_fields} = [ "subjects", "type" ];
GDOMEサポートにはさらに次の2つの変更が必要です。
ArchiveConfig.pmのサブルーチンsub get_entitiesを次のように変更します。
$entities{ruler} = $archive->get_ruler()->toString; を以下に変更し、 $entities{ruler} = EPrints::XML::to_string( $archive->get_ruler());
ruler.xmlのXMLヘッダを以下に変更します。
<?xml version="1.0" ?> <!DOCTYPE ruler >
EPrintsモジュールを使って独自のスクリプトを作成していた場合は、モジュールに加えられた以下の変更に注意が必要です。
get_dataset()
set_dataset()
$node->toStringではなく、EPrints::XML::to_string( $node )を使ってください。GDOMEのtoStringはDocumentFragmentsについて期待した通りには動かないからです。
set_value()
このバージョンでは、いくつかの機能が追加され、Apacheの使用法が少し変わりました。フルテキスト索引化ツールが導入され、必要なソフトウェが増えました。
EPrints 2.3はさらに別のmod_perlフックであるTRANSを必要とします。Apacheをコンパイルする際には、「AUTHEN=1 AUTHZ=1」ではなくて、「EVERYTHING=1」をつけることを勧めます(「必要なソフトウェア」の章を参照)。 mod_rewriteは使用されなくなりました。
mod_perlで使用されるPerlモジュールです。「make test」が失敗するのでCPANモジュールを使ったインストールはできないようですが、インストールできれば問題なく動作します。 手作業でPerlモジュールをインストールする方法は「必要なソフトウェア」の章を参照してください。「libapreq」の最新版ではこれが修正されるといいのですが。
「必要なソフトウェ」の章の「フルテキストの索引化」の項を参照して、指示に従ってください。
いつものように最新(の安定)版をダウンロードし、解凍した後、./configureを実行します。
Webサーバを止めます。
いつものように、./install.plを実行します。
アーカイブ毎に次のコマンドを実行します。
% bin/upgrade ARCHIVEID
次のコマンドでApache用の設定ファイルを更新します。
% bin/generate_apacheconf
Webサーバを立ち上げます。
新しい入力インターフェースは、著者のようなリスト項目の値を上下に動かすための「アップ」「ダウン」ボタンを持っています。これらのボタンに使用するアイコンをアーカイブにコピーしないと、ボタンの代わりに「UP」「DOWN」という文字が表示されることになります。アイコンのコピーをアーカイブの「images」ディレクトリに入れ、generate_staticコマンドを実行して、Webサイトに反映させる必要があります。
% cp defaultcfg/static/general/images/multi_*.png archives/ARCHIVEID/cfg/static/general/images
新しいVLit用スタイルシートをコピーします。
% cp defaultcfg/static/general/vlit.css archives/ARCHIVEID/cfg/static/general
次の新しいスタイルシートを
defaultcfg/static/general/eprints.css
以下にコピーして必要に応じて変更します。
archives/ARCHIVEID/cfg/static/eprints.css
「.subject_browser_opts, .subject_browser_selections, .subject_browser_search」で始まる行以降はすべて変更することを勧めます。これは本質的なものではありませんが、サイトの見た目がよくなります。
そして、次のコマンドを実行します。
% bin/generate_static ARCHIVEID
EPrints 2.3の検索用索引の作成法は、2.2とは異なります。インデクサはバックグラウンドで実行されるデーモンとなり、新しい索引を作成して、即座に古い索引を置き換えます。 これはひょっとすると非常に時間がかかるかもしれませんが、(索引の再作成を待つ必要がないため)レコードの編集ははるかに早くなるはずです。
実験的なバグの多いアーカイブでインデクサを動かしたくない場合は、そのアーカイブのメインのXML設定ファイルに<index>no</index>を追加してください。
アーカイブをいくつ運営していてもインデクサは1つ実行するだけです。インデクサを立ち上げるには次のコマンドを実行します。
% bin/indexer start
マシンがリブートされる際に、インデクサが自動的に停止・開始されるように設定するべきです。索引化システムについての技術文書を参照してください。
EPrints 2.3技術文書 - バージョンアップ法 |