jj/docs/install-and-setup.md
Emily 1a0780ebcd
Some checks are pending
binaries / Build binary artifacts (linux-aarch64-gnu, ubuntu-24.04, aarch64-unknown-linux-gnu) (push) Waiting to run
binaries / Build binary artifacts (linux-aarch64-musl, ubuntu-24.04, aarch64-unknown-linux-musl) (push) Waiting to run
binaries / Build binary artifacts (linux-x86_64-gnu, ubuntu-24.04, x86_64-unknown-linux-gnu) (push) Waiting to run
binaries / Build binary artifacts (linux-x86_64-musl, ubuntu-24.04, x86_64-unknown-linux-musl) (push) Waiting to run
binaries / Build binary artifacts (macos-aarch64, macos-14, aarch64-apple-darwin) (push) Waiting to run
binaries / Build binary artifacts (macos-x86_64, macos-13, x86_64-apple-darwin) (push) Waiting to run
binaries / Build binary artifacts (win-x86_64, windows-2022, x86_64-pc-windows-msvc) (push) Waiting to run
nix / flake check (macos-14) (push) Waiting to run
nix / flake check (ubuntu-latest) (push) Waiting to run
build / build (, macos-13) (push) Waiting to run
build / build (, macos-14) (push) Waiting to run
build / build (, ubuntu-latest) (push) Waiting to run
build / build (, windows-latest) (push) Waiting to run
build / build (--all-features, ubuntu-latest) (push) Waiting to run
build / Build jj-lib without Git support (push) Waiting to run
build / Check protos (push) Waiting to run
build / Check formatting (push) Waiting to run
build / Check that MkDocs can build the docs (push) Waiting to run
build / Check that MkDocs can build the docs with Poetry 1.8 (push) Waiting to run
build / cargo-deny (advisories) (push) Waiting to run
build / cargo-deny (bans licenses sources) (push) Waiting to run
build / Clippy check (push) Waiting to run
Codespell / Codespell (push) Waiting to run
website / prerelease-docs-build-deploy (ubuntu-latest) (push) Waiting to run
Scorecards supply-chain security / Scorecards analysis (push) Waiting to run
docs: fix typo in Mac install section
2024-10-26 14:21:52 +02:00

5.3 KiB

Installation and setup

Installation

Download pre-built binaries for a release

There are pre-built binaries of the last released version of jj for Windows, Mac, or Linux (the "musl" version should work on all distributions).

If you'd like to install a prerelease version, you'll need to use one of the options below.

Cargo Binstall

If you use cargo-binstall, you can install the same binaries of the last jj release from GitHub as follows:

# Will put the jj binary for the latest release in ~/.cargo/bin by default
cargo binstall --strategies crate-meta-data jj-cli

Without the --strategies option, you may get equivalent binaries that should be compiled from the same source code.

Linux

From Source

First make sure that you have a Rust version >= 1.76 and that the libssl-dev, openssl, pkg-config, and build-essential packages are installed by running something like this:

sudo apt-get install libssl-dev openssl pkg-config build-essential

Now run either:

# To install the *prerelease* version from the main branch
cargo install --git https://github.com/martinvonz/jj.git --locked --bin jj jj-cli

or:

# To install the latest release
cargo install --locked --bin jj jj-cli

Arch Linux

You can install the jujutsu package from the official extra repository:

pacman -S jujutsu

Or install from the AUR repository with an AUR Helper:

yay -S jujutsu-git

Nix OS

If you're on Nix OS you can install a released version of jj using the nixpkgs jujutsu package.

To install a prerelease version, you can use the flake for this repository. For example, if you want to run jj loaded from the flake, use:

nix run 'github:martinvonz/jj'

You can also add this flake url to your system input flakes. Or you can install the flake to your user profile:

# Installs the prerelease version from the main branch
nix profile install 'github:martinvonz/jj'

Homebrew

If you use linuxbrew, you can run:

# Installs the latest release
brew install jj

Gentoo Linux

dev-vcs/jj is available in the GURU repository. Details on how to enable the GURU repository can be found here.

Once you have synced the GURU repository, you can install dev-vcs/jj via Portage:

emerge -av dev-vcs/jj

Mac

From Source, Vendored OpenSSL

First make sure that you have a Rust version >= 1.76. You may also need to run:

xcode-select --install

Now run either:

# To install the *prerelease* version from the main branch
cargo install --git https://github.com/martinvonz/jj.git \
     --features vendored-openssl --locked --bin jj jj-cli

or:

# To install the latest release
cargo install --features vendored-openssl --locked --bin jj jj-cli

From Source, Homebrew OpenSSL

First make sure that you have a Rust version >= 1.76. You will also need Homebrew installed. You may then need to run some or all of these:

xcode-select --install
brew install openssl
brew install pkg-config
export PKG_CONFIG_PATH="$(brew --prefix)/opt/openssl@3/lib/pkgconfig"

Now run either:

# To install the *prerelease* version from the main branch
cargo install --git https://github.com/martinvonz/jj.git --locked --bin jj jj-cli

or:

# To install the latest release
cargo install --locked --bin jj jj-cli

Homebrew

If you use Homebrew, you can run:

# Installs the latest release
brew install jj

MacPorts

You can also install jj via the MacPorts jujutsu port:

# Installs the latest release
sudo port install jujutsu

Windows

First make sure that you have a Rust version >= 1.76. Now run either:

# To install the *prerelease* version from the main branch
cargo install --git https://github.com/martinvonz/jj.git --locked --bin jj jj-cli --features vendored-openssl

or:

# To install the latest release
cargo install --locked --bin jj jj-cli --features vendored-openssl

Initial configuration

You may want to configure your name and email so commits are made in your name.

$ jj config set --user user.name "Martin von Zweigbergk"
$ jj config set --user user.email "martinvonz@google.com"

Command-line completion

To set up command-line completion, source the output of jj util completion bash/zsh/fish. Exactly how to source it depends on your shell.

Bash

source <(jj util completion bash)

Zsh

autoload -U compinit
compinit
source <(jj util completion zsh)

Fish

jj util completion fish | source

Nushell

jj util completion nushell | save completions-jj.nu
use completions-jj.nu *  # Or `source completions-jj.nu`

Xonsh

source-bash $(jj util completion)