[Rd] Rcmd check fails on Windows Samba network path in R 2.9.1

Duncan Murdoch murdoch at stats.uwo.ca
Wed Jul 22 16:28:28 CEST 2009


On 7/22/2009 9:10 AM, Kevin R. Coombes wrote:
> Hi,
> 
> Thanks; that confirms that the problem originates where I thought it 
> did, and provides a fix from within R.
> 
> However, the original problem was that running "Rcmd check" from a 
> Windows/DOS command prompt on a package on a mounted Samba network drive 
> fails.  The failure occurs because of the file.access call in 
> "install.R", which appears to get incorrect information from the 
> operating system.  Is it possible to get install.R changed so it works 
> in this situation?


Of course that's possible, but I'd put it at a low priority.  The right 
solution here is to fix Samba.  A simple workaround is to copy the 
package to a non-Samba drive.  Since this is not our bug, and it has a 
simple workaround, I don't want to put an effort into fixing it.

Duncan Murdoch

> 
> (Under the philosophy that "it is easier to beg forgiveness than to ask 
> permission", perhaps install R should just try to create/write what it 
> wants and only fail iby checking the result rather than 'asking 
> permission"....)
> 
> Best,
>     Kevin
> 
> Henrik Bengtsson wrote:
>> See r-devel thread '[Rd] file.access() on network (mounted) drive on
>> Windows Vista' on Nov 26, 2008:
>>
>>   http://tolstoy.newcastle.edu.au/R/e5/devel/08/11/0806.html
>>
>> where it was concluded that file.access() is "not 100%", e.g.
>> file.access() and file.info() can give different answers.
>>
>> I added fileAccess(..., safe=TRUE) to R.utils, which imitates
>> file.access() but relies also on file.info() and file.exists() to
>> infer the rights.  It is still not 100% but (hopefully) closer than
>> file.access().
>>
>> /H
>>
>> On Tue, Jul 21, 2009 at 1:55 PM, Kevin R.
>> Coombes<krcoombes at mdacc.tmc.edu> wrote:
>>   
>>> Hi,
>>>
>>> The problem almost certainly has something to do with Samba.  We also have a
>>> NetApp file system, and copying the package source to that drive and running
>>> Rcmd check from Windows works just fine.
>>>
>>> When running the commands from an interactive R session, file_test returns
>>> TRUE and file.access to test write permission indicates a failure, even
>>> though that information is incorrect.Here is a session transcript:
>>>
>>> -----------------------------------------
>>>     
>>>> getwd()
>>>>       
>>> [1] "n:/krc/Umpire/R-Package"
>>>     
>>>> lib <- "Umpire.Rcheck"
>>>> file_test("-d", lib)
>>>>       
>>> [1] TRUE
>>>     
>>>> file.access(lib, 2)
>>>>       
>>> Umpire.Rcheck
>>>          -1
>>>     
>>>> dir.create(paste(lib, "testdir", sep='/'))
>>>> dir(lib)
>>>>       
>>> [1] "00check.log"   "00install.out" "testdir"     > sessionInfo()
>>> R version 2.9.1 (2009-06-26)
>>> i386-pc-mingw32
>>>
>>> locale:
>>> LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
>>> States.1252;LC_MONETARY=English_United
>>> States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
>>>
>>> attached base packages:
>>> [1] stats     graphics  grDevices utils     datasets  methods   base
>>> ----------------------------------------
>>> Again, this all worked (and still works) correctly in 2.8.1.
>>>
>>>   Kevin
>>>
>>> Tony Plate wrote:
>>>     
>>>> This error message looks like it comes from src/library/tools/R/install.R,
>>>> which contains the following test:
>>>>
>>>>   if (!.file_test("-d", lib) || file.access(lib, 2L))
>>>>       stop("ERROR: no permission to install to directory ",
>>>>            sQuote(lib), call. = FALSE)
>>>>
>>>> The function .file_test() is defined earlier in the same file (it looks at
>>>> file.info(lib)$isdir) and appears to be intended to be the same as
>>>> utils:::file_test().
>>>>
>>>> You could start trying to figure out what the problem is by trying these
>>>> calls on the directory in question from an interactive R session.
>>>> (They seem to work as intended on my Windows system with a NetApp file
>>>> system mounted on a letter drive.)
>>>>
>>>> -- Tony Plate
>>>>
>>>> Kevin R. Coombes wrote:
>>>>       
>>>>> Hi,
>>>>>
>>>>> I have just updated R from version 2.8.1 to version 2.9.1.  I am running
>>>>> Windows XP Professional, Service Pack 3.
>>>>>
>>>>> With the update, I decided to update a set of packages that I maintain by
>>>>> compiling them for the new version.  Everything worked fine except for one
>>>>> package.  This package is unique (among the six I was working on) in that is
>>>>> stored on a UNIX-based file server that is exported to the Windows network
>>>>> via Samba.  The root of that network path is mapped to drive "N:" on the
>>>>> local machine.
>>>>>
>>>>> 'Rcmd check' fails for this package under 2.9.1.  The error message in
>>>>> '00install.out'  is:
>>>>> "Error: ERROR: no permission to install to directory
>>>>> 'N:/krc/Umpire/R-Package/Umpire.Rcheck'"
>>>>>
>>>>> 'Rcmd check' works for this package under 2.8.1.
>>>>>
>>>>> 'Rcmd check' works for this package if the directory is copied onto a
>>>>> local hard drive instead of the network drive.
>>>>>
>>>>> 'Rcmd build' and 'Rcmd build --binary' work under both versions.
>>>>>
>>>>> It would be nice if someone could figure out what has changed and fix
>>>>> it....
>>>>>
>>>>> Best,
>>>>>   Kevin Coombes
>>>>>
>>>>> ______________________________________________
>>>>> R-devel at r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>>
>>>>>         
>>> ______________________________________________
>>> R-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>>
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list