Getting and building CockroachDB from source
Note that at least 4GB of RAM is required to build from source and run tests.
Install prerequisites
If you are on macOS, you may find the https://cockroachlabs.atlassian.net/wiki/spaces/CRDB/pages/73204103 documentation useful.
If using Bazel to build Cockroach (for
master
and v22.1 onward), the following dependencies are required:A C++ compiler that supports C++11. Note that GCC prior to 6.0 doesn't work due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48891
The standard C/C++ development headers on your system.
On GNU/Linux, the terminfo development libraries, which may be part of a ncurses development package (e.g. `libncurses-dev` on Debian/Ubuntu, but `ncurses-devel` on CentOS). You also need the
libresolv-wrapper
package on Ubuntu < 22.04.Git 1.9+, we recommend v2.20+
Bash (4+ is preferred)
GNU Make (4.2+ is known to work)
CMake 3.20.* (on Macs 3.21+ are also known to work)
Autoconf 2.68+
Yacc or Bison
GNU Patch 2.7+
Bazelisk (you can use Bazel directly instead of Bazelisk, although Bazelisk makes sure you’re using the same version that we use in CI)
If you're running macOS, a full installation of XCode is necessary.
If using
make
to build Cockroach (preferred for v21.2 and prior, deprecated from 22.1 through 23.1, no longer an option for 23.2 onward), all the dependencies above are required plus:A Go environment with a recent 64-bit version of the toolchain. Note that the Makefile enforces the specific version required, as it is updated frequently.
NodeJS 12.x and Yarn 1.7+
Get the CockroachDB code
Use git
to fetch the source code to an appropriate location:
git clone https://github.com/cockroachdb/cockroach
If you are using make
to build Cockroach, you must root your cockroach
repo correctly relative to $GOPATH
. Otherwise, builds will fail.
mkdir -p $(go env GOPATH)/src/github.com/cockroachdb
cd $(go env GOPATH)/src/github.com/cockroachdb
git clone https://github.com/cockroachdb/cockroach
cd cockroach
Next steps
If building with Bazel, see the https://cockroachlabs.atlassian.net/wiki/spaces/CRDB/pages/2221703221 documentation. Otherwise, continue reading.
(deprecated) Building with make
make
is deprecated for building v22.1 through v23.1 of cockroach
, but still the preferred build system for v21.2 or prior. On master
and release branches v23.2 and newer, building with make
is no longer an option.
An additional prerequisite in this case is a working Docker install able to run GNU/Linux binaries (e.g. Docker on Linux, macOS, Windows), so you can reuse our pre-populated Docker image with all necessary development dependencies. If you are a CRL employee, you cannot use Docker Desktop and should use an alternative like Podman or Rancher Desktop.
Run make build
, make test
, or anything else our Makefile offers.
Note: you might need to run make clean
first if you're seeing an error like
make[1]: /usr/local/Cellar/cmake/3.13.4/bin/cmake: No such file or directory.
If you wish to reuse our builder image instead of installing all the dependencies manually, prefix the make
command with build/builder.sh
; for example build/builder.sh make build
.
Note that the first time you run make
, it can take some time to download and install various dependencies. After running make build
, the cockroach
executable will be in your current directory and can be run as shown in Starting with CockroachDB.
Note that if you use the builder image, you should ensure that your Docker installation grants 4GB or more of RAM to containers. On some systems, the default configuration limits containers to 2GB memory usage and this can be insufficient to build/link a CockroachDB executable.
See also Building from source on macOS
Copyright (C) Cockroach Labs.
Attention: This documentation is provided on an "as is" basis, without warranties or conditions of any kind, either express or implied, including, without limitation, any warranties or conditions of title, non-infringement, merchantability, or fitness for a particular purpose.