EPrints 2.3 Documentation - Updating from Previous Versions |
Generally speaking when upgrading EPrints v2 you should unpack and install eprints to the same path as your current version. The installer will detect the existing version and upgrade it. Existing files which have been altered by you should be automatically backed up so they don't get lost. But if your hacks are important then you should probably back them up by hand before upgrading.
Always stop apache before upgrading.
Always make sure your system is fully backed up before upgrading.
Then you should follow the specific instructions for each stage from your old version to your new version...
A tool for assisting with this is available from http://software.eprints.org/files/
Too much of the configuration of the archive has changed to document individually. See
the CHANGELOG
file if you're really interested. If you have more than one
archive, then do each step for each one. Our example is the archive with the ID foobar.
To upgrade we suggest you use the UNIX diff
command to make a records of changes
you made to the archive config directory.
% diff /opt/eprints2/defaultcfg/ /opt/eprints2/archives/foobar/cfg/
Store the output from diff somewhere safe.
Remove /opt/eprints2/archives/foobar/cfg/
Now install eprints 2.0 and agree to upgrade when it asks.
Copy the new default configuration into your archive dir:
% cp -R /opt/eprints2/defaultcfg/ /opt/eprints2/archives/foobar/cfg/
Work through the ``diff'' you produced, and re-apply the changes
to the contents of /opt/eprints2/archives/foobar/cfg/
.
You also need to execute the following SQL command.
UPDATE document SET security='' WHERE security='public';
To connect to mysql via the command line run:
% mysql -u eprints foobar -p
And enter the database password for that archive.
Now re-run generate_apacheconf
and restart apache.
Upgrading from 2.0 should be less painful than this, the config files should change less dramatically from now on.
This release is mostly a bug fix release. There are a few bugs in the config files which you should fix by hand.
After upgrading EPrints, repeat these steps for the cfg directory of each archive you have created:
In citations-en.xml
in the citation for poster, the year field is incorrecly named &years; rename it to &year;
(This is not essential) Also on the citations file for the ``eprint'' and ``user'' citation types: add a <ep:linkhere> .... </ep:linkhere> just inside the <ep:citation> tag.
There was a bug in ArchiveFreeTextIndexingConfig.pm
which meant
that ``return'' was treated as part of a word, rather than a word break. Unless you have modifed that file, just
replace it with the new one from /opt/eprints2/defaultcfg/
(This is not essential) The title for the abstract block never gets added to the page. Edit ArchiveRenderConfig.pm
- search for eprint_fieldname_abstract and add the following line as the next line:
$page->appendChild( $h2 );
These release fixes a few bugs but the main point is adding the subscriptions feature and support for OAI 2.0. See the NEWS file in the distribution for more information.
After upgrading EPrints, repeat these steps for each archive you have created:
Upgrade the SQL tables - EPrints 2.1 needs to make some small changes to the database. Run:
% bin/upgrade ARCHIVEID
This script will explain the changes it is making. It will require the MySQL root password.
If you want an extra level of protection, you may want to run mysqldump to backup the database.
If you are not using the OAI system then just copy the new ArchiveOAIConfig.pm configuration file over your old one. The new one can be found in /opt/eprints2/defaultcfg/ArchiveOAIConfig.pm.
If you have already configured the OAI system then you need to add the required configuration for OAI 2.0. These can be copied from /opt/eprints2/defaultcfg/ArchiveOAIConfig.pm. The two relevant sections are the block titled ``OAI-PMH 2.0'' and the subroutine make_metadata_oai_dc_oai2
. Copy these into your archives ArchiveOAIConfig.pm and modify them if needed.
Look at the section on setting up subscriptions in the ``Installation'' chapter.
You need to add some more items to the cron tab to mail out the subscriptions. One set of new cron entries per archive.
The call for EPrints::EPrint->new()
has changed the order of the parameters
(to standardise it with Subject, User, etc.).
In ArchiveRenderConfig.pm edit:
my $target = EPrints::EPrint->new( $session, $session->get_archive()->get_dataset( "archive" ), $eprint->get_value( "commentary" ) );
to be:
my $target = EPrints::EPrint->new( $session, $eprint->get_value( "commentary" ), $session->get_archive()->get_dataset( "archive" ) ) ;
(swapping the order of the last 2 parameters)
Upgrade eprints software to the new version then (for each archive)
Upgrade the SQL tables - EPrints 2.2 needs to make some small changes to the database. Run:
% bin/upgrade ARCHIVEID
In the sub eprint_to_unqualified_dc change this line:
push @dcdata, [ "creator", EPrints::Utils::tree_to_utf8( EPrints::Utils::render_name( $session, $author, 0 ) ) ];
to this:
push @dcdata, [ "creator", EPrints::Utils::make_name_string( $author ) ];
You may wish to add the following to ``eprint_render'', after the commentary section. It will add 'type' to the abstracts page (although not unless you run generate_abstracts
$table->appendChild( _render_row( $session, $session->html_phrase( "eprint_fieldname_type" ), $eprint->render_value( "type" ) ) );
In the 2.1 default configuration a user could not view their own secure documents if they were not an editor. This was silly. Fix it in sub can_user_view_document:
Change the block:
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" ); }
to:
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;
}
You may wish to add subscriptions to the user_render_full method so staff can see what subscriptions a user has. Just before
$info->appendChild( $table );
Add:
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 ) );
}
If you want to add the feature which allows the editor to set a search which limits the scope of what an editor may edit (eg. only books, or only things under oceanography in the subject table) you must add in metadata-types.xml ...
To the end of <type name=``editor''>
<field name="editperms" staffonly="yes" /> <field name="frequency" required="yes" /> <field name="mailempty" required="yes" />
And to the end of <type name=``admin''>
<field name="editperms" /> <field name="frequency" required="yes" /> <field name="mailempty" required="yes" />
And then to ArchiveConfig.pm add (near ``subscription fields'' )
# Fields used for limiting the scope of editors $c->{editor_limit_fields} = [ "subjects", "type" ];
There is a tool in http://software.eprints.org/files/contrib/update_phrases/ which will assist with identifying changes made in the English version which should be applied to your translated version(s).
If you want to use the ``probity'' feature (see elsewhere in documentation for more information) you should run the rehash_documents command to generate a hash of each document file in the system.
You may also wish to update the website to reflect that eprints 2.2 is OAI 2.0 compliant. Also re-running generate_static will update the version number for eprints where mentioned.
10 matches per search page was a little low. You may wish to up it to 100, which seems to work better for people.
If you wish to enable GDOME support (faster, better XML library) install the additional required libraries then edit the flag in SystemSettings.
The additional 2 changes are required for GDOME support.
In ArchiveConfig.pm in sub get_entities change
$entities{ruler} = $archive->get_ruler()->toString; to $entities{ruler} = EPrints::XML::to_string( $archive->get_ruler() );
and in ruler.xml change the XML header to:
<?xml version="1.0" ?> <!DOCTYPE ruler >
If you've made your own scripts using the eprints modules then you should be aware of some changes to those modules:
get_dataset()
MetaFields no longer known what dataset they belong to
set_dataset()
MetaFields no longer known what dataset they belong to
Now use: $metafield->get_values( $session, $dataset )
All the XML handling now uses EPrints::XML as an abstraction to the differences between XML::GDOME and XML::DOM.
Please use EPrints::XML::to_string( $node ) rather than $node->toString as in GDOME toString does not work as expected on DocumentFragments.
Removed. Use EPrints::XML methods instead.
Now use: $db->get_values( $field, $dataset )
Should not cause any problems, but might.
set_value()
Removed.
This version adds some more functionality and uses apache in a slightly different way. The full text indexing tool adds some more requirements.
EPrints 2.3 requires an additional mod_perl hook, TRANS. I suggest you compile apache with ``EVERYTHING=1'' instead of ``AUTHEN=1 AUTHZ=1'' (see the required software section of the 2.3 manual). mod_rewrite is not used any more.
Version 2.3.7+ of EPrints do not require this module. It was a pain to install. 2.3.0 to 2.3.6 do require it, but we recommend you run 2.3.7 or later.
See the chapter ``Required Software'', section ``Full Text Indexing''. Follow the instructions.
As usual download and extract the latest (stable) version and run ./configure
Stop the webserver
Run ./install.pl as usual
For each archive run
% bin/upgrade ARCHIVEID
Update the apache config:
% bin/generate_apacheconf
Start the webserver
The new input interface has up and down buttons to let you rearrange the values in lists, such as authors. If you don't copy them into your live archives you'll probably see ugly text of ``UP'' and ``DOWN''. You need to put them in your archives ``images'' dir then use generate_static to copy them to the live website.
% cp defaultcfg/static/general/images/multi_*.png archives/ARCHIVEID/cfg/static/general/images
Copy in the new VLit stylesheet.
% cp defaultcfg/static/general/vlit.css archives/ARCHIVEID/cfg/static/general
Copy any new styles you want from
defaultcfg/static/general/eprints.css
to
archives/ARCHIVEID/cfg/static/eprints.css
I suggest everything after the line which starts ``.subject_browser_opts, .subject_browser_selections, .subject_browser_search''. This isn't essential, but will make your site look nicer.
Now run:
% bin/generate_static ARCHIVEID
EPrints 2.3 does not create the search index in the same way as 2.2 did. It has a background daemon which builds new indexes and then copys them over the old indexes when they are ready. This can potentially take quite a long time, but means that editing records will be much faster (no need to keep reindexing).
If you have some buggy or experimental archives which you do not wish the indexer to process add <index>no</index> to the main XML config file for that archive.
Only one copy of the indexer runs, no matter how many archives you have. To start it run:
% bin/indexer start
You should make the indexer automatically start and stop if the machine is rebooted. See the main documentation about the indexing system.
Both the below changes are optional, although recommended.
You may wish to enable the short urls feature; just add $c->{use_short_urls} = 1; to ArchiveConfig.pm
2.3.7 introduced an XSLT stylesheet for OAI requests. If you install it and view your OAI requests in Mozilla or IE it should be rendered in a human readable form.
% cp defaultcfg/static/general/oai2.xslt archives/ARCHIVEID/cfg/static/general
EPrints 2.3 Documentation - Updating from Previous Versions |