Re: Is UNIX home directory really needed to run root? (fwd)

From: Christophe Delaere <christophe.delaere_at_cern.ch>
Date: Mon, 27 Aug 2007 17:19:15 +0200


Hi Dimitri,

It was quite a long time ago already, but I remember defining the home in my condor scripts with something like
export HOME=$CONDOR_SCRATCH_DIR

I was then able to run ROOT jobs.

Cheers,
Christophe.

On Monday 27 August 2007, Fons Rademakers wrote:
> Hi Dimitri,
>
> a priory the HOME directory is not needed anymore. Before removing the
> Fatal() I've to check carefully if all occasions where we use the
> HomeDirectory is properly protected against no-home directory.
>
> Cheers, Fons.
>
> > ---------- Forwarded message ----------
> > Date: Fri, 24 Aug 2007 20:19:32 -0400
> > From: Dimitri Bourilkov <bourilkov_at_phys.ufl.edu>
> > To: roottalk_at_pcroot.cern.ch
> > Subject: [ROOT] Is UNIX home directory really needed to run root?
> >
> > Hi,
> >
> > Having succeeded to use condor flocking to submit (my) batch jobs, I
> > am trying to submit _root_ batch jobs (root -b -q xxx.C) to a remote
> > farm where I do not have a unix account (condor is taking care of this),
> > just an NFS mounted working space. The jobs are running into problems,
> > terminating with the message:
> >
> > Fatal in <TROOT::InitSystem>: HOME directory not set
> >
> > Looking in the root source this comes from the snippets enclosed below.
> > If I read them correctly, things are more or less hardcoded to look for
> > the unix user and get the home dir from the passwd file.
> >
> > My questions are:
> > 1) Is this really needed to run root?
> > 2) Or defining a dir where root can read/write could be enough, and
> > how to achieve this (if needed, modifying the code)?
> >
> > Thanks, Dimitri
> >
> > PS Actually if mydir[kMAXPATHLEN] is initialized before calling
> > TUnixSystem::UnixHomedirectory maybe things will behave differently, is
> > this feasible and a viable solution?
> >
> > ============================
> > void TROOT::InitSystem()
> > {
> > // Initialize operating system interface.
> >
> > if (gSystem == 0) {
> > #if defined(R__UNIX)
> > gSystem = new TUnixSystem;
> > #elif defined(R__WIN32)
> > gSystem = new TWinNTSystem;
> > #elif defined(R__VMS)
> > gSystem = new TVmsSystem;
> > #else
> > gSystem = new TSystem;
> > #endif
> >
> > if (gSystem->Init())
> > fprintf(stderr, "Fatal in <TROOT::InitSystem>: can't init
> > operating system layer\n");
> >
> > if (!gSystem->HomeDirectory())
> > fprintf(stderr, "Fatal in <TROOT::InitSystem>: HOME directory
> > not set\n");
> > .....
> >
> > ===============================
> > and in TUnixSystem
> > ===============================
> > //_______________________________________________________________________
> >_______
> >
> > const char *TUnixSystem::HomeDirectory(const char *userName)
> > {
> > // Return the user's home directory.
> >
> > return UnixHomedirectory(userName);
> > }
> >
> > //---- directories
> > -------------------------------------------------------------
> >
> > //_______________________________________________________________________
> >_______
> >
> > const char *TUnixSystem::UnixHomedirectory(const char *name)
> > {
> > // Returns the user's home directory.
> >
> > static char path[kMAXPATHLEN], mydir[kMAXPATHLEN];
> > struct passwd *pw;
> >
> > if (name) {
> > pw = getpwnam(name);
> > if (pw) {
> > strncpy(path, pw->pw_dir, kMAXPATHLEN);
> > return path;
> > }
> > } else {
> > if (mydir[0])
> > return mydir;
> > pw = getpwuid(getuid());
> > if (pw) {
> > strncpy(mydir, pw->pw_dir, kMAXPATHLEN);
> > return mydir;
> > }
> > }
> > return 0;
> > }

-- 
Christophe DELAERE
CERN fellow
Tel   : 74307 (from outside: +41 22 76 74307 ) 
Office: 28 1-030 Mailbox: G06100
E-mail: christophe.delaere_at_cern.ch
Home  : http://www.fynu.ucl.ac.be/users/c.delaere
Received on Mon Aug 27 2007 - 17:19:26 CEST

This archive was generated by hypermail 2.2.0 : Wed Aug 29 2007 - 23:50:02 CEST