From statho3 at web.de  Fri Oct 22 19:05:30 2004
From: statho3 at web.de (Thomas Stabla)
Date: Fri Oct 22 19:03:45 2004
Subject: [Rd] install.packages question / suggestion
Message-ID: <Pine.LNX.4.58.0410221848210.12388@spock.vulcan>

Hello,

when trying to write an R-file, which automatically installs and updates a 
given list of packages, I had two problems with install.packages()

1) install.packages("<package>") will install <package>, no matter if 
   <package> has already been installed.
2) the readline() at the end of install.packages, which asks the user, if 
   the downloaded files should be deleted, makes it difficult to 
   delete packages automatically after installation (I must admit, I'm not 
   quite familiar with R CMD BATCH)


Question/Request:
Is the behaviour in 1) intended?
2) I'd like to have another bool argument, which determines, if the 
downloaded files should be deleted.

Suggestion:
To change 1) I've made a small change to 

  R-2.0.0/src/library/utils/unix/install.packages.R

adding one line and moving another one. Here's the diff output


--- install.packages.R  2004-10-02 19:07:34.000000000 +0200
+++ install.packages.modified.R 2004-10-22 18:22:01.275986160 +0200
@@ -25,9 +25,9 @@
     }
     if(is.null(available))
         available <- CRAN.packages(contriburl = contriburl, method = 
method)
+    have <- .packages(all.available = TRUE)
     if(dependencies) { # check for dependencies, recursively
         p0 <- p1 <- unique(pkgs) # this is ok, as 1 lib only
-        have <- .packages(all.available = TRUE)
         repeat {
             if(any(miss <- ! p1 %in% row.names(available))) {
                 cat("dependencies ", paste(sQuote(p1[miss]), sep=", "),
@@ -54,6 +54,8 @@
         }
     }

+    pkgs <- pkgs[ ! pkgs %in% have ]
+
     foundpkgs <- download.packages(pkgs, destdir = tmpd, available = available,
                                    contriburl = contriburl, method = method)




Best Regards,
Thomas Stabla
-------------- next part --------------
--- install.packages.R	2004-10-02 19:07:34.000000000 +0200
+++ install.packages.modified.R	2004-10-22 18:22:01.275986160 +0200
@@ -25,9 +25,9 @@
     }
     if(is.null(available))
         available <- CRAN.packages(contriburl = contriburl, method = method)
+    have <- .packages(all.available = TRUE)
     if(dependencies) { # check for dependencies, recursively
         p0 <- p1 <- unique(pkgs) # this is ok, as 1 lib only
-        have <- .packages(all.available = TRUE)
         repeat {
             if(any(miss <- ! p1 %in% row.names(available))) {
                 cat("dependencies ", paste(sQuote(p1[miss]), sep=", "),
@@ -54,6 +54,8 @@
         }
     }
 
+    pkgs <- pkgs[ ! pkgs %in% have ]
+    
     foundpkgs <- download.packages(pkgs, destdir = tmpd, available = available,
                                    contriburl = contriburl, method = method)
 

[Rd] install.packages question / suggestion
Thomas Stabla