Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Installation

DBSurveyor ships as two static binaries with no runtime dependencies. There is nothing to install alongside them: no database client libraries, no Oracle Instant Client, no runtime.

Pre-built binaries

Download the archive for your platform from the Releases page and extract it. Each archive contains both binaries.

PlatformArchitectures
Linuxamd64, arm64
macOSamd64, arm64
Windowsamd64

Every archive supports all six database engines. There are no per-driver variants: the drivers are pure Go, so there is nothing to gate behind a build flag.

Homebrew

brew install EvilBit-Labs/tap/dbsurveyor

From source

Requires Go 1.26 or later. See mise.toml for the exact pinned version.

git clone https://github.com/EvilBit-Labs/dbsurveyor.git
cd dbsurveyor
go build -trimpath -o dist/ ./cmd/...

Or with the task runner:

just build

Both binaries land in ./dist.

Why there are no build variants

The retired Rust implementation gated each database driver behind a Cargo feature, because several drivers needed native client libraries and an operator who only wanted PostgreSQL should not have had to install the rest.

That problem does not exist here. Every driver is pure Go, CGO_ENABLED=0 throughout, and a repository test fails on any cgo dependency entering the graph – so one binary speaks all six engines and links nothing at runtime. The build-time choice went away because the cost it was avoiding went away.

Verifying a release

Release artifacts are signed with Cosign using keyless OIDC, and each release publishes an SBOM and checksums.

# Checksums
sha256sum --check dbsurveyor_checksums.txt

# Signature
cosign verify-blob \
  --certificate dbsurveyor_checksums.txt.pem \
  --signature dbsurveyor_checksums.txt.sig \
  --certificate-identity-regexp 'https://github.com/EvilBit-Labs/dbsurveyor/.*' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  dbsurveyor_checksums.txt

Airgapped installation

This is the case the tool is built for, and it needs no special procedure: copy the archive across and extract it. The binaries make no network call except to the database they are pointed at, check for no updates, and send no telemetry.

Building from source on an airgapped host needs the module cache carried across:

# On a connected host
go mod download
go mod vendor

# Carry the tree across, then on the airgapped host
go build -mod=vendor -trimpath -o dist/ ./cmd/...

Development setup

just dev-setup     # install the toolchain and Go tools
pre-commit install # git hooks

dev-setup installs golangci-lint and govulncheck. Note that mise puts Go tools in the Go toolchain’s own bin rather than in $GOPATH/bin; if just vuln reports “command not found”, look under $(go env GOBIN).

Troubleshooting

“command not found” after extracting. The binary is not on your PATH. Either move it somewhere that is, or invoke it by path.

macOS refuses to run the binary. Gatekeeper quarantines downloaded files. xattr -d com.apple.quarantine dbsurveyor clears it, or use the Homebrew installation, which is not quarantined.

A build fails with a Go version error. The module requires Go 1.26. Check go version, and prefer mise install to get the pinned toolchain rather than whatever the system package manager has.