A simple, atomic* script to install or update Quicklisp easily**.
Archive*** updated daily at 12:00 AM UTC.
* meaning installation would not just finish incomplete like (quicklisp-quickstart:install)
does.
** simple hassle-free one-liner using curl
for every download
*** currently using a prepacked, complete archive of all the files required by quicklisp on Cloudflare to
eliminate network issues
curl -fsSL https://ql-init.oil6.net/install.py | python3 -
curl.exe -fsSL https://ql-init.oil6.net/install.py | python.exe -
Linux/macOS: curl -fsSL https://ql-init.oil6.net/install.py | python3 - --fresh Windows: curl.exe -fsSL https://ql-init.oil6.net/install.py | python.exe - --fresh
Flag | Description | Example (Piped) |
---|---|---|
--fresh |
Fresh install (overwrites everything, including downloaded packages) | curl ... | python3 - --fresh |
--update |
Update core Quicklisp files only (keeps installed packages) | curl ... | python3 - --update |
--download-only |
Download zip file only for manual extraction | curl ... | python3 - --download-only |
curl -fsSL https://ql-init.oil6.net/ql-helper.py | python3 - uuid
$ curl -fsSL https://ql-init.oil6.net/ql-helper.py | python3 - uuid +--- ============================ ---+ | Parsing Quicklisp Metadata | +--- ============================ ---+ ✓ Metadata parsed successfully +--- ======================== ---+ | Resolving Dependencies | +--- ======================== ---+ Round 1: Expanding 1 systems... Round 2: Expanding 2 systems... Round 3: Expanding 2 systems... Round 4: Expanding 6 systems... Round 5: Expanding 1 systems... ✓ Dependency resolution complete after 5 rounds ✓ Found 9 unique projects: alexandria, bordeaux-threads, global-vars, ironclad, mgl-pax, trivial-features, trivial-garbage, trivial-utf-8, uuid +--- ====================== ---+ | Downloading Archives | +--- ====================== ---+ [1/9] Downloading mgl-pax (mgl-pax-20250622-git.tgz)... [2/9] Downloading bordeaux-threads (bordeaux-threads-v0.9.4.tgz)... [3/9] Downloading ironclad (ironclad-v0.61.tgz)... [4/9] Downloading trivial-garbage (trivial-garbage-20231021-git.tgz)... [5/9] Downloading uuid (uuid-20200715-git.tgz)... [6/9] Downloading global-vars (global-vars-20141106-git.tgz)... [7/9] Downloading alexandria (alexandria-20241012-git.tgz)... [8/9] Downloading trivial-features (trivial-features-20250622-git.tgz)... [9/9] Downloading trivial-utf-8 (trivial-utf-8-20250622-git.tgz)... +--- ===================== ---+ | Verifying Downloads | +--- ===================== ---+ ✓ mgl-pax (archive: mgl-pax-20250622-git.tgz) size and md5 verified ✓ bordeaux-threads (archive: bordeaux-threads-v0.9.4.tgz) size and md5 verified ✓ ironclad (archive: ironclad-v0.61.tgz) size and md5 verified ✓ trivial-garbage (archive: trivial-garbage-20231021-git.tgz) size and md5 verified ✓ uuid (archive: uuid-20200715-git.tgz) size and md5 verified ✓ global-vars (archive: global-vars-20141106-git.tgz) size and md5 verified ✓ alexandria (archive: alexandria-20241012-git.tgz) size and md5 verified ✓ trivial-features (archive: trivial-features-20250622-git.tgz) size and md5 verified ✓ trivial-utf-8 (archive: trivial-utf-8-20250622-git.tgz) size and md5 verified +--- ========================== ---+ | Moving Verified Archives | +--- ========================== ---+ ✓ Moved mgl-pax (archive: mgl-pax-20250622-git.tgz) to /home/lab01/.quicklisp/dists/quicklisp/archives ✓ Moved bordeaux-threads (archive: bordeaux-threads-v0.9.4.tgz) to /home/lab01/.quicklisp/dists/quicklisp/archives ✓ Moved ironclad (archive: ironclad-v0.61.tgz) to /home/lab01/.quicklisp/dists/quicklisp/archives ✓ Moved trivial-garbage (archive: trivial-garbage-20231021-git.tgz) to /home/lab01/.quicklisp/dists/quicklisp/archives ✓ Moved uuid (archive: uuid-20200715-git.tgz) to /home/lab01/.quicklisp/dists/quicklisp/archives ✓ Moved global-vars (archive: global-vars-20141106-git.tgz) to /home/lab01/.quicklisp/dists/quicklisp/archives ✓ Moved alexandria (archive: alexandria-20241012-git.tgz) to /home/lab01/.quicklisp/dists/quicklisp/archives ✓ Moved trivial-features (archive: trivial-features-20250622-git.tgz) to /home/lab01/.quicklisp/dists/quicklisp/archives ✓ Moved trivial-utf-8 (archive: trivial-utf-8-20250622-git.tgz) to /home/lab01/.quicklisp/dists/quicklisp/archives +--- ============ ---+ | Next Steps | +--- ============ ---+ ✓ To make it easier to use this script next time, consider installing it to a PATH location: 1. Move the script to ~/.local/bin/ (recommended for user access): $ mv ql-helper.py ~/.local/bin/ql-helper 2. Make it executable: $ chmod +x ~/.local/bin/ql-helper 3. Ensure ~/.local/bin/ is in your PATH. Add to ~/.bashrc or ~/.zshrc if needed: $ echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc 4. Then run it as: $ ql-helper system1 system2 system3 Alternatively, if you have root access, install to /usr/local/bin/: $ sudo mv ql-helper.py /usr/local/bin/ql-helper $ sudo chmod +x /usr/local/bin/ql-helper ✓ Successfully processed 9 archives +--- =============== ---+ | **IMPORTANT** | +--- =============== ---+ !!DO NOT extract archives manually!! !!DO NOT extract archives manually!! !!DO NOT extract archives manually!! Do (ql:quickload "your-system") as usual and let quicklisp do its job!
Replace uuid
with what you really want to download.
This sript will use curl
to download archives and put them where they are expected by quicklisp.
DO NOT extract archives yourself. Run (ql:quickload "system-name")
and let quicklisp do it.
If you need this script a lot, follow the instructions to install it.
Inspect the install script: installer and ql-helper.
And follow our installation instructions for more integrity checks.
Test Quicklisp: sbcl --load ~/.quicklisp/setup.lisp
Run this from SBCL/LispWorks/whatever to avoid repeated manual loading: (ql:add-to-init-file)