[ESS] how to override site install of ESS?
Ross Boylan
ross at biostat.ucsf.edu
Tue Apr 9 20:32:01 CEST 2013
On Tue, 2013-04-09 at 13:09 -0500, Sebastian P.Luque wrote:
> On Tue, 9 Apr 2013 10:18:38 -0700,
> Ross Boylan <ross at biostat.ucsf.edu> wrote:
>
> > I have a sort of work around. This is on Debian squeeze. .emacs has
> > ;use with --no-site ; must load new ess first to prevent system-wide
> > one from loading (load "~/ess-12.09-2/lisp/ess-site") ; next line gets
> > the standard system setup (load
> > "/usr/share/emacs/site-lisp/debian-startup")
>
> > .bashrc has # If running interactively, then: if [ "$PS1" ]; then
> > export EDITOR=emacs alias emacs='emacs --no-site'
>
>
> > I think debian-startup is the usual first step for site startup, at
> > least in the absence of actual code in the /etc/emacs/site-start.el.
>
> > The one problem I've run into is that when emacs is invoked by some
> > other process, e.g., svn commit, it still does site startup first and
> > produces a bunch of error messages. Also, later commands in .emacs
> > are never executed.
>
> > Is export EDITOR=emacs --no-site legal (maybe in quotes)? That might
> > fix it.
>
> > I also tried (unload-feature 'ess-site t) but that didn't quite work;
> > ess-version remained the old one. Various other libraries depend on
> > ess-site (e.g., 50ess.el), but I don't think they are features and I
> > couldn't figure out how to unload them.
>
> > Yes, I'll ask the sysadmin again. I thought it would be easy to
> > install a personal copy of ess. As you all already knew, it's not.
>
> Also in Debian, I think I worked around this in the past (long ago
> though, when I had the ess package installed but wanted to load a local
> development version):
>
> (setq load-path
> (delete "/usr/share/emacs23/site-lisp/ess/" load-path)
> ess-etc-directory "~/.emacs.d/site-lisp/ess/etc"
> ess-lisp-directory "~/.emacs.d/site-lisp/ess/lisp")
> (require 'ess-site "~/.emacs.d/site-lisp/ess/lisp/ess-site")
>
> IOW, remove the site-wide ess paths from `load-path' and set the
> critical ess variables before loading the local ess-site.el. Not sure
> if it would still work (haven't tested it in a long time).
I think there are couple problems with that strategy in the current
debian. First, the site-wide startup script happens before the
personal .emacs file is read and so there is no effective way to
override it without either starting emacs with --no-site or fiddling
with the system level configuration files.
Second, the site-wide startup processes files, including 50ess.el, that
set the load path dynamically. If one tries to intervene before I
believe the path will not be there, and intervention after is too late.
Since 50ess.el is in a common directory with the other startup files,
one can't simply skip the directory.
This might be fixable as a Debian packaging issue. First, if ess
wrapped all its files as a feature, it might be possible to unload them
(it might be possible now and I just don't know how). Second, it seems
to me emacs, as packaged, should make it easier to modify what happens
at startup or to substitute local versions of packages.
Ross
>
More information about the ESS-help
mailing list