Updating a Server Installation

From Multiverse

Jump to: navigation, search

This article provides some tips for updating the Multiverse servers.

Contents

Upgrading to version 1.5

See Upgrading to Version 1.5.

NOTE: If you have previously installed the Multiverse servers, you must read and follow the upgrade instructions in this article.






Using Symbolic Links

Rather than use the default root directory name multiverse, use the original dated version of the tgz file name. That way you can keep multiple versions and easily revert to an old version or examine differences between versions. Then make a symbolic link of the version you wish to run to multiverse.

So for example an ls -l of your installation might look like this:

lrwxrwxrwx  1 Administrator None       21 May 18 19:06 multiverse -> multiverse_2006_05_18/
drwxr-xr-x+ 9 Administrator None        0 May 17 23:40 multiverse_2006_05_03/
drwxr-xr-x+ 9 Administrator None        0 May 19 01:01 multiverse_2006_05_18/

The multiverse_2006_05_03 directory contains the May 3, 2006 release, and the multiverse_2006_05_18 directory contains the May 18,2006 release. multiverse is a symbolic link to the May 18th release.

One Problem

If you set the MV_HOME environment variable (which is entirely optional) you can't use the symbolic link name. So instead of

export MV_HOME="d:\projects\mars\multiverse"

or

export MV_HOME="/cygdrive/d/projects/mars/multiverse"

you must explicitly name the active directory, such as

export MV_HOME="d:\projects\mars\multiverse_2006_03_18"

If you fail to update the path, you will definitely run into some errors or odd behaviours, as the MV_HOME variable is used to create the CLASSPATH variable, which determines what java libraries are used. In fact this is why using the symbolic link name won't work - as when the java code for the Multiverse server is started, it is run under Windows rather than Cygwin, and as such all path names have to be legitimate Windows (MS-DOS) path names. Windows does not recognize the symbolic link. This is not a problem when running the server on a Linux machine.

If you get NoClassDefFoundError errors on running multiverse.sh, this is a sign your CLASSPATH isn't correct.

Merging Changes

When the server files are updated, you will probably have to manually update and merge contents of your bin and config folders. The Cygwin diff command has several useful functions that can help identify what needs to be merged.

Diffing Directories

diff can be used to list the differences between two directories, and so can be used to compare different versions of the Multiverse server. To do this, first install the updated server package into it's own directory - do not overwrite your existing installation.

Next, use the diff command to see what is different between the two directories. Here is an example execution of diff which is comparing the May 3 and May 18 releases. It is recursive (-r), only names of different files are shown (-q), and files ending in .pid and .out are ignored (-x):

Administrator@office /cygdrive/d/projects/mars
$ diff -r -q -x '*.pid' -x '*.out' multiverse_2006_05_03 multiverse_2006_05_18

Here is the output results from the above command:

Files multiverse_2006_05_03/bin/multiverse.sh and multiverse_2006_05_18/bin/multiverse.sh differ
Only in multiverse_2006_05_18/bin: multiverse.sh~
Files multiverse_2006_05_03/bin/sample_bashrc and multiverse_2006_05_18/bin/sample_bashrc differ
Files multiverse_2006_05_03/config/sampleworld/entitymgr_handlers.js and multiverse_2006_05_18/config/sampleworld/entitymgr_handlers.js differ
Files multiverse_2006_05_03/config/sampleworld/global_props.js and multiverse_2006_05_18/config/sampleworld/global_props.js differ
Only in multiverse_2006_05_18/config/sampleworld: mars_L3_TX_8_4_40m.mvw
Only in multiverse_2006_05_18/config/sampleworld: test.mvw
Only in multiverse_2006_05_18/config: sampleworld_orig
Files multiverse_2006_05_03/dist/lib/mars.jar and multiverse_2006_05_18/dist/lib/mars.jar differ
Files multiverse_2006_05_03/dist/lib/multiverse.jar and multiverse_2006_05_18/dist/lib/multiverse.jar differ
Files multiverse_2006_05_03/src/multiverse/mars/abilities/EffectAbility.java and multiverse_2006_05_18/src/multiverse/mars/abilities/EffectAbility.java differ
Files multiverse_2006_05_03/src/multiverse/mars/core/Cooldown.java and multiverse_2006_05_18/src/multiverse/mars/core/Cooldown.java differ
Files multiverse_2006_05_03/src/multiverse/mars/core/MarsAbility.java and multiverse_2006_05_18/src/multiverse/mars/core/MarsAbility.java differ
Files multiverse_2006_05_03/src/multiverse/mars/core/MarsEffect.java and multiverse_2006_05_18/src/multiverse/mars/core/MarsEffect.java differ
Files multiverse_2006_05_03/src/multiverse/mars/effects/HealEffect.java and multiverse_2006_05_18/src/multiverse/mars/effects/HealEffect.java differ
Files multiverse_2006_05_03/src/multiverse/mars/effects/StunEffect.java and multiverse_2006_05_18/src/multiverse/mars/effects/StunEffect.java differ
Files multiverse_2006_05_03/src/multiverse/mars/events/AbilityInfoEvent.java and multiverse_2006_05_18/src/multiverse/mars/events/AbilityInfoEvent.java differ
Only in multiverse_2006_05_18/src/multiverse/mars/objects: CombatInfo.java
Files multiverse_2006_05_03/src/multiverse/mars/objects/MobTemplate.java and multiverse_2006_05_18/src/multiverse/mars/objects/MobTemplate.java differ
Files multiverse_2006_05_03/src/multiverse/mars/objects/SpawnGenerator.java and multiverse_2006_05_18/src/multiverse/mars/objects/SpawnGenerator.java differ
Only in multiverse_2006_05_18/src/multiverse/mars/plugins: CombatClient.java
Only in multiverse_2006_05_18/src/multiverse/mars/plugins: CombatPlugin.java
Files multiverse_2006_05_03/src/multiverse/mars/plugins/MarsInventoryPlugin.java and multiverse_2006_05_18/src/multiverse/mars/plugins/MarsInventoryPlugin.java differ

This information can assist you in knowing which files you will possibly need to hand-update to merge changes.

Diffing Files

You can further use the diff command to compare two files. For example here is the output results of using diff on the multiverse.sh file from the above example:

Administrator@office /cygdrive/d/projects/mars
$ diff multiverse_2006_05_03/bin/multiverse.sh multiverse_2006_05_18/bin/multiverse.sh
18a19
> MVW_FILENAME="mars_L3_TX_8_4_40m.mvw"
31,34c32,35
< DB_NAME="multiverse"
< DB_USER="root"
< DB_PASSWORD="foobar"
< DB_HOST="localhost"
---
> # DB_NAME="multiverse"
> # DB_USER="root"
> # DB_PASSWORD="foobar"
> # DB_HOST="localhost"
Personal tools