anchor.diff:      (format t "    To load Quicklisp every time you start Lisp, use: (ql:add-to-init-file)~%~%")
       (format t "    For more information, see http://www.quicklisp.org/beta/~%~%")))
   
  -(defun initial-install ()
  +(defun initial-install (&key (client-url *client-info-url*))
     (ensure-directories-exist (qmerge "tmp/"))
  -  (ensure-directories-exist (qmerge "quicklisp/"))
  -  (renaming-fetch *asdf-url* (qmerge "asdf.lisp"))
  -  (let ((tmptar (qmerge "tmp/quicklisp.tar")))
  -    (renaming-fetch *quicklisp-tar-url* tmptar)
  -    (unpack-tarball tmptar :directory (qmerge "./")))
  -  (renaming-fetch *setup-url* (qmerge "setup.lisp"))
  -  (load (qmerge "setup.lisp"))
  -  (write-string *after-initial-setup-message*)
  -  (finish-output))
  +  (let ((client-info (fetch-client-info client-url))
  +        (tmptar (qmerge "tmp/quicklisp.tar"))
  +        (setup (qmerge "setup.lisp")))
  +    (renaming-fetch (client-tar-url client-info) tmptar)
  +    (unpack-tarball tmptar :directory (qmerge "./"))
  +    (renaming-fetch (setup-url client-info) setup)
  +    (load setup :verbose nil :print nil)
  +    (write-string *after-initial-setup-message*)
  +    (finish-output)))
   
   (defun help ()
     (write-string *help-message*)
     t)
   
   (defun install (&key ((:path *home*) *home*)
  -                ((:proxy *proxy-url*) *proxy-url*))
  +                  ((:proxy *proxy-url*) *proxy-url*)
  +                  client-url
  +                  client-version)
     (when (pathname-name *home*)
       (let ((name (pathname-name *home*)))
         (warn "Making ~A part of the install pathname directory"
               name)
         ;; This corrects a pathname like "/foo/bar" to "/foo/bar/"
  +      ;; FIXME: What about a pathname like /foo/.quicklisp?
         (setf *home*
               (make-pathname :defaults *home*
                              :directory (append (pathname-directory *home*)
  
positive.code:     (fetch url tmpfile)
      (rename-file tmpfile file)))
  
  (defvar *asdf-url* "http://beta.quicklisp.org/quickstart/asdf.lisp")
  (defvar *quicklisp-tar-url* "http://beta.quicklisp.org/quickstart/quicklisp.tar")
  (defvar *setup-url* "http://beta.quicklisp.org/quickstart/setup.lisp")
  (defvar *help-message*
    (format nil "~&~%  ==== quicklisp quickstart install help ====~%~%    ~
                 quicklisp-quickstart:install can take the following ~
                 optional arguments:~%~%      ~
                   :path \"/path/to/installation/\"~%~%      ~
                   :proxy \"http://your.proxy:port/\"~%~%"))
  (defvar *after-load-message*
    (format nil "~&~%  ==== quicklisp quickstart loaded ====~%~%    ~
                 To continue with installation, evaluate: (quicklisp-quickstart:install)~%~%    ~
  
negative.code:         (write-line "!!! Quicklisp has already been set up. !!!")
          (write-string *after-initial-setup-message*)
          t)
        (call-with-quiet-compilation
         (lambda ()
           (let ((url (or client-url
                          (and client-version
                               (client-info-url-from-version client-version)
                               *client-info-url*))))
             (initial-install :client-url url))))))
  
  ;;; Try to canonicalize to an absolute pathname; helps on Lisps where
  ;;; *default-pathname-defaults* isn't an absolute pathname at startup
  