anchor.diff:      (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 *client-info-url*
  +  "http://alpha.quicklisp.org/client/quicklisp.txt")
  +
  +(defclass client-info ()
  +  ((setup-url
  +    :reader setup-url
  +    :initarg :setup-url)
  +   (client-tar-url
  +    :reader client-tar-url
  +    :initarg :client-tar-url)
  +   (version
  +    :reader version
  +    :initarg :version)))
  +
  +(defmethod print-object ((client-info client-info) stream)
  +  (print-unreadable-object (client-info stream :type t)
  +    (prin1 (version client-info) stream)))
  +
  +(defun safely-read (stream)
  +  (let ((*read-eval* nil))
  +    (read stream)))
  +
  +(defun fetch-client-info-plist (url)
  +  "Fetch and return the client info data at URL."
  +  (let ((local-client-info-file (qmerge "tmp/client-info.sexp")))
  +    (ensure-directories-exist local-client-info-file)
  +    (renaming-fetch url local-client-info-file)
  +    (with-open-file (stream local-client-info-file)
  +      (safely-read stream))))
  +
  +(defun fetch-client-info (url)
  +  (let ((plist (fetch-client-info-plist url)))
  +    (destructuring-bind (&key setup-url client-tar-url version
  +                              &allow-other-keys)
  +        plist
  +      (unless (and setup-url client-tar-url version)
  +        (error "Invalid data from client info URL -- ~A" url))
  +      (make-instance 'client-info
  +                     :setup-url setup-url
  +                     :client-tar-url client-tar-url
  +                     :version version))))
  +
  +(defun client-info-url-from-version (version)
  +  (format nil "http://alpha.quicklisp.org/client/~A/client-info.sexp"
  +          version))
  +
   (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/\"~%~%"))
  +                 :proxy \"http://your.proxy:port/\"~%~%      ~
  +                 :client-url <url>~%~%      ~
  +                 :client-version <version>~%~%"))
  +
   (defvar *after-load-message*
     (format nil "~&~%  ==== quicklisp quickstart loaded ====~%~%    ~
                  To continue with installation, evaluate: (quicklisp-quickstart:install)~%~%    ~
  
positive.code:         (write-line "!!! Quicklisp has already been set up. !!!")
          (write-string *after-initial-setup-message*)
          t)
        (call-with-quiet-compilation #'initial-install)))
  
  ;;; Try to canonicalize to an absolute pathname; helps on Lisps where
  ;;; *default-pathname-defaults* isn't an absolute pathname at startup
  
negative.code:     (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 (&key (client-url *client-info-url*))
    (ensure-directories-exist (qmerge "tmp/"))
    (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*)
                    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*)
  