[Rd] loading library from network share (PR#8982)

Tony Plate tplate at acm.org
Thu Jun 22 22:19:54 CEST 2006


I had thought that one needed to be careful using mapped network drive 
letters to access network shares under MS Windows -- the current mapping 
for drive letters can depend on who is current logged in.   For 
non-critical interactive sessions there should be no problems with using 
mapped network drive letters -- the dangerous scenario is running 
scheduled tasks on a server.

Microsoft XP docs say:
     Connecting to network drives

     Do not use a redirected drive for scheduled jobs
     that access the network. The Schedule service
     might not be able to access the redirected drive,
     or the redirected drive might not be present if a
     different user is logged on at the time the
     scheduled task runs. Instead, use UNC paths for
     scheduled jobs. For example:

     at 1:00pm my_backup \\server\share

     Do not use the following syntax, where x: is a
     connection made by the user:

     at 1:00pm my_backup x:

(this is from the documentation for the "At" command, 
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/at.mspx?mfr=true
)

In addition to Prof Ripley's suggestion of setting up drive mapping 
using domain controllers, another workaround might be doing something 
like "net use x: \\server\share" in a scheduled task script.

-- Tony Plate


Prof Brian Ripley wrote:
> On Wed, 21 Jun 2006, roy_kuraisa at merck.com wrote:
> 
> 
>>Thanks for the info.
>>
>>It's interesting that R can load the library using a network share naming
>>convention but that the library path has the "\" replaced with "/".  I guess
>>it's too much to ask for R not to muck with the file name provided (for a
>>variety of reasons).  My package works fine except for knowing the correct
>>library path.
>>
>>As for mapping a drive, that's not a good solution for us because it would
>>require users to always create a specific map drive (which on their desktop
>>may not be available; when we add packages to other network shares, requires
>>additional maps; etc).  Overall, it's not a very flexible solution for us.
> 
> 
> It can easily be done via the domain controller: my sysadmins do it.
> 
> 
>>My work around which, at least in my unique case, is a bit more flexible
>>(but a little more klunky) is to add code in .First.lib that substitutes
>>"\\" for "//" (because I need to read a cfg file in the "data" folder of the
>>package when it is loaded).
> 
> 
> This should work now that I have changed dirname (to do precisely that), 
> but as I have no suitable test examples I cannot be sure.
> 
> 
>>
>>cheers, roy
>>
>>
>>-----Original Message-----
>>From: Prof Brian Ripley [mailto:ripley at stats.ox.ac.uk]
>>Sent: Wednesday, June 21, 2006 1:57 AM
>>To: Kuraisa, Roy J (Rosetta)
>>Cc: R-bugs at biostat.ku.dk
>>Subject: Re: [Rd] loading library from network share (PR#8982)
>>
>>
>>This is not supported: network shares are a Windows 'feature' and not part
>>of R's conception of file paths.  The specific issue here is dirname(),
>>but it is widespread.
>>
>>You can always map shares to network drives, and that is common practice
>>everywhere I have been which has extensive Windows networks.
>>
>>We have changed the dirname case, but have no intention of supporting this
>>sort of file path in general, as one of the design goals of the Windows
>>port of R was to work as similarly to the Unix-alikes as possible (and to
>>share as much code as possible).
>>
>>On Wed, 14 Jun 2006, roy_kuraisa at merck.com wrote:
>>
>>
>>>Full_Name: roy kuraisa
>>>Version: 2.2.1
>>>OS: Windows XP SP2
>>>Submission from: (NULL) (155.91.28.232)
>>>
>>>
>>>When loading a library from network share drive (e.g., \\nnn\f1\f2\p1),
>>
>>when
>>
>>>First.lib is called, the libray name contains "/" instead of "\" resulting
>>
>>in an
>>
>>>invalid Windows filepath.
>>>
>>>Here's an example:
>>>
>>>>From R,
>>>>library(foo.lib="\\\\kodak\\research_genetics\\rlibs");
>>>
>>>Within First.lib,
>>>.First.lib <-function(lib, pkg)
>>>{
>>>   cat("lib name ",lib,"\n")
>>>}
>>>produces the output
>>>  lib name //kodak/research_genetics/rlibs
>>>
>>>______________________________________________
>>>R-devel at r-project.org mailing list
>>>https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>>
>>
>>
>



More information about the R-devel mailing list