When ASDF-INSTALL is loaded it LOADs 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_DIRThe 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_DIRThe 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.