Splus objects to our new servers. While the temptation
for automating this process is there, I have deliberately chosen not
to do so because of the number of warnings and errors the conversion
process could potentially generate. Such warnings and even errors
should be heeded by the users, otherwise /em/nasty surprises/ might
result.
On our old servers, our default Splus was version 3.4. Despite
the fact that we have always had later versions of Splus, most
users relied on the old version.
Now that we are moving to our new servers, the default Splus is
version 6.1. Users who rely on Splus have to convert their old
objects for use with the new version of the software. I have written a
short shell script that might help.
The new Splus works with CHAPTERs. Suppose you have a new
empty directory called foo and you wish to store your Splus
objects in that directory, you proceed as follows:
[joe@server /home/joe] cd foo [joe@server /home/joe] Splus CHAPTER
Now you can work as usual in that directory.
Consider the following example. I have a .Data directory in my
home directory. I want to convert the objects in that directory. I use
a shell script called migrateSData.sh that I have written.
[joe@server /home/joe] cd [joe@server /home/joe] migrateSData.sh Creating data directory for chapter . Creating "makefile" makefile will build with: combo.f S-PLUS chapter joe initialized. ********************************************************** * IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT! * * * * Please see the file Sconvert.log for warnings/errors! * * Once, and only when, you are satisfied that none of * * the warnings/errors are serious, should you rely on * * the converted objects. * * * * Your old .Data directory has been renamed to .OldData. * * PLEASE delete the old .Data directory to save space * * using the command 'rm -rf ./.OldData' * ********************************************************** [joe@server /home/joe]
The script tries to be careful by making a backup copy of your
.Data directory in .OldData. It is important that you check
the file Sconvert.log for warnings and errors. For example, here
is an excerpt from that log:
changed "gen.tprod" to replace call to log changed "z" to record old class "data.frame"
These messages are not serious and so I can afford to ignore them. Others might be serious.
If you are satisfied with the results (you can check this by firing up
Splus and listing your objects and functions) then you should
delete your old data directory to save space.
The above example showed how to migrate objects in the home directory. One follows the same procedure in every directory where objects have to be migrated. Just change to that directory and run the script.
If you wish to be clever, it is not hard to do this automatically on
every directory where Splus objects are present, but it is
important to check all the warnings and error messages.
If you encounter problems, or the conversion revealed problems, then
you should delete the newly created .Data directory and rename
the .OldData back to .Data.
Then try other approaches or let me know.
I have tried to keep the script simple and yet trap simple errors. For example, the script will detect if you run the script twice in the same directory (without renaming directories), the following message is displayed.
********************************************************** * An old data directory named .OldData exists! * * This means that you probably ran this script before * * and did not like the results! * * * * In that case, you should probably: * * 1) Delete your current .Data directory * * with the command 'rm -rf ./.Data' * * (you didn't like it, right?) * * 2) Rename the .OldData directory to .Data * * with the command 'mv .OldData .Data' * * 3) Rerun this script * * * * IT IS UP TO YOU TO ENSURE THAT YOU DON'T DELETE * * ANYTHING OF IMPORTANCE! THIS SCRIPT DOESN'T HAVE THAT * * KIND (OR ANY OTHER, FOR THAT MATTER) OF INTELLIGENCE! * **********************************************************
If on the other hand, one tries to run the script over an already converted directory, the following message results.
********************************************************** * Sorry, I cannot proceed! It appears that your .Data * * directory has already been converted. To avoid the * * risk of clobbering your data, please proceed on your * * own. Inspect the contents of the script * * /home/depot/swtree/lib/local/Splus/convert.S * * and run that manually in Splus if you wish. Or do a * * GOOGLE search on 'convertOldLibrary' for help. * **********************************************************