Thanks for the tip Simon,
i've just written a simplified version of install.packages -- 
install.package.file which will silently R CMD INSTALL a package, assuming 
you've already downloaded it & if there's an installation problem, the R CMD 
INSTALL output is spat to stderr. Code available if anyone's interested

cheers,
Mark


On 11/10/2011, at 12:23 PM, Simon Urbanek wrote:

> 
> On Oct 10, 2011, at 8:48 PM, Mark Cowley wrote:
> 
>> Dear list,
>> (this is a follow up from a previous query)
>> 
>> Why does R CMD INSTALL write most of its messages to stderr? If it wrote to 
>> stdout, then we could capture its output within an R session when calling 
>> sink("stdout.txt", type="output")
>> install.packages("MASS", type="source")
>> sink()
>> 
>> As it stands, the stderr messages can't be captured via 
>> sink/capture.output/suppressMessages within an R session. Interestingly, the 
>> make output goes to stdout, but the R messages go to stderr:
>> 
>> # the 'make' output goes to stdout
>> $ R --vanilla CMD INSTALL -l /tmp MASS_7.3-14.tar.gz 2>/dev/null
>> gcc-4.2 -arch i386 -std=gnu99 
>> -I/Library/Frameworks/R.framework/Resources/include 
>> -I/Library/Frameworks/R.framework/Resources/include/i386  
>> -I/usr/local/include    -fPIC  -g -O2 -c MASS.c -o MASS.o
>> gcc-4.2 -arch i386 -std=gnu99 
>> -I/Library/Frameworks/R.framework/Resources/include 
>> -I/Library/Frameworks/R.framework/Resources/include/i386  
>> -I/usr/local/include    -fPIC  -g -O2 -c lqs.c -o lqs.o
>> gcc-4.2 -arch i386 -std=gnu99 -dynamiclib -Wl,-headerpad_max_install_names 
>> -undefined dynamic_lookup -single_module -multiply_defined suppress 
>> -L/usr/local/lib -o MASS.so MASS.o lqs.o 
>> -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework 
>> -Wl,CoreFoundation
>> gcc-4.2 -arch x86_64 -std=gnu99 
>> -I/Library/Frameworks/R.framework/Resources/include 
>> -I/Library/Frameworks/R.framework/Resources/include/x86_64  
>> -I/usr/local/include    -fPIC  -g -O2 -c MASS.c -o MASS.o
>> gcc-4.2 -arch x86_64 -std=gnu99 
>> -I/Library/Frameworks/R.framework/Resources/include 
>> -I/Library/Frameworks/R.framework/Resources/include/x86_64  
>> -I/usr/local/include    -fPIC  -g -O2 -c lqs.c -o lqs.o
>> gcc-4.2 -arch x86_64 -std=gnu99 -dynamiclib -Wl,-headerpad_max_install_names 
>> -undefined dynamic_lookup -single_module -multiply_defined suppress 
>> -L/usr/local/lib -o MASS.so MASS.o lqs.o 
>> -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework 
>> -Wl,CoreFoundation
>> 
>> # the R CMD INSTALL output goes to stderr
>> $ R --vanilla CMD INSTALL -l /tmp MASS_7.3-14.tar.gz >/dev/null
>> * installing *source* package ŒMASS‚ ...
>> ** libs
>> *** arch - i386
>> installing to /private/tmp/MASS/libs/i386
>> *** arch - x86_64
>> installing to /private/tmp/MASS/libs/x86_64
>> ** R
>> ** data
>> **  moving datasets to lazyload DB
>> ** inst
>> ** preparing package for lazy loading
>> ** help
>> *** installing help indices
>> ** building package indices ...
>> ** testing if installed package can be loaded
>> 
>> * DONE (MASS)
>> 
>> $ R --vanilla CMD INSTALL -l /tmp MASS_7.3-14.tar.gz &>/dev/null
>> # no output
>> 
>> Why do I care? i'm writing some software which uses R behind the scenes, and 
>> would like to suppress the messages that are produced by install.packages() 
>> when R libraries are being installed.
>> 
>> So, will it be possible for R CMD INSTALL output be written to stdout in the 
>> future?
>> 
> 
> It can simply with 2>&1
> 
> I agree that this doesn't help you with install.packages directly. There are 
> various degrees of ugliness that you can apply - ranging from using 
> INSTALL_opts to force routing to stdout, to using your own system() front-end 
> to handle the details yourself.
> 
> Why you don't simply use a variation of system("R -e 
> 'install.packages(...)'", ...) where you have full control over the routing 
> and yet sill use install.packages? That is generally how custom installers do 
> this ... It sort of seems what you are trying to do anyway since you don't 
> want the internal R output ... 
> 
> Cheers,
> Simon
> 
> 
>> kind regards,
>> Mark
>> 
>> 
>> -----------------------------------------------------
>> Mark Cowley, PhD
>> 
>> Pancreatic Cancer Program | Peter Wills Bioinformatics Centre
>> Garvan Institute of Medical Research, Sydney, Australia
>> -----------------------------------------------------
>> 
>> sessionInfo()
>> R version 2.13.1 (2011-07-08)
>> Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
>> 
>> locale:
>> [1] en_AU.UTF-8/en_AU.UTF-8/C/C/en_AU.UTF-8/en_AU.UTF-8
>> 
>> attached base packages:
>> [1] stats     graphics  grDevices utils     datasets  methods   base     
>> 
>> 
>>      [[alternative HTML version deleted]]
>> 
>> ______________________________________________
>> R-devel@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
> 

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to