The main purpose of this repository is to provide packaging support files for Apache CouchDB and its SpiderMonkey 1.8.5 dependency, for a number of well-known and used packaging formats, namely:
.deb
files, as used by Debian, Ubuntu, and derivatives.rpm
files, as used by CentOS, RedHat, and derivativessnapcraft
files, as used by the Ubuntu Snappy package manager
make couch-js-rpms
make couch-js-debs PLATFORM=$(lsb_release -cs)
cd .. && git clone https://github.com/apache/couchdb
cd couchdb-pkg && make build-couch $(lsb_release -cs) PLATFORM=$(lsb_release -cs)
make copy-couch $(lsb_release -cs) COUCHTARBALL=path/to/couchdb-#.#.#.tar.gz PLATFORM=$(lsb_release -cs)
You must first pull down the image or images you need from Docker Hub, or build the images using the apache/couchdb-ci repository. A full list of supported environments is at https://hub.docker.com/u/couchdbdev/ .
docker pull couchdbdev/<os>-<codename>-base
./build.sh js <os>-<codename> # for example, debian-stretch, ubuntu-bionic or centos-7.
From a downloaded CouchDB tarball:
docker pull couchdbdev/<osname>-<codename>-erlang-<erlang-version>
ERLANGVERSION=<erlang-version> ./build.sh couch <os>-<codename> path/to/couchdb-#.#.#.tar.gz
Directly from the Apache source CDN:
docker pull couchdbdev/<osname>-<codename>-erlang-<erlang-version>
./build.sh couch <os>-<codename> https://dist.apache.org/repos/dist/release/couchdb/source/#.#.#/apache-couchdb-#.#.#.tar.gz
- Linux running Docker
- The current user must be capable of running
docker run
. - Enough free disk space to download all of the Docker images + build CouchDB.
You can either build packages from a local CouchDB dist tarball (the output
of make dist
), or from a URL of a published CouchDB dist tarball (such
as the ones on https://couchdb.apache.org/). The package's version number
will be derived from the filename of the CouchDB dist tarball.
Run:
$ ./build.sh couch-all path/to/apache-couchdb-VERSION.tar.gz
or
$ ./build.sh couch-all http://url/to/apache-couchdb-VERSION.tar.gz
Packages will be placed in the pkgs/couch
subdirectory.
A similar js-all
target exists, should the SpiderMonkey packages need to be regenerated.
If you have Apache credentials (set your BINARY_CREDS
environment variable appropriately), after building all CouchDB packages above, and signing the rpms with the appropriate GPG key using the rpmsign --addsign <file.rpm>
command, simply run:
./build.sh couch-upload-all
Or, for the SpiderMonkey packages:
./build.sh js-upload-all
couch-dev-deb
and couch-dev-rpm
are dev repos which can be used
for pre-release or testing of packages.
To upload packages to the dev repository:
./build.sh couch-dev-upload-all path/to/apache-couchdb-VERSION.tar.gz
To upload only a subset of packages, edit build.sh temporary to remove some of these variables:
DEBIANS="..."
UBUNTUS="..."
CENTOSES="..."
XPLAT_BASES="..."
XPLAT_ARCHES="..."
sudo apt update && sudo apt install -y curl apt-transport-https gnupg
curl https://couchdb.apache.org/repo/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1
source /etc/os-release
echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couch-dev-deb/ ${VERSION_CODENAME} main" \
| sudo tee /etc/apt/sources.list.d/couchdb.list >/dev/null
sudo dnf install -y yum-utils
sudo yum-config-manager --add-repo https://apache.jfrog.io/artifactory/couchdb/couchdev.repo
sudo dnf install -y couchdb
sudo dnf install -y yum-utils
sudo yum-config-manager --add-repo https://apache.jfrog.io/artifactory/couchdb/couchdev.repo
sudo dnf config-manager --set-enabled crb
sudo dnf install epel-release epel-next-release
sudo dnf install -y mozjs78
sudo dnf install -y couchdb
To try out Nouveau:
-
Use
COUCHDB_NOUVEAU_ENABLE=1
when installing the couchdb package. That enables thenouveau
config setting -
Install Java 11+:
sudo dnf install java-21-openjdk-headless
- Start the service:
sudo service start couchdb
See README-SNAP.md.
General feedback is welcome at our user or developer mailing lists.
Apache CouchDB has a CONTRIBUTING file with details on how to get started with issue reporting or contributing to the upkeep of this project.