On Sat, Jun 15, 2013 at 4:38 PM, Simon Urbanek <simon.urba...@r-project.org> wrote: > > On Jun 15, 2013, at 2:42 PM, Martin Maechler wrote: > >>>>>>> Dirk Eddelbuettel <e...@debian.org> >>>>>>> on Sat, 15 Jun 2013 10:45:04 -0500 writes: >> >>> On 15 June 2013 at 07:00, Dirk Eddelbuettel wrote: >>> | >>> | On 15 June 2013 at 07:47, Simon Urbanek wrote: | | >>> Because update.packages() doesn't restore the >>> group-writable bit. Which leads us to my point that this >>> is not what you really want. >>> | >>> | Ooops. I'll take another look. >> >>> Done. "It works." For fairly generous definitions of >>> working. I'll detail: >> >>> i) My initial patch only used options() to set things. >>> Martin was not to enthralled with this and guided the >>> patch towards using --group-writable as an option. >> >>> ii) With --group-writable, installation works but updates >>> fail as noticed by Simon. >> >>> iii) If we fall back to using options() [ or an >>> environment variable ], things works. A log is below. >> >> Hmm, but this only works if everyone who calls update.packages() also has >> this options() setting, no? >> Why would the update keep the package files group writable otherwise ? >> If the updater has no group-writable option she can still update >> the package you installed, but you can no longer, right? >> >> I still think the approach to abolish all settings and just >> trigger group-writable package installation *when* the library >> directory is group writable is so simple we should adopt it, >> and can forget all options/ command line arguments / environment >> variables about this topic. >> > > I fully agree. Also thanks for summarizing the discussion earlier today - it > was dead on. >
Picking up a somewhat old thread...what is the final status of this? It doesn't look like an option was added to control the permissions of installed package files. It also seems that the --group-writable option to R CMD INSTALL is not present in R-3.0.1. So are we back to where we started? FWIW, I'd prefer a solution that respects the umask and is honored in install.packages(), update.packages(), etc. In my use case users will be installing packages most often within R with install.packages() (as opposed to R CMD INSTALL from the command line), and they will probably use install.packages() rather than update.packages() even for packages that are already installed. I'll probably use the inotify hack suggested earlier in the short term. Thanks, Dan > Thanks, > Simon > > > >> Martin >> >>> iv) I guess those of you who want the --group-writeable >>> option need to ensure it also works for update.packages() >>> as new option? >> >>> I am happy with what we have right now as it works in the >>> context established by my patch. Martin's addition of >>> --group-writable is a bit more ambitious and we may need >>> to enhance update.package(), or tell everybody to also >>> (??) use the option() setting, or environment variable. >> >>> Two things follow, a quick test script and a log from the >>> script. >> >>> Dirk >> >> >>> Script >>> >>> #!/bin/bash >>> >>> ## we use digest as an example as it is pretty small >>> cd ~/svn/digest >>> ls -l digest_0.6.?.tar.gz >>> >>> ## we make two assumptions: >>> ## >>> ## a) R-devel (called via a shell script wrapper) >>> ~/bin/R-devel.sh --version | head -1 >>> ## >>> ## b) An option has been set >>> cat /usr/local/lib/R-devel/lib/R/etc/Rprofile.site >>> >>> ## now install an older version so that we can upgrade later >>> ## this is running as 'edd' ie me >>> ~/bin/R-devel.sh CMD INSTALL digest_0.6.2.tar.gz >>> >>> ls -ld /usr/local/lib/R/site-library/digest/ >>> ls -lR /usr/local/lib/R/site-library/digest/ >>> >>> ## now try the upgrade as another user in the group >>> sudo su lmp -c '~edd/bin/R-devel.sh -e >>> "update.packages(repos=\"http://cran.r-project.org\", ask=FALSE, >>> lib.loc=\"/usr/local/lib/R/site-library\")"' >>> >>> ls -ld /usr/local/lib/R/site-library/digest/ >>> ls -lR /usr/local/lib/R/site-library/digest/ >>> >>> >>> >>> Session log >>> >>> edd@max:~$ /tmp/testRupgrade.sh >>> -rw-r--r-- 1 edd edd 53344 Nov 25 2012 digest_0.6.0.tar.gz >>> -rw-r--r-- 1 edd edd 76839 Jan 21 09:25 digest_0.6.1.tar.gz >>> -rw-r--r-- 1 edd edd 76771 Jan 25 11:33 digest_0.6.2.tar.gz >>> -rw-r--r-- 1 edd edd 78002 Feb 16 06:35 digest_0.6.3.tar.gz >>> R Under development (unstable) (2013-06-14 r62964) -- "Unsuffered >>> Consequences" >>> options("group.writable.pkgs"=TRUE) >>> * installing to library ‘/usr/local/lib/R/site-library’ >>> * installing *source* package ‘digest’ ... >>> ** libs >>> ccache gcc-4.7 -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -O3 -g0 -Wall -pipe -pedantic -std=gnu99 -c >>> aes.c -o aes.o >>> ccache gcc-4.7 -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -O3 -g0 -Wall -pipe -pedantic -std=gnu99 -c >>> crc32.c -o crc32.o >>> ccache gcc-4.7 -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -O3 -g0 -Wall -pipe -pedantic -std=gnu99 -c >>> digest.c -o digest.o >>> ccache gcc-4.7 -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -O3 -g0 -Wall -pipe -pedantic -std=gnu99 -c >>> md5.c -o md5.o >>> ccache gcc-4.7 -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -O3 -g0 -Wall -pipe -pedantic -std=gnu99 -c >>> raes.c -o raes.o >>> ccache gcc-4.7 -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -O3 -g0 -Wall -pipe -pedantic -std=gnu99 -c >>> sha1.c -o sha1.o >>> ccache gcc-4.7 -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -O3 -g0 -Wall -pipe -pedantic -std=gnu99 -c >>> sha2.c -o sha2.o >>> ccache gcc-4.7 -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -O3 -g0 -Wall -pipe -pedantic -std=gnu99 -c >>> sha256.c -o sha256.o >>> sha2.c: In function ‘SHA256_Final’: >>> sha2.c:606:3: warning: dereferencing type-punned pointer will break >>> strict-aliasing rules [-Wstrict-aliasing] >>> sha2.c: In function ‘SHA512_Last’: >>> sha2.c:923:2: warning: dereferencing type-punned pointer will break >>> strict-aliasing rules [-Wstrict-aliasing] >>> sha2.c:924:2: warning: dereferencing type-punned pointer will break >>> strict-aliasing rules [-Wstrict-aliasing] >>> ccache gcc-4.7 -shared -L/usr/local/lib -o digest.so aes.o crc32.o digest.o >>> md5.o raes.o sha1.o sha2.o sha256.o -L/usr/local/lib/R-devel/lib/R/lib -lR >>> installing to /usr/local/lib/R/site-library/digest/libs >>> ** R >>> ** inst >>> ** preparing package for lazy loading >>> ** help >>> *** installing help indices >>> ** building package indices >>> ** testing if installed package can be loaded >>> * DONE (digest) >>> drwxrwxr-x 7 edd staff 4096 Jun 15 10:42 >>> /usr/local/lib/R/site-library/digest/ >>> /usr/local/lib/R/site-library/digest/: >>> total 52 >>> -rw-rw-r-- 1 edd staff 1605 Jun 15 10:42 DESCRIPTION >>> -rw-rw-r-- 1 edd staff 18092 Jun 15 10:42 GPL-2 >>> drwxrwxr-x 2 edd staff 4096 Jun 15 10:42 help >>> drwxrwxr-x 2 edd staff 4096 Jun 15 10:42 html >>> -rw-rw-r-- 1 edd staff 271 Jun 15 10:42 INDEX >>> drwxrwxr-x 2 edd staff 4096 Jun 15 10:42 libs >>> drwxrwxr-x 2 edd staff 4096 Jun 15 10:42 Meta >>> -rw-rw-r-- 1 edd staff 140 Jun 15 10:42 NAMESPACE >>> drwxrwxr-x 2 edd staff 4096 Jun 15 10:42 R >>> >>> /usr/local/lib/R/site-library/digest/help: >>> total 36 >>> -rw-rw-r-- 1 edd staff 80 Jun 15 10:42 aliases.rds >>> -rw-rw-r-- 1 edd staff 32 Jun 15 10:42 AnIndex >>> -rw-rw-r-- 1 edd staff 17857 Jun 15 10:42 digest.rdb >>> -rw-rw-r-- 1 edd staff 193 Jun 15 10:42 digest.rdx >>> -rw-rw-r-- 1 edd staff 140 Jun 15 10:42 paths.rds >>> >>> /usr/local/lib/R/site-library/digest/html: >>> total 8 >>> -rw-rw-r-- 1 edd staff 1236 Jun 15 10:42 00Index.html >>> -rw-rw-r-- 1 edd staff 1179 Jun 15 10:42 R.css >>> >>> /usr/local/lib/R/site-library/digest/libs: >>> total 120 >>> -rwxrwxr-x 1 edd staff 118956 Jun 15 10:42 digest.so >>> >>> /usr/local/lib/R/site-library/digest/Meta: >>> total 20 >>> -rw-rw-r-- 1 edd staff 351 Jun 15 10:42 hsearch.rds >>> -rw-rw-r-- 1 edd staff 117 Jun 15 10:42 links.rds >>> -rw-rw-r-- 1 edd staff 224 Jun 15 10:42 nsInfo.rds >>> -rw-rw-r-- 1 edd staff 1271 Jun 15 10:42 package.rds >>> -rw-rw-r-- 1 edd staff 331 Jun 15 10:42 Rd.rds >>> >>> /usr/local/lib/R/site-library/digest/R: >>> total 16 >>> -rw-rw-r-- 1 edd staff 1056 Jun 15 10:42 digest >>> -rw-rw-r-- 1 edd staff 4168 Jun 15 10:42 digest.rdb >>> -rw-rw-r-- 1 edd staff 388 Jun 15 10:42 digest.rdx >>> >>> R Under development (unstable) (2013-06-14 r62964) -- "Unsuffered >>> Consequences" >>> Copyright (C) 2013 The R Foundation for Statistical Computing >>> Platform: x86_64-unknown-linux-gnu (64-bit) >>> >>> R is free software and comes with ABSOLUTELY NO WARRANTY. >>> You are welcome to redistribute it under certain conditions. >>> Type 'license()' or 'licence()' for distribution details. >>> >>> Natural language support but running in an English locale >>> >>> R is a collaborative project with many contributors. >>> Type 'contributors()' for more information and >>> 'citation()' on how to cite R or R packages in publications. >>> >>> Type 'demo()' for some demos, 'help()' for on-line help, or >>> 'help.start()' for an HTML browser interface to help. >>> Type 'q()' to quit R. >>> >>>> update.packages(repos="http://cran.r-project.org", ask=FALSE, >>>> lib.loc="/usr/local/lib/R/site-library") >>> trying URL 'http://cran.r-project.org/src/contrib/digest_0.6.3.tar.gz' >>> Content type 'application/x-gzip' length 80083 bytes (78 Kb) >>> opened URL >>> ================================================== >>> downloaded 78 Kb >>> >>> * installing *source* package ‘digest’ ... >>> ** package ‘digest’ successfully unpacked and MD5 sums checked >>> ** libs >>> ccache gcc -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -ggdb -pipe -std=gnu99 -Wall -pedantic -c >>> aes.c -o aes.o >>> ccache gcc -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -ggdb -pipe -std=gnu99 -Wall -pedantic -c >>> crc32.c -o crc32.o >>> ccache gcc -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -ggdb -pipe -std=gnu99 -Wall -pedantic -c >>> digest.c -o digest.o >>> ccache gcc -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -ggdb -pipe -std=gnu99 -Wall -pedantic -c >>> md5.c -o md5.o >>> ccache gcc -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -ggdb -pipe -std=gnu99 -Wall -pedantic -c >>> raes.c -o raes.o >>> ccache gcc -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -ggdb -pipe -std=gnu99 -Wall -pedantic -c >>> sha1.c -o sha1.o >>> ccache gcc -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -ggdb -pipe -std=gnu99 -Wall -pedantic -c >>> sha2.c -o sha2.o >>> ccache gcc -I/usr/local/lib/R-devel/lib/R/include -DNDEBUG >>> -I/usr/local/include -fpic -ggdb -pipe -std=gnu99 -Wall -pedantic -c >>> sha256.c -o sha256.o >>> ccache gcc -shared -L/usr/local/lib -o digest.so aes.o crc32.o digest.o >>> md5.o raes.o sha1.o sha2.o sha256.o -L/usr/local/lib/R-devel/lib/R/lib -lR >>> installing to /usr/local/lib/R/site-library/digest/libs >>> ** R >>> ** inst >>> ** preparing package for lazy loading >>> ** help >>> *** installing help indices >>> ** building package indices >>> ** testing if installed package can be loaded >>> * DONE (digest) >>> >>> The downloaded source packages are in >>> ‘/tmp/RtmpxJgmSB/downloaded_packages’ >>>> >>>> >>> drwxrwxr-x 7 lmp staff 4096 Jun 15 10:42 >>> /usr/local/lib/R/site-library/digest/ >>> /usr/local/lib/R/site-library/digest/: >>> total 52 >>> -rw-rw-r-- 1 lmp staff 1767 Jun 15 10:42 DESCRIPTION >>> -rw-rw-r-- 1 lmp staff 18092 Jun 15 10:42 GPL-2 >>> drwxrwxr-x 2 lmp staff 4096 Jun 15 10:42 help >>> drwxrwxr-x 2 lmp staff 4096 Jun 15 10:42 html >>> -rw-rw-r-- 1 lmp staff 253 Jun 15 10:42 INDEX >>> drwxrwxr-x 2 lmp staff 4096 Jun 15 10:42 libs >>> drwxrwxr-x 2 lmp staff 4096 Jun 15 10:42 Meta >>> -rw-rw-r-- 1 lmp staff 140 Jun 15 10:42 NAMESPACE >>> drwxrwxr-x 2 lmp staff 4096 Jun 15 10:42 R >>> >>> /usr/local/lib/R/site-library/digest/help: >>> total 36 >>> -rw-rw-r-- 1 lmp staff 80 Jun 15 10:42 aliases.rds >>> -rw-rw-r-- 1 lmp staff 32 Jun 15 10:42 AnIndex >>> -rw-rw-r-- 1 lmp staff 17871 Jun 15 10:42 digest.rdb >>> -rw-rw-r-- 1 lmp staff 195 Jun 15 10:42 digest.rdx >>> -rw-rw-r-- 1 lmp staff 140 Jun 15 10:42 paths.rds >>> >>> /usr/local/lib/R/site-library/digest/html: >>> total 8 >>> -rw-rw-r-- 1 lmp staff 1236 Jun 15 10:42 00Index.html >>> -rw-rw-r-- 1 lmp staff 1179 Jun 15 10:42 R.css >>> >>> /usr/local/lib/R/site-library/digest/libs: >>> total 172 >>> -rwxrwxr-x 1 lmp staff 175154 Jun 15 10:42 digest.so >>> >>> /usr/local/lib/R/site-library/digest/Meta: >>> total 20 >>> -rw-rw-r-- 1 lmp staff 351 Jun 15 10:42 hsearch.rds >>> -rw-rw-r-- 1 lmp staff 117 Jun 15 10:42 links.rds >>> -rw-rw-r-- 1 lmp staff 224 Jun 15 10:42 nsInfo.rds >>> -rw-rw-r-- 1 lmp staff 1325 Jun 15 10:42 package.rds >>> -rw-rw-r-- 1 lmp staff 331 Jun 15 10:42 Rd.rds >>> >>> /usr/local/lib/R/site-library/digest/R: >>> total 16 >>> -rw-rw-r-- 1 lmp staff 1056 Jun 15 10:42 digest >>> -rw-rw-r-- 1 lmp staff 4205 Jun 15 10:42 digest.rdb >>> -rw-rw-r-- 1 lmp staff 385 Jun 15 10:42 digest.rdx >>> edd@max:~$ >>> >>> -- >>> Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com >> >> > > ______________________________________________ > 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