Difference between revisions of "User:Diggernet/Sandbox"

From Gramps
Jump to: navigation, search
(GRAMPS 2.2)
Line 69: Line 69:
  
 
==GRAMPS 2.2==
 
==GRAMPS 2.2==
 +
The instructions and scripts here are intended for use with GRAMPS 3.0.  A similar technique could be used with GRAMPS 2.2, but doing so is discouraged due to the risk of [[Recover corrupted grdb|database corruption]], especially on Linux.
  
 
=========================
 
=========================

Revision as of 02:17, 21 March 2008

Run GRAMPS from a portable drive


Some users want to keep their GRAMPS data on a removable drive, either for portability between computers or for security. This document describes how to accomplish that, and should work whether using a floppy disk, a flash drive, or an external hard drive. Unfortunately, there are no easy instructions for installing GRAMPS and its dependencies on a removable drive, so these instructions assume and require that GRAMPS be installed on any computer to which you connect the drive.

Gnome-important.png
Make Regular Backups

Since removable drives can be more fragile and more easily lost than the hard drive in your computer, be sure to make regular backups of your data if you use this technique. For that matter, you should always make regular backups of important data anyway, because stuff can happen to your hard drive, too. But be especially careful if your data is stored on floppies or flash drives.

What this does

The magic is done in scripts that you use to start GRAMPS. The scripts trick GRAMPS into thinking that your user home directory is on the removable drive instead of in the usual place, so that GRAMPS will read and write its configuration and data there.

Installation

Save the scripts below in the directory you want to use as your GRAMPS home directory on the removable drive. When run, the scripts will direct GRAMPS to the directory they are installed in. Edit the SETTINGS section of the scripts you will use, so that the values there are correct for your computer.

You will probably need to change the media base path setting in GRAMPS each time you run it on a different computer. You may also need to edit some settings in the scripts for different computers. If there are certain computers which you use regularly that need different settings in the scripts, you can easily make separate script copies for each one, to avoid the need to reedit them.

Windows

gramps.bat

@echo off

REM Make changes to environment variables local to this block
setlocal

REM BEGINNING OF SETTINGS

set PYTHON_COMMAND="C:\Python25\pythonw.exe"
set GRAMPS_DIR="C:\Program Files\gramps"

REM END OF SETTINGS

REM Set USERPROFILE to the drive and path of this script
set USERPROFILE="%~dp0"

REM Go to this script location for good measure
%~d0
cd "%~p0"

"%PYTHON_COMMAND" "%GRAMPS_DIR\gramps.py"

REM End the local environment block
endlocal

How it works

The setlocal command tells Windows that you want to use a temporary copy of the environment that will be discarded later. The endlocal command tells Windows to go ahead and throw away that temporary environment. What this does is ensure that any changes made to the environment in the script (especially to USERPROFILE) do not carry on past the end of the script.

Batch files use %0 to refer to the drive, path and name of the batch file itself. You can also insert codes to reference specific parts of the batch file location. For example, %~d0 refers to just the drive letter, and %~p0 refers to just the path. These codes can be combined. Thus, %~dp0 refers to the drive letter and path where the batch file is located. We use these to change drive to the removable drive, change directory to the directory which contains the script, and set the value of USERPROFILE

USERPROFILE is the environment variable that Windows programs use to locate your user home directory. Here we set it to point to the drive and directory where this script lives, in order to trick GRAMPS into thinking that is your home directory.

Once everything is set up, the script simply runs GRAMPS.

Linux

gramps.sh


How it works

Maemo

If Don gets GRAMPS ported to his Nokia N810, a variation of this script ought to work there, too. That would allow keeping the data on a flash drive, and switching back and forth between PC and N810 GRAMPS. Please, Don?  :)

GRAMPS 2.2

The instructions and scripts here are intended for use with GRAMPS 3.0. A similar technique could be used with GRAMPS 2.2, but doing so is discouraged due to the risk of database corruption, especially on Linux.

=============

Jim Sack

Hmmm, have you tried something like starting gramps with some environment variable help?

In *nix, it should even work as from the command line:

HOME=/media/usb_volname/GDB gramps

Or on Windows, maybe a .bat file (some guesswork here -- not tested!)

oup=%USERPROFILE%
set USERPROFILE=e:\GDB
gramps
set USERPROFILE=%oup%

This probably needs more help. Maybe pass the drive letter as a parm.


Anyway, the idea is that the database and preferences would both be in the GDB dir of the removable device.


Dave Walton

Why no, as a matter of fact, I had NOT tried something like that. Nor would I have known which var to mess with. Thanks for the tip!

Using your Windows example as a starting point, I came up with this batch file, which I call gramps.bat:

@echo off

REM Make changes to environment variables local to this block
setlocal

REM Set USERPROFILE to the drive and path of this script
set USERPROFILE=%~dp0

REM Go to this script location for good measure
%~d0
cd "%~p0"

REM I don't know how to locate and start GRAMPS without hardcoding
REM the drive and path for it and Python.
C:\Python25\pythonw.exe "C:\Program Files\gramps\gramps.py"

REM End the local environment block
endlocal

When this script is run, it starts gramps with the profile set to the drive and directory that contains the script. So you attach the drive, double click the batch file, and gramps starts up, no matter which letter the drive got. Assuming windows gramps and all its dependencies are correctly installed on that computer, of course. If I knew how to set up those on the removable drive, too, it'd be perfect. But this path stuff was the most critical part of the problem.

Right now I'm stuck on a loaner computer, but when I get a new one set up I'll be able to do a *nix version, too. They'd also be good content for a "How do I..." on the wiki.


Jim Sack

Yea! That would be great. You might also add an expanded discussion version (or footnotes) explaining the technical/syntax details.

I await the educational opportunity.  :-)


Jim Sack

Benny Malengier wrote:

> > How do I run GRAMPS from a stick?

I think Dave will be explaining it in human language, but here it is in geek:

cp -a ~/.gramps /media/disk/
HOME=/media/disk gramps

when you plug it into someone else's machine, you have to substitute the appropriate mount point on that host for the HOME value.

To accommodate visiting relatives running Windows, you might do

cp -a ~/.gramps/* /media/disk/gramps
USERPROFILE=/media/disk gramps

Well, sorry, but that doesn't quite work in Linux -- it almost does, except for a hardcoded

DATABASE_PATH : '~/.gramps/grampsdb'

in Config/_GrampsConfigKeys.py <maybe that sh/could be fixed?>

You'll probably want to put Dave's batch file to do the trick on the actual Windows system. a dos shortcut file might actually allow the same database to work on Win and Linux. Hmmm, how does one make a shortcut file on (eg) vfat from linux?


Category:How do I...