Cron Acronis
2016-Feb-10 15:50 UTC
[R-sig-Debian] Change Rscript and `/usr/lib/R/bin/R` relation
Dear all, I am trying to use multiple version of R unpacked from CRAN deb files. It does work successfully, except for some packages installation, whether Rscript has been used. I have configured alternatives and switch R environments without any problem and can install most of the packages. '=====================================================$ update-alternatives --display R R - auto mode link currently points to /opt/R/3.2.3/usr/lib/R/bin/R /opt/R/3.2.3/usr/lib/R/bin/R - priority 200 /usr/lib/R/bin/R - priority 100 Current 'best' version is '/opt/R/3.2.3/usr/lib/R/bin/R'. $ update-alternatives --display Rscript Rscript - auto mode link currently points to /opt/R/3.2.3/usr/lib/R/bin/Rscript /opt/R/3.2.3/usr/lib/R/bin/Rscript - priority 200 /usr/lib/R/bin/Rscript - priority 100 Current 'best' version is '/opt/R/3.2.3/usr/lib/R/bin/Rscript'. '===================================================== Rscript always invokes `/usr/lib/R/bin/R`, but my alternatives are configured against `/usr/bin/R` '=====================================================$ Rscript --verbose -e 'Sys.getenv("R_HOME")' running '/usr/lib/R/bin/R --slave --no-restore -e Sys.getenv("R_HOME")' [1] "/usr/lib/R" '===================================================== As have been mentioned by Dirk Eddelbuettel, in order to make Rscript invoke correct R, I can adjust `PATH` environment variable. Which was done, but in my case didn't work out. Rscript still calls `/usr/ lib/R/bin/R` '=====================================================$ env | grep PATH PATH=/opt/R/3.2.3/usr/lib/R/bin:/opt/python/conda/bin::/usr/local/sbin:/ usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games $ Rscript --version && Rscript --verbose -e 'print("Hello")' R scripting front-end version 3.2.3 (2015-12-10) running '/usr/lib/R/bin/R --slave --no-restore -e print("Hello")' [1] "Hello" '===================================================== Could you please advise where I should dig further in order to force Rscript to use `/usr/bin/R` or `/opt/R/3.2.3/usr/lib/R/bin/R`? Regards, Cron Acronis.
Dirk Eddelbuettel
2016-Feb-10 16:18 UTC
[R-sig-Debian] Change Rscript and `/usr/lib/R/bin/R` relation
Thanks for bringing the question over from StackOverflow [1]. I am not very impressed that you STILL hide behind a pseudonym and I am starting to question my sanity as to why I take time out to help someone like that. Anyway, read on ... [1] http://stackoverflow.com/questions/35313704/rscript-launch-custom-r/ On 10 February 2016 at 15:50, Cron Acronis wrote: | Dear all, | | I am trying to use multiple version of R unpacked from CRAN deb files. That will not work "as is". They have their path baked in. You could expand them into a Docker container each, and invoke those. You _could_ try re-setting RHOME, R_HOME, ... But rest assured that you attempt to deploy R in a way NOT foreseen or designed by the authors. | It does work successfully, except for some packages installation, whether | Rscript has been used. I have configured alternatives and switch R | environments without any problem and can install most of the packages. | | '=====================================================| $ update-alternatives --display R | R - auto mode | link currently points to /opt/R/3.2.3/usr/lib/R/bin/R | /opt/R/3.2.3/usr/lib/R/bin/R - priority 200 | /usr/lib/R/bin/R - priority 100 | Current 'best' version is '/opt/R/3.2.3/usr/lib/R/bin/R'. | | | $ update-alternatives --display Rscript | Rscript - auto mode | link currently points to /opt/R/3.2.3/usr/lib/R/bin/Rscript | /opt/R/3.2.3/usr/lib/R/bin/Rscript - priority 200 | /usr/lib/R/bin/Rscript - priority 100 | Current 'best' version is '/opt/R/3.2.3/usr/lib/R/bin/Rscript'. | '=====================================================| | Rscript always invokes `/usr/lib/R/bin/R`, but my alternatives are | configured against `/usr/bin/R` | | '=====================================================| $ Rscript --verbose -e 'Sys.getenv("R_HOME")' | running | '/usr/lib/R/bin/R --slave --no-restore -e Sys.getenv("R_HOME")' | | [1] "/usr/lib/R" | '=====================================================| | As have been mentioned by Dirk Eddelbuettel, in order to make Rscript | invoke correct R, I can adjust `PATH` environment variable. That presumed a local build into the location where PATH finds it. That is how some R Core members use different versions, and that approach 'was good enough for me' too. You are overcomplicating things here and get to pick up the pieces. | Which was done, but in my case didn't work out. Rscript still calls `/usr/ | lib/R/bin/R` | | '=====================================================| $ env | grep PATH | PATH=/opt/R/3.2.3/usr/lib/R/bin:/opt/python/conda/bin::/usr/local/sbin:/ | usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games | | | $ Rscript --version && Rscript --verbose -e 'print("Hello")' | R scripting front-end version 3.2.3 (2015-12-10) | running | '/usr/lib/R/bin/R --slave --no-restore -e print("Hello")' | | [1] "Hello" | '=====================================================| | | Could you please advise where I should dig further in order to force | Rscript to use `/usr/bin/R` or `/opt/R/3.2.3/usr/lib/R/bin/R`? Build from source into the chosen location. | Regards, Cron Acronis. In the future, use a real name if you want real help from real people. Dirk | _______________________________________________ | R-SIG-Debian mailing list | R-SIG-Debian at r-project.org | https://stat.ethz.ch/mailman/listinfo/r-sig-debian -- http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
Alexey Zaharov
2016-Feb-12 15:11 UTC
[R-sig-Debian] Change Rscript and `/usr/lib/R/bin/R` relation
On Wed, 10 Feb 2016 10:18:51 -0600, Dirk Eddelbuettel wrote:> Thanks for bringing the question over from StackOverflow [1]. I am not > very impressed that you STILL hide behind a pseudonym and I am starting > to question my sanity as to why I take time out to help someone like > that. Anyway, read on ... > > [1] http://stackoverflow.com/questions/35313704/rscript-launch-custom-r/ > > On 10 February 2016 at 15:50, Cron Acronis wrote: > | Dear all, > | > | I am trying to use multiple version of R unpacked from CRAN deb files. > > That will not work "as is". They have their path baked in. > > You could expand them into a Docker container each, and invoke those. > > You _could_ try re-setting RHOME, R_HOME, ... But rest assured that > you attempt to deploy R in a way NOT foreseen or designed by the > authors. > > | It does work successfully, except for some packages installation, > whether | Rscript has been used. I have configured alternatives and > switch R | environments without any problem and can install most of the > packages. > | > | '=====================================================> | $ update-alternatives --display R | R - auto mode | link currently > points to /opt/R/3.2.3/usr/lib/R/bin/R | /opt/R/3.2.3/usr/lib/R/bin/R - > priority 200 | /usr/lib/R/bin/R - priority 100 | Current 'best' version > is '/opt/R/3.2.3/usr/lib/R/bin/R'. > | > | > | $ update-alternatives --display Rscript | Rscript - auto mode | link > currently points to /opt/R/3.2.3/usr/lib/R/bin/Rscript | > /opt/R/3.2.3/usr/lib/R/bin/Rscript - priority 200 | > /usr/lib/R/bin/Rscript - priority 100 | Current 'best' version is > '/opt/R/3.2.3/usr/lib/R/bin/Rscript'. > | '=====================================================> | > | Rscript always invokes `/usr/lib/R/bin/R`, but my alternatives are | > configured against `/usr/bin/R` > | > | '=====================================================> | $ Rscript --verbose -e 'Sys.getenv("R_HOME")' > | running | '/usr/lib/R/bin/R --slave --no-restore -e > Sys.getenv("R_HOME")' > | > | [1] "/usr/lib/R" > | '=====================================================> | > | As have been mentioned by Dirk Eddelbuettel, in order to make Rscript > | invoke correct R, I can adjust `PATH` environment variable. > > That presumed a local build into the location where PATH finds it. That > is how some R Core members use different versions, and that approach > 'was good enough for me' too. You are overcomplicating things here and > get to pick up the pieces. > > | Which was done, but in my case didn't work out. Rscript still calls > `/usr/ | lib/R/bin/R` > | > | '=====================================================> | $ env | grep PATH | > PATH=/opt/R/3.2.3/usr/lib/R/bin:/opt/python/conda/bin::/usr/local/sbin:/ > | > usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games > | > | > | $ Rscript --version && Rscript --verbose -e 'print("Hello")' > | R scripting front-end version 3.2.3 (2015-12-10) > | running | '/usr/lib/R/bin/R --slave --no-restore -e > print("Hello")' > | > | [1] "Hello" > | '=====================================================> | > | > | Could you please advise where I should dig further in order to force | > Rscript to use `/usr/bin/R` or `/opt/R/3.2.3/usr/lib/R/bin/R`? > > Build from source into the chosen location. > > | Regards, Cron Acronis. > > In the future, use a real name if you want real help from real people. > > Dirk >Dear Dirk, Probably you would like to know, that I have managed to solve the problem by using `schroot`. It can attach current user `home` folder to `rootfs` from `chroot` where. After I have configured the `trusty64`, I have just created a clone. Inside the clone I have installed another version of R from CRAN repo. <--------------------------------START-------------> root at chroot-test:/# schroot -l chroot:trusty64 chroot:trusty64_clone $ cat /etc/schroot/chroot.d/trusty64.conf [trusty64] description=Ubuntu 14.04 Trusty Tahr directory=/test/schroot/trusty64 users=quant type=directory profile=desktop #personality=linux preserve-environment=true root-groups=root $ cat /etc/schroot/chroot.d/trusty64_clone.conf [trusty64_clone] description=Ubuntu 14.04 Trusty Tahr directory=/test/schroot/trusty64 users=quant type=directory profile=desktop #personality=linux preserve-environment=true root-groups=root root at chroot-test:/etc# debootstrap --variant=minbase --arch amd64 trusty / test/schroot/trusty64/ http://archive.ubuntu.com/ubuntu/ root at chroot-test:/etc# schroot -c trusty64 -u quant root at chroot-test:/etc# schroot -c trusty64_clone -u quant <--------------------------------END---------------> -- Regards. Alexey.