[R-sig-Debian] "Debain" way of installing packages

Gorjanc Gregor Gregor.Gorjanc at bfro.uni-lj.si
Sun Apr 24 16:04:47 CEST 2005


Hello!

I use Debian GNU/Linux at work and I really like apt-get tool. As far as
I understand the whole picture, there are now some Debian packages of R
packages. Build of Debian packages is done automagically by Perl script.

By the way, what is the status of Debianizing R packages? Is it stopped, 
just holded, ... I don't know so I am asking
There is also Bioconductor and I am aware that the list of packages is 
growing quite fast and afterall I understand that there is probably to 
few people to work on Debianization.

The main point of this mail is however installation. I usually first
try to use apt-get install and if there is no Debian package I use
R tools. However some packages that I have already installed with R tools
might  eventually appear as Debian packages, ... or I might use 
update.packages() for Debian packages. By the way is field
'Package-Manager: Debian' already implemented. I would check, but I 
unfortunately don't have Debain at home.

I was thinking on some functions or eventually an R package r-debian,
which would ease this installation dilemma. Actually I wrote something
already in december but put it off. It is given bellow. It is probably
far from optimal but it was just a proof of concept. Many more functions
would be needed to fuzz everything up. Any comments?

debian.install.packages <- function(package, ...) {

    # Description:
    # Installs package on Debian GNU/Linux system. For given R package it
    # tries to get Debian package and install/upgrade it with apt-get if it
    # exists.  Otherwise install.packages() is used.
    # Gregor GORJANC 2004-12-30

    # Arguments:
    # package: R package name as character, only one
    # ...: other parameters for install.packages() or update.packages()

    # Examples:
    # debian.install.packages("Design")

    # Code:
    # apt-get update i.e. refresh list of Debian packages
    system(apt-get update)

    # Transform R package name to Debian package name policy i.e change R
    # package name to lowercase and test if this Debian package exists
    # (test1). This could be done without grep, but then it is not possible
    # to test on exit status, since apt-cache search always returns 0.
    packagelow <- tolower(package)
    tmp1 <- c("system(\"apt-cache search ^r- | grep")
    tmp2 <- c("| awk '{print $1}'\", intern = TRUE\)")
    tmp3 <- as.expression(paste(tmp1, packagelow, tmp2, "\n"))
    deb <- eval(parse(file = "", text = tmp3))

    cat("\nR package:", package, "\n")
    cat("Corresponding Debian package name:", deb, "\n")

    # Package install/update or upgrade in apt meaning
    if (length(deb) != 0) { # Debian package does exist
        cat("Debian package", deb, "exists: yes\n")
        cat("Proceeding with apt-get.\n")

        # apt-get install, which can also be used for package upgrade
        tmp1 <- c("system(\"apt-get install")
        tmp2 <- as.expression(paste(tmp1, deb, "\")", "\n"))
        eval(parse(file = "", text = tmp2))
    }
    else { # Debian package doesn't exist or something went wrong in test1
        cat("Debian package", deb, "exists: no\n")
#        cat("Proceeding with install/update.packages().\n")
#        install.update.packages(package, ...)
        cat("Proceeding with install.packages().\n")
        install.packages(package, ...)
    }
}

One more thing. Why is r-noncran-lindsey and not r-other-lindsey?

--
Lep pozdrav / With regards,
    Gregor Gorjanc

------------------------------------------------------------------------
University of Ljubljana
Biotechnical Faculty       URI: http://www.bfro.uni-lj.si/MR/ggorjan
Zootechnical Department    email: gregor.gorjanc <at> bfro.uni-lj.si
Groblje 3                  tel: +386 (0)1 72 17 861
SI-1230 Domzale            fax: +386 (0)1 72 17 888
Slovenia



More information about the R-SIG-Debian mailing list