Install the ArchiveBox package using uv.
-uv tool install --python 3.13 --prerelease allow --upgrade archivebox
+uv tool install --python 3.13 --prerelease explicit --upgrade 'archivebox>=0.9.0rc0,<0.10'
archivebox version
See the Install: Bare Metal Wiki for full install instructions for each OS...
diff --git a/archivebox/tests/test_setup_script.py b/archivebox/tests/test_setup_script.py
index de1ec2ed..cd6cda87 100644
--- a/archivebox/tests/test_setup_script.py
+++ b/archivebox/tests/test_setup_script.py
@@ -38,8 +38,8 @@ def test_setup_script_bootstraps_locked_abxpkg_version():
install_function = script.partition("install_archivebox_with_uv() {")[2].partition("\n}")[0]
assert 'ABXPKG_PACKAGE="${ABXPKG_PACKAGE:-abxpkg==1.12.62}"' in script
- assert 'ARCHIVEBOX_PACKAGE="${ARCHIVEBOX_PACKAGE:-archivebox}"' in script
- assert '--prerelease allow --upgrade "$ARCHIVEBOX_PACKAGE"' in install_function
+ assert 'ARCHIVEBOX_PACKAGE="${ARCHIVEBOX_PACKAGE:-archivebox>=0.9.0rc0,<0.10}"' in script
+ assert '--prerelease explicit --upgrade "$ARCHIVEBOX_PACKAGE"' in install_function
assert "fix_root_install_ownership" in prepare_function
assert "resolve_setup_binary git env,brew,apt true" not in install_function
diff --git a/bin/setup.sh b/bin/setup.sh
index a94d2c6b..de934e19 100755
--- a/bin/setup.sh
+++ b/bin/setup.sh
@@ -78,7 +78,7 @@ fi
ARCHIVEBOX_BRANCH="${ARCHIVEBOX_BRANCH:-dev}"
ARCHIVEBOX_IMAGE="${ARCHIVEBOX_IMAGE:-archivebox/archivebox:dev}"
ARCHIVEBOX_PYTHON="${ARCHIVEBOX_PYTHON:-3.13}"
-ARCHIVEBOX_PACKAGE="${ARCHIVEBOX_PACKAGE:-archivebox}"
+ARCHIVEBOX_PACKAGE="${ARCHIVEBOX_PACKAGE:-archivebox>=0.9.0rc0,<0.10}"
ARCHIVEBOX_PLATFORM="${ARCHIVEBOX_PLATFORM:-}"
ARCHIVEBOX_COMPOSE_URL="${ARCHIVEBOX_COMPOSE_URL:-https://raw.githubusercontent.com/ArchiveBox/ArchiveBox/${ARCHIVEBOX_BRANCH}/docker-compose.yml}"
ABXPKG_PACKAGE="${ABXPKG_PACKAGE:-abxpkg==1.12.62}"
@@ -301,7 +301,7 @@ resolve_setup_curl() {
install_archivebox_with_uv() {
echo
echo "[+] Installing ArchiveBox python tool using uv from $ARCHIVEBOX_PACKAGE..."
- "$UV_BINARY" --no-config tool install --python "$ARCHIVEBOX_PYTHON" --prerelease allow --upgrade "$ARCHIVEBOX_PACKAGE"
+ "$UV_BINARY" --no-config tool install --python "$ARCHIVEBOX_PYTHON" --prerelease explicit --upgrade "$ARCHIVEBOX_PACKAGE"
uv_tool_bin_dir="$("$UV_BINARY" --no-config tool dir --bin)"
ARCHIVEBOX_BINARY="$uv_tool_bin_dir/archivebox"
diff --git a/docs/Configuration.md b/docs/Configuration.md
index be65d464..1c38d530 100644
--- a/docs/Configuration.md
+++ b/docs/Configuration.md
@@ -476,7 +476,7 @@ URL users are redirected to after logging out. The default `/` keeps users on Ar
### LDAP Settings
-*Options for LDAP / Active Directory authentication via [django-auth-ldap](https://github.com/django-auth-ldap/django-auth-ldap). Requires `uv tool install --python 3.13 --prerelease allow --upgrade 'archivebox[ldap]'` (which also pulls in the system `libldap` / `libsasl` headers).*
+*Options for LDAP / Active Directory authentication via [django-auth-ldap](https://github.com/django-auth-ldap/django-auth-ldap). Requires `uv tool install --python 3.13 --prerelease explicit --upgrade 'archivebox[ldap]>=0.9.0rc0,<0.10'` (which also pulls in the system `libldap` / `libsasl` headers).*
---
#### `LDAP_ENABLED`
@@ -485,7 +485,7 @@ URL users are redirected to after logging out. The default `/` keeps users on Ar
Master switch for LDAP authentication. When `True`, ArchiveBox loads the `django-auth-ldap` backend and validates that `LDAP_SERVER_URI`, `LDAP_BIND_DN`, `LDAP_BIND_PASSWORD`, and `LDAP_USER_BASE` are all set — startup fails fast otherwise.
```bash
-uv tool install --python 3.13 --prerelease allow --upgrade 'archivebox[ldap]'
+uv tool install --python 3.13 --prerelease explicit --upgrade 'archivebox[ldap]>=0.9.0rc0,<0.10'
```
Then set these configuration values:
diff --git a/docs/Install.md b/docs/Install.md
index 9040bd54..00363e81 100644
--- a/docs/Install.md
+++ b/docs/Install.md
@@ -129,7 +129,7 @@ Or use Homebrew to install `uv`, then install ArchiveBox with `uv`:
```bash
brew install uv
-uv tool install --python 3.13 --prerelease allow --upgrade archivebox
+uv tool install --python 3.13 --prerelease explicit --upgrade 'archivebox>=0.9.0rc0,<0.10'
```
@@ -161,7 +161,7 @@ Alternatively, install with `uv`:
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
source "$HOME/.local/bin/env"
-uv tool install --python 3.13 --prerelease allow --upgrade archivebox
+uv tool install --python 3.13 --prerelease explicit --upgrade 'archivebox>=0.9.0rc0,<0.10'
```
Or install with [Homebrew on Linux](https://docs.brew.sh/Homebrew-on-Linux). Run Homebrew as your normal non-root user; Homebrew does not support `sudo brew` or root installs.
@@ -180,7 +180,7 @@ If you are not using the apt package above, install ArchiveBox with `uv`.
```bash
# get the dev version of ArchiveBox
-uv tool install --python 3.13 --prerelease allow --upgrade archivebox
+uv tool install --python 3.13 --prerelease explicit --upgrade 'archivebox>=0.9.0rc0,<0.10'
# if the optional ldap extra must compile locally on Debian/Ubuntu, install its headers and retry
# sudo apt install build-essential libldap2-dev libsasl2-dev
@@ -266,7 +266,7 @@ Upgrade ArchiveBox itself first; `archivebox install` will then re-resolve compa
```bash
# get the dev version of ArchiveBox
-uv tool install --python 3.13 --prerelease allow --upgrade archivebox
+uv tool install --python 3.13 --prerelease explicit --upgrade 'archivebox>=0.9.0rc0,<0.10'
# run init inside any data directories to migrate the index to the latest version
cd ~/archivebox/data
diff --git a/docs/Setting-up-Authentication.md b/docs/Setting-up-Authentication.md
index 14ddc244..0d412165 100644
--- a/docs/Setting-up-Authentication.md
+++ b/docs/Setting-up-Authentication.md
@@ -84,7 +84,7 @@ LOGOUT_REDIRECT_URL=https://auth.yourcompany.example.com/after/logout
First, install the `ldap` add-on to use this feature (not needed for Docker Archivebox).
```bash
-uv tool install --python 3.13 --prerelease allow --upgrade 'archivebox[ldap]'
+uv tool install --python 3.13 --prerelease explicit --upgrade 'archivebox[ldap]>=0.9.0rc0,<0.10'
```
Then set these configuration values to finish configuring LDAP:
diff --git a/docs/Upgrading.md b/docs/Upgrading.md
index 58a4f9c9..6c09abbf 100644
--- a/docs/Upgrading.md
+++ b/docs/Upgrading.md
@@ -8,7 +8,7 @@ cd ~/archivebox
tar -czf "archivebox-data-$(date +%s).tar.gz" data/
# Update ArchiveBox using the package manager you originally installed it with
-uv tool install --python 3.13 --prerelease allow --upgrade archivebox
+uv tool install --python 3.13 --prerelease explicit --upgrade 'archivebox>=0.9.0rc0,<0.10'
# or: sudo apt update && sudo apt install --only-upgrade archivebox
# or: brew update && brew upgrade archivebox
@@ -117,7 +117,7 @@ Package manager releases take a lot of effort to maintain ([contributions welcom
cd ~/archivebox/data # or wherever your data folder is
# upgrade ArchiveBox using the package manager you originally used to install it
-uv tool install --python 3.13 --prerelease allow --upgrade archivebox
+uv tool install --python 3.13 --prerelease explicit --upgrade 'archivebox>=0.9.0rc0,<0.10'
```
Or, for apt:
diff --git a/docs/index.rst b/docs/index.rst
index 321f9d7e..6aa0f28f 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -23,7 +23,7 @@ ArchiveBox
.. code-block:: bash
mkdir my-archive; cd my-archive/
- uv tool install --python 3.13 --prerelease allow --upgrade archivebox
+ uv tool install --python 3.13 --prerelease explicit --upgrade 'archivebox>=0.9.0rc0,<0.10'
archivebox init
archivebox install
diff --git a/skills/archivebox/SKILL.md b/skills/archivebox/SKILL.md
index 5717e067..651d5634 100644
--- a/skills/archivebox/SKILL.md
+++ b/skills/archivebox/SKILL.md
@@ -34,7 +34,7 @@ uv run --project .. archivebox install
Recommended CLI install:
```bash
-uv tool install --python 3.13 --prerelease allow --upgrade 'git+https://github.com/ArchiveBox/ArchiveBox.git@dev'
+uv tool install --python 3.13 --prerelease explicit --upgrade 'git+https://github.com/ArchiveBox/ArchiveBox.git@dev'
mkdir -p ~/archivebox/data
cd ~/archivebox/data
archivebox init