Dear all, we have trouble understanding how ecl-quicklisp can be configured to install packages at a custom location. Currently, either
(require :asdf) (asdf:load-system :ecl-quicklisp)
or
(require :ecl-quicklisp)
starts installing things into ~/quicklisp/
no matter what one tries. E.g. quicklisp FAQ tells about (quicklisp-quickstart:install :path ".quicklisp/") but this seems to need to be evaluated much earlier than (require :ecl-quicklisp)...
Does this mean one needs to change the ECL installation procedure to take care of this?
Thanks Dima
Hey Dima,
ecl-quicklisp contrib is more a conveniance hack than a mechanism I would advertise for getting quicklisp. The correct way to do that is to download quicklisp from its homepage and follow instructions from its website (and verifying signatures etc) and add loading setup.lisp from the location you look out for.
That said ecl-quicklisp installs Quicklisp at the location reflected in a logical pathname translation for "HOME:QUICKLISP;". To customize install directory for ecl-quicklisp contrib target set it to the desired directory:
CL-USER> (push '("HOME:QUICKLISP;**;*.*" "/tmp/quicklisp/**/*.*") (logical-pathname-translations "HOME")) ((#P"HOME:QUICKLISP;**;*.*" #P"/tmp/quicklisp/**/*.*") (#P"HOME:**;*.*" #P"/home/jack/**/*.*")) CL-USER> (translate-logical-pathname "HOME:QUICKLISP;directory;setup.lisp") #P"/tmp/quicklisp/directory/setup.lisp" CL-USER> (translate-logical-pathname "HOME:QUICKLISP;setup.lisp") #P"/tmp/quicklisp/setup.lisp" CL-USER> (translate-logical-pathname "HOME:QUICKLISP;") #P"/tmp/quicklisp/"
That should be enough to make (require 'ecl-quicklisp) to install QL in "/tmp/quicklisp/" directory. I would advertise doing
(require 'ecl-quicklisp)
instead of (asdf:load-system :ecl-quicklisp). While the latter will probably work it is a contrib module, not a library (and asdf's inner workings are not under ECL custody).
Best regards, Daniel