Installing¶
One line¶
curl -fsSL https://raw.githubusercontent.com/lorem-dev/doppel/main/scripts/install.sh | sh
Detects the platform, downloads the matching archive from the latest release,
verifies it against the release's checksums.txt, installs doppel into
~/.local/bin, and adds that directory to your shell profile if it is not
already on PATH.
Two environment variables change what it does:
| Variable | Effect |
|---|---|
DOPPEL_VERSION |
Install a specific tag instead of the latest, e.g. v0.2.0 |
DOPPEL_INSTALL_DIR |
Install somewhere other than ~/.local/bin |
DOPPEL_VERSION=v0.2.0 DOPPEL_INSTALL_DIR=/usr/local/bin \
curl -fsSL https://raw.githubusercontent.com/lorem-dev/doppel/main/scripts/install.sh | sh
A checksum mismatch stops the install and leaves nothing behind, rather than warning and continuing.
Prebuilt binaries¶
Every release publishes these. Any other platform has to be built from source.
| Platform | Archive |
|---|---|
| macOS, Apple Silicon | doppel-aarch64-apple-darwin.tar.gz |
| Linux, x86-64 | doppel-x86_64-unknown-linux-gnu.tar.gz |
| Linux, arm64 | doppel-aarch64-unknown-linux-gnu.tar.gz |
Each archive holds one file: the doppel binary.
Downloading through a browser on macOS
A browser attaches com.apple.quarantine to whatever it downloads, and
macOS refuses to run an unsigned binary carrying it. The one-line
installer uses curl, which does not set that attribute, so it is not
affected -- but a manual download from the releases page is. See
Troubleshooting.
Verifying a download¶
Every release publishes checksums.txt covering all of its assets. Check the
one you downloaded against it:
shasum -a 256 -c checksums.txt --ignore-missing
--ignore-missing because the file lists every asset in the release and you
downloaded one of them.
That proves the archive matches the sums -- but only if the sums themselves are
trustworthy, and a file downloaded from the same page as the archive is not
evidence of anything on its own. checksums.txt.asc is a detached signature
over it, made with the Lorem Dev release key. Import the key once:
curl -fsSL https://raw.githubusercontent.com/lorem-dev/doppel/main/.github/release-key.asc \
| gpg --import
and check the signature before the sums:
gpg --verify checksums.txt.asc checksums.txt
The key's fingerprint is CFE6485E23519A25A475B900AD0F7A29E4398670.
Compare it against
.github/release-key.asc
in the repository -- fetching the key over the same channel as the signature
only helps against a passive observer, not against whoever served you both.
gpg --verify will say the key is not certified by a trusted signature. That
is expected: nothing has told your keyring to trust this key, only that the
signature matches it. What matters is Good signature from "Lorem Dev
Release" and the fingerprint above.
The one-line installer checks the checksum itself and refuses to install on a mismatch. It does not check the signature: that would need gpg on the machine running it and a key imported inside a piped shell script, which is not a trade most people want made for them. Verify the signature by hand when it matters.
From source¶
The toolchain is pinned in rust-toolchain.toml, so rustup fetches the right
one:
cargo install --path crates/doppel-cli # into ~/.cargo/bin
or build without installing:
cargo build --release -p doppel-cli # target/release/doppel
Confirming it worked¶
doppel version
If the command is not found, the install directory is not on your PATH. The
installer says which profile it wrote to; open a new shell, or source that
file.
Next¶
Getting started runs it against a real backend.