[R-SIG-Mac] Fwd: Re: [R] Package seems to be present but library don't find it

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Apr 4 15:58:59 CEST 2012


On Wed, 4 Apr 2012, Duncan Murdoch wrote:

> On 12-04-03 3:29 PM, Simon Urbanek wrote:
>> 
>> On Apr 3, 2012, at 3:09 PM, Berend Hasselman wrote:
>> 
>>> 
>>> On 03-04-2012, at 20:54, Duncan Murdoch wrote:
>>> 
>>>> On 03/04/2012 1:04 PM, Berend Hasselman wrote:
>>>>> On 03-04-2012, at 18:50, Duncan Murdoch wrote:
>>>>> 
>>>>>> This is a message from R-help about installing a package in OSX.  The 
>>>>>> NAMESPACE file contains an error, but the user didn't see the error 
>>>>>> message when he installed from the Mac GUI.  Is R.app missing one of 
>>>>>> the output streams?  I see the following in the Windows Rgui:
>>>>>> 
>>>>>>> install.packages("d:/temp/HelloWorld_1.0.tar.gz", type="source", 
>>>>>>> repos=NULL)
>>>>>> * installing *source* package 'HelloWorld' ...
>>>>>> ** R
>>>>>> ** preparing package for lazy loading
>>>>>> ** help
>>>>>> Warning: 
>>>>>> C:/Users/murdoch/AppData/Local/Temp/Rtmpm6LVhP/R.INSTALLc4762d6689/HelloWorld/man/HelloWorld-package.Rd:32: 
>>>>>> All text must be in a section
>>>>>> Warning: 
>>>>>> C:/Users/murdoch/AppData/Local/Temp/Rtmpm6LVhP/R.INSTALLc4762d6689/HelloWorld/man/HelloWorld-package.Rd:33: 
>>>>>> All text must be in a section
>>>>>> *** installing help indices
>>>>>> ** building package indices
>>>>>> ** testing if installed package can be loaded
>>>>>> Error in namespaceExport(ns, exports) : undefined exports: HelloWorld
>>>>>> Error: loading failed
>>>>>> Execution halted
>>>>>> ERROR: loading failed
>>>>>> * removing 'F:/R/svn/R-2-15-branch/library/HelloWorld'
>>>>>> Warning messages:
>>>>>> 1: running command 'F:/R/svn/R-2-15-branch/bin/i386/R CMD INSTALL -l 
>>>>>> "F:/R/svn/R-2-15-branch/library"   "d:/temp/HelloWorld_1.0.tar.gz"' had 
>>>>>> status 1
>>>>>> 2: In install.packages("d:/temp/HelloWorld_1.0.tar.gz", type = 
>>>>>> "source",  :
>>>>>>   installation of package ‘d:/temp/HelloWorld_1.0.tar.gz’ had non-zero 
>>>>>> exit status
>>>>> 
>>>>> I have tried this.
>>>>> The package is installed without complaints in both R.app and an 
>>>>> interactive R from the Terminal.
>>>>> 
>>>>> Installation only seems to fail with R CMD INSTALL.
>>>> 
>>>> Is it really installed, or are there just no error messages?  Marc was 
>>>> finding that library(HelloWorld) was failing, and he didn't understand 
>>>> why.
>>> 
>>> 
>>> R GUI:
>>> ===============================
>>> No messages. Installed.
>>> library(HelloWorld) gives
>>> 
>>>> library(HelloWorld)
>>> Error in library(HelloWorld) :
>>>   ‘HelloWorld’ is not a valid installed package
>>> 
>>> 
>>> R CMD INSTALL:
>>> ===============================
>>> gives an error message and does not install.
>>> library(HelloWorld) gives
>>> 
>>>> library(HelloWorld)
>>> Error in library(HelloWorld) : there is no package called ‘HelloWorld’
>>> 
>> 
>> Ah, now I got it -- this is a very nice user error, the GUI is entirely 
>> innocent here -- note that the default in install.packages() is *binary* 
>> installation and .tar.gz is the format of both source and binary packages 
>> on OS X, so R will happily treat the downloaded source package as binary so 
>> you don't get any output, because the package is simply unpacked and not 
>> compiled. However, that is not a valid package so you can't load it.
>> 
>> What the user intended was
>> 
>>> install.packages("HelloWorld_1.0.tar.gz", repos = NULL, type='source')
>> * installing *source* package ‘HelloWorld’ ...
>> ** R
>> ** preparing package for lazy loading
>> ** help
>> Warning: 
>> /private/var/folders/Sq/SqwOn3XRE7WB0ZmJXYRnfE+++TI/-Tmp-/RtmpxI4NuG/R.INSTALL144c53d879430/HelloWorld/man/HelloWorld-package.Rd:32: 
>> All text must be in a section
>> Warning: 
>> /private/var/folders/Sq/SqwOn3XRE7WB0ZmJXYRnfE+++TI/-Tmp-/RtmpxI4NuG/R.INSTALL144c53d879430/HelloWorld/man/HelloWorld-package.Rd:33: 
>> All text must be in a section
>> *** installing help indices
>> ** building package indices ...
>> ** testing if installed package can be loaded
>> Error in namespaceExport(ns, exports) : undefined exports: HelloWorld
>> Error: loading failed
>> Execution halted
>> ERROR: loading failed
>> * removing 
>> ‘/Library/Frameworks/R.framework/Versions/2.14/Resources/library/HelloWorld’
>> * restoring previous 
>> ‘/Library/Frameworks/R.framework/Versions/2.14/Resources/library/HelloWorld’
>> Warning message:
>> In install.packages("HelloWorld_1.0.tar.gz", repos = NULL, type = "source") 
>> :
>>    installation of package ‘HelloWorld_1.0.tar.gz’ had non-zero exit status
>> 
>> 
>> which fails as it should ...
>> 
>> So the only thing here is that binary install should perhaps check the 
>> content and refuse to install source package as binary or something like 
>> that ... there is not such problem in Windows, because there the binaries 
>> use different format altogether (zip vs tgz).
>> 
>
> Okay, that makes sense now.
>
> One other possible change: install.packages() currently guesses "repos=NULL" 
> based on the look of the package name:  e.g. if type=="mac.binary" and the 
> name matches "\\.tgz$", repos is set to NULL.  Perhaps the type could also be 
> guessed from the name if unspecified, and at least a message could be given 
> if it doesn't match the default.

Something along those lines is in progress, for type="both" which is 
intended to eventually become the default on Windows and Mac.  But we 
need more server-side support in place first.

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595


More information about the R-SIG-Mac mailing list