When ASDF-INSTALL is loaded it LOAD
s the file ~/.asdf-install
if it's there. This file (which is obviously supposed to contain Lisp code) can be used to change the values of some special variables which control ASDF-INSTALL's behaviour. Their names are exported from the ASDF-INSTALL
package.
*GNU-TAR-PROGRAM*
The path to the GNU tar
program as a string - the default is "tar"
, "gtar"
, or "tar.exe"
, depending on the operating system. This is used only by the function designated by the default value of *TAR-EXTRACTOR*
.
*PROGRAM-DIRECTORIES*
This is a list of pathnames that designate directories which ASDF-INSTALL searches for your tar program. It is used only by the function designated by the default value of *TAR-EXTRACTOR*
. On Unix systems, it defaults to '(#P"/bin/" #P"/usr/bin"); on Windows it defaults to a value derived from the PATH environment variable.
On Windows, this list is also searched for "cygpath.exe"
, which is used (if found) to prepare arguments for tar.
*TAR-EXTRACTOR*
If you're having trouble getting your tar program to work with ASDF-INSTALL, e.g. because you're running on Windows but don't want to use Cygwin, then you can set this variable to a funcallable object designating a function that runs tar in whatever fashion is necessary for your environment. It must take two arguments; a pathname that desginates the destination directory, followed by the namestring of the gzipped tar file. It must return the output of the tar program, which must start with a line naming the root directory in which the tar contents were placed. (This is typically generated by the -v argument to Gnu tar.)
*PROXY*
This variable is NIL
by default but will be set to the value of the environment variable $http_proxy
(if it's set) prior to loading ~/.asdf-install
. Set this to a non-NIL
value if you need to go through an http proxy.
*PROXY-USER*
*PROXY-PASSWD*
Use these variables if your proxy requires authentication.
*CCLAN-MIRROR*
This variable is set to "http://ftp.linux.org.uk/pub/lisp/cclan/"
before ~/.asdf-install
is loaded. A couple of ASDF-installable libraries are available via CCLAN and with the help of this variable you can choose another CCLAN mirror from the list at http://ww.telent.net/cclan-choose-mirror.
*VERIFY-GPG-SIGNATURES*
This variable is set to T
initially which means that there'll be a security check for each library which is not installed from a local file. You can set it to NIL
which means no checks at all or to :UNKNOWN-LOCATIONS
which means that only URLs which are not in *SAFE-URL-PREFIXES*
are checked. Every other value behaves like T
.
Note: This customization option is currently not supported in the SBCL version of ASDF-INSTALL.
*SAFE-URL-PREFIXES*
The value of this variable is NIL
initially. It is supposed to be a list of strings which are "safe" URL prefixes, i.e. if a download URL begins with one of these strings there's no security check. The value of *SAFE-URL-PREFIXES*
only matters if *VERIFY-GPG-SIGNATURES*
is set to :UNKNOWN-LOCATIONS
.
Note: This customization option is currently not supported in the SBCL version of ASDF-INSTALL.
*LOCATIONS*
The initial value of this variable (prior to loading ~/.asdf-install
) is
((#p"/usr/local/asdf-install/site/"
#p"/usr/local/asdf-install/site-systems/"
"System-wide install")
(#p"/home/edi/.asdf-install-dir/site/"
#p"/home/edi/.asdf-install-dir/systems/"
"Personal installation"))
where /home/edi/
will obviously be replaced with your home directory. You'll notice that this corresponds to the little menu you see when ASDF-INSTALL starts to install a package. You can add elements to this list or replace it completely to get another menu. Each element is a list with three elements - a pathname denoting the directory where the (unpacked) libraries will be stored, a pathname denoting a directory where system definition symlinks will be placed, and a string describing this particular choice.
If you make changes to this value it is important that you also update ASDF:*CENTRAL-REGISTRY*
accordingly in your initialization file or ASDF-INSTALL won't find your system definitions (unless you are on Windows). See the example below.
Note: On SBCL the initial value of this variable is different - try it out yourself.
*PREFERRED-LOCATION*
This variable is initially NIL
. If it is not NIL
it should be a positive integer not greater than the length of *LOCATIONS*
. By setting this value you circumvent the question about where to install a library and ASDF-INSTALL will unconditionally use the corresponding entry from *LOCATIONS*
. Note that 1
(not 0
) means the first entry.
Note: This customization option is currently not supported in the SBCL version of ASDF-INSTALL.
*SYSTEM-FILE-INSTALLER*
This variable must be set to a funcallable object that will install a system file so that it can be found by its defsystem. This function is not defsystem-specific. It will receive two arguments; a pathname designating a directory where the system file should be registered, and a pathname designating a system file to be registered. The return value is ignored. The default value is a function that creates a symbolic link on UNIX-like systems, and does nothing on Windows.
ASDF_INSTALL_DIR
The value of this environment variable determines the first element of the initial value of *LOCATIONS*
, i.e. if it, say, contains the value /usr/local/foo/
, then the first element of *LOCATIONS*
is
(#p"/usr/local/foo/site/"
#p"/usr/local/foo/site-systems/"
"System-wide install")
If this variable is not set, the directory /usr/local/asdf-install/
is used. Note that this variable affects ASDF-INSTALL's behaviour before ~/.asdf-install
is loaded.
Note: On SBCL the value of SBCL_HOME
is used instead.
PRIVATE_ASDF_INSTALL_DIR
The value of this environment variable determines the second element of the initial value of *LOCATIONS*
, i.e. if it, say, contains the value frob/
and your username is johndoe
, then the second element of *LOCATIONS*
is
(#p"/home/johndoe/frob/site/"
#p"/home/johndoe/frob/systems/"
"Personal installation")
If this variable is not set, the value .asdf-install-dir
(note the dot) is used. Note that this variable affects ASDF-INSTALL's behaviour before ~/.asdf-install
is loaded.
Note: On SBCL the value .sbcl
is used instead.
.asdf-install
fileHere's a documented example for how the file ~/.asdf-install
could look like:
;; use a http proxy
(setq asdf-install:[*proxy*][*proxy*] "http://proxy.foo.com/")
;; use a CCLAN mirror in France
(setq asdf-install:*cclan-mirror* "http://thingamy.com/cclan/")
;; only partial security checks
(setq asdf-install:[*verify-gpg-signatures*][*verify-gpg-signatures*] :unknown-locations)
;; downloads from Kevin Rosenberg and from my own server don't have to be checked
(setq asdf-install:*safe-url-prefixes*
'("http://files.b9.com/" "http://weitz.de/files/"))
;; add a repository for unstable libraries
(pushnew '(#p"/usr/local/lisp/unstable/site/"
#p"/usr/local/lisp/unstable/systems/"
"Install as unstable")
asdf-install:*locations*
:test #'equal)
;; make sure this is also known by ASDF
(pushnew "/usr/local/lisp/unstable/systems/"
asdf:*central-registry*
:test #'equal)
ASDF-INSTALL maintains a list of library authors you trust. This list is stored in a file trusted-uids.lisp
and usually resides in the directory ~/.asdf-install-dir/
but this can be customized by changing the environment variable `PRIVATE_ASDF_INSTALL_DIR`. You are not supposed to edit this file manually - new entries are added automatically whenever you choose the corresponding restart during the security check.