2022-11-20 13:19:39 +00:00
|
|
|
# install
|
|
|
|
|
|
2022-12-01 21:23:20 +00:00
|
|
|
You may install `d2` through any of the following methods.
|
2022-11-20 13:19:39 +00:00
|
|
|
|
|
|
|
|
<!-- toc -->
|
2022-12-01 20:59:53 +00:00
|
|
|
- <a href="#installsh" id="toc-installsh">install.sh</a>
|
|
|
|
|
- <a href="#security" id="toc-security">Security</a>
|
|
|
|
|
- <a href="#macos-homebrew" id="toc-macos-homebrew">macOS (Homebrew)</a>
|
|
|
|
|
- <a href="#standalone" id="toc-standalone">Standalone</a>
|
2022-12-01 21:14:09 +00:00
|
|
|
- <a href="#manual" id="toc-manual">Manual</a>
|
|
|
|
|
- <a href="#prefix" id="toc-prefix">PREFIX</a>
|
2022-12-01 20:59:53 +00:00
|
|
|
- <a href="#from-source" id="toc-from-source">From source</a>
|
|
|
|
|
- <a href="#coming-soon" id="toc-coming-soon">Coming soon</a>
|
2022-11-20 13:19:39 +00:00
|
|
|
|
|
|
|
|
## install.sh
|
|
|
|
|
|
2022-11-21 17:35:49 +00:00
|
|
|
The recommended and easiest way to install is with our install script, which will detect
|
|
|
|
|
the OS and architecture you're on and use the best method:
|
|
|
|
|
|
2022-11-20 13:19:39 +00:00
|
|
|
```sh
|
|
|
|
|
# With --dry-run the install script will print the commands it will use
|
|
|
|
|
# to install without actually installing so you know what it's going to do.
|
|
|
|
|
curl -fsSL https://d2lang.com/install.sh | sh -s -- --dry-run
|
|
|
|
|
# If things look good, install for real.
|
|
|
|
|
curl -fsSL https://d2lang.com/install.sh | sh -s --
|
|
|
|
|
```
|
|
|
|
|
|
2022-11-21 08:02:39 +00:00
|
|
|
For help on the terminal run, including the supported package managers and detection
|
|
|
|
|
methods:
|
2022-11-20 13:19:39 +00:00
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
curl -fsSL https://d2lang.com/install.sh | sh -s -- --help
|
|
|
|
|
```
|
|
|
|
|
|
2022-12-01 20:59:53 +00:00
|
|
|
### Security
|
|
|
|
|
|
|
|
|
|
The install script is not the most secure way to install d2. We recommend that if
|
|
|
|
|
possible, you use your OS's package manager directly or install from source with `go` as
|
|
|
|
|
described below.
|
|
|
|
|
|
|
|
|
|
But this does not mean the install script is insecure. There is no major flaw that
|
|
|
|
|
the install script is more vulnerable to than any other method of manual installation.
|
|
|
|
|
The most secure installation method involves a second independent entity, i.e your OS
|
|
|
|
|
package repos or Go's proxy server.
|
|
|
|
|
|
2022-12-01 21:23:20 +00:00
|
|
|
We're careful shell programmers and are aware of the many footguns of the Unix shell. Our
|
2022-12-01 20:59:53 +00:00
|
|
|
script was written carefully and with detail. For example, it is not vulnerable to partial
|
|
|
|
|
execution and the entire script runs with `set -eu` and very meticulous quoting.
|
|
|
|
|
|
2022-12-01 21:23:20 +00:00
|
|
|
It follows the XDG standards, installs `d2` properly into a Unix hierarchy path (defaulting
|
2022-12-01 20:59:53 +00:00
|
|
|
to /usr/local though you can use ~/.local to avoid sudo if you'd like) and allows for easy
|
|
|
|
|
uninstall.
|
|
|
|
|
|
|
|
|
|
Some other niceties are that it'll tell you if you need to adjust `$PATH` or `$MANPATH` to
|
2022-12-01 21:23:20 +00:00
|
|
|
access `d2` and its manpages. It can also install
|
2022-12-01 20:59:53 +00:00
|
|
|
[TALA](https://github.com/terrastruct/tala) for you with `--tala`. You can also use it to
|
|
|
|
|
install a specific version of `d2` with `--version`. Run it with `--help` for more more
|
|
|
|
|
detailed docs on its various options and features.
|
|
|
|
|
|
2022-12-01 21:23:20 +00:00
|
|
|
If you're still concerned, remember you can run with `--dry-run` to avoid writing anything.
|
2022-12-01 20:59:53 +00:00
|
|
|
|
|
|
|
|
The install script does not yet verify any signature on the downloaded release
|
|
|
|
|
but that is coming soon. [#315](https://github.com/terrastruct/d2/issues/315)
|
|
|
|
|
|
2022-11-21 08:02:39 +00:00
|
|
|
## macOS (Homebrew)
|
|
|
|
|
|
2022-11-22 00:37:33 +00:00
|
|
|
If you're on macOS, you can install with `brew`.
|
2022-11-21 08:02:39 +00:00
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
brew tap terrastruct/d2
|
|
|
|
|
brew install d2
|
|
|
|
|
```
|
|
|
|
|
|
2022-11-22 00:35:27 +00:00
|
|
|
> The install script above does this automatically if you have `brew` installed and
|
|
|
|
|
> are running it on macOS.
|
|
|
|
|
|
2022-11-20 13:19:39 +00:00
|
|
|
## Standalone
|
|
|
|
|
|
2022-11-22 00:35:27 +00:00
|
|
|
We publish standalone release archives for every release on Github.
|
2022-12-01 21:14:09 +00:00
|
|
|
|
|
|
|
|
Here's a minimal example script that downloads a standalone release, extracts it into the
|
|
|
|
|
current directory and then installs it.
|
|
|
|
|
Adjust VERSION, OS, and ARCH as needed.
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
VERSION=v0.0.13 OS=macos ARCH=amd64 curl -fsSLO \
|
|
|
|
|
"https://github.com/terrastruct/d2/releases/download/$VERSION/d2-$VERSION-$OS-$ARCH.tar.gz" \
|
|
|
|
|
&& tar -xzf "d2-$VERSION-$OS-$ARCH.tar.gz" \
|
|
|
|
|
&& make -sC "d2-$VERSION" install
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
To uninstall:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
VERSION=v0.0.13 make -sC "d2-$VERSION" uninstall
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Manual
|
|
|
|
|
|
|
|
|
|
You can also manually download the `.tar.gz` release for your OS/ARCH combination and then
|
|
|
|
|
run the following inside the extracted directory to install:
|
2022-11-20 13:19:39 +00:00
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
make install
|
|
|
|
|
```
|
|
|
|
|
|
2022-11-21 08:02:39 +00:00
|
|
|
Run the following to uninstall:
|
2022-11-20 13:19:39 +00:00
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
make uninstall
|
|
|
|
|
```
|
|
|
|
|
|
2022-12-01 21:14:09 +00:00
|
|
|
### PREFIX
|
|
|
|
|
|
2022-11-21 08:02:39 +00:00
|
|
|
You can control the Unix hierarchy installation path with `PREFIX=`. For example:
|
2022-11-20 13:19:39 +00:00
|
|
|
|
2022-12-01 21:14:09 +00:00
|
|
|
```sh
|
2022-11-20 13:19:39 +00:00
|
|
|
# Install under ~/.local.
|
|
|
|
|
# Binaries will be at ~/.local/bin
|
|
|
|
|
# And manpages will be under ~/.local/share/man
|
|
|
|
|
# And supporting data like icons and fonts at ~/.local/share/d2
|
|
|
|
|
make install PREFIX=$HOME/.local
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The install script places the standalone release into `$PREFIX/lib/d2/d2-<version>`
|
|
|
|
|
and we recommend doing the same with manually installed releases so that you
|
|
|
|
|
know where the release directory is for easy uninstall.
|
|
|
|
|
|
2022-11-22 00:35:27 +00:00
|
|
|
> warn: Our binary releases aren't fully static like normal Go binaries due to the C
|
|
|
|
|
> dependency on v8go for executing dagre. If you're on an older system with an old
|
|
|
|
|
> libc, you'll want to install from source.
|
2022-11-20 13:19:39 +00:00
|
|
|
|
2022-11-21 08:02:39 +00:00
|
|
|
## From source
|
2022-11-21 07:03:22 +00:00
|
|
|
|
2022-11-22 00:35:27 +00:00
|
|
|
You can always install from source:
|
2022-11-21 07:03:22 +00:00
|
|
|
|
|
|
|
|
```sh
|
2022-12-01 05:14:38 +00:00
|
|
|
go install oss.terrastruct.com/d2@latest
|
2022-11-21 07:03:22 +00:00
|
|
|
```
|
2022-11-21 17:31:05 +00:00
|
|
|
|
2022-12-01 20:59:53 +00:00
|
|
|
To install a proper release from source clone the repository and then:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
./ci/release/build.sh --install
|
|
|
|
|
# To uninstall:
|
|
|
|
|
# ./ci/release/build.sh --uninstall
|
|
|
|
|
```
|
|
|
|
|
|
2022-11-21 17:31:05 +00:00
|
|
|
## Coming soon
|
|
|
|
|
|
|
|
|
|
- Docker image
|
|
|
|
|
- Windows install
|
|
|
|
|
- rpm and deb packages
|
2022-11-22 00:35:27 +00:00
|
|
|
- with repositories and standalone
|
2022-11-21 17:31:05 +00:00
|
|
|
- homebrew core
|