Couchbase C Release Notes and Archives

Release notes, installation instructions, and download archive for the Couchbase C Client, libcouchbase.

These pages cover the 3.0 versions of the Couchbase C SDK. For release notes, download links, and installation methods for 2.10 and earlier releases of the Couchbase C Client, please see the 2.x C Release Notes & Download Archive.

Platform support and installation

The Couchbase C SDK can be installed via apt or yum repositories on GNU/Linux; homebrew on Mac OS X; and binary archives for Microsoft Windows. It may also be built from source on any of the platforms mentioned above, and more.

Installing Manually - Linux

If you want to install the C SDK manually, either from a static binary package or by manually configuring the repositories, you can use the following procedures.

The various Linux distributions contain the following packages:

  • libcouchbase3: The core library package.

  • libcouchbase-dev (or libcouchbase-devel): The development package, required if building SDKs which depend on the C SDK.

  • libcouchbase3-tools: The command line utilities (cbc and others).

  • libcouchbase3-libevent: Optional but recommended component for I/O performance. Can also be used to integrate with libevent (see Asynchronous Programming).

  • libcouchbase3-libev: Optional, for use with applications that make use of event loop integration with libev (see Asynchronous Programming).

Configuring yum repositories (CentOS, Redhat)

This section assumes you know how to add an external yum repository and Linux quick start explains the steps it will perform on your distribution. To configure the repository:

  1. Find the appropriate repository location for your distribution in the following table.

Version

Architecture

Repository

Amazon Linux 2

64-bit

https://packages.couchbase.com/clients/c/repos/rpm/amzn2/x86_64

Enterprise Linux 8

64-bit

https://packages.couchbase.com/clients/c/repos/rpm/el8/x86_64

Enterprise Linux 7

64-bit

https://packages.couchbase.com/clients/c/repos/rpm/el7/x86_64

  1. Create a couchbase.repo file in your /etc/yum.repos.d directory. It should look similar to the following:

[couchbase]
enabled = 1
name = libcouchbase package for centos8 x86_64
baseurl = https://packages.couchbase.com/clients/c/repos/rpm/el8/x86_64
gpgcheck = 1
gpgkey = https://packages.couchbase.com/clients/c/repos/rpm/couchbase.key

Configuring APT repositories (Debian, Ubuntu)

This section assumes some knowledge of apt and Linux quick start explains the steps it will perform on your distribution. To configure the repository:

  1. Download the Couchbase GPG key from https://packages.couchbase.com/clients/c/repos/deb/couchbase.key

  2. Add the key to the list of trusted package keys. Use the apt-key add command. For example, apt-key add couchbase.key.

  3. Create a couchbase.list file in /etc/apt/sources.list.d. The file should contain the repository for your distribution. Repositories are available for the following distributions:

Distribution

Repository Entry

Ubuntu 16.04 ("xenial")

deb https://packages.couchbase.com/clients/c/repos/deb/ubuntu1604 xenial xenial/main

Ubuntu 18.04 ("bionic")

deb https://packages.couchbase.com/clients/c/repos/deb/ubuntu1804 bionic bionic/main

Debian 9 ("stretch")

deb https://packages.couchbase.com/clients/c/repos/deb/debian9 stretch stretch/main

Debian 10 ("buster")

deb https://packages.couchbase.com/clients/c/repos/deb/debian10 buster buster/main

Note that only Ubuntu LTS (long term support) releases are supported. You may try to use an LTS repository for a non-LTS version, but success is not guaranteed.

Now that you have the repository configured, refresh the cache then check to see that you have been successful:

$ sudo apt-get update
$ sudo apt-cache search libcouchbase

You should see something like:

libcouchbase-dbg - library for the Couchbase protocol, debug symbols
libcouchbase-dev - library for the Couchbase protocol, development files
libcouchbase3 - library for the Couchbase protocol, core files
libcouchbase3-libev - library for the Couchbase protocol (libev backend)
libcouchbase3-libevent - library for the Couchbase protocol (libevent backend)
libcouchbase3-tools - library for the Couchbase protocol

Now, install libcouchbase3, and any other packages that you need for development:

sudo apt-get install libcouchbase3 libcouchbase3-dev libcouchbase3-tools libcouchbase-dbg libcouchbase3-libev libcouchbase3-libevent

For CentOS and Red Hat, the equivalent commands are:

sudo yum check-update
sudo yum search libcouchbase
sudo yum install libcouchbase3 libcouchbase3-dev libcouchbase3-tools

Installing binary packages without a repository

You can install standalone packages by downloading a tarball containing the necessary binary packages for your platform.

Installing RPMs manually

The following commands show steps to execute on CentOS 8 box, see table below for other RPM-based distributions.

curl -O https://packages.couchbase.com/clients/c/libcouchbase-3.0.0_centos8_x86_64.tar
tar xf libcouchbase-3.0.0_centos8_x86_64.tar
cd libcouchbase-3.0.0_centos8_x86_64
sudo yum install -y libcouchbase3{-tools,-libevent,}-3.0.0*.rpm libcouchbase-devel-*.rpm
> ...
> Installed:
>   libcouchbase3-tools-3.0.0-1.el8.x86_64
>   libcouchbase3-libevent-3.0.0-1.el8.x86_64
>   libcouchbase3-3.0.0-1.el8.x86_64
>   libcouchbase-devel-3.0.0-1.el8.x86_64
>
> Complete!

Installing DEBs manually

The following commands show steps to execute on Debian 10 (buster) box, see table below for other DEB-based distributions.

curl -O https://packages.couchbase.com/clients/c/libcouchbase-3.0.0_debian10_buster_amd64.tar
tar xf libcouchbase-3.0.0_debian10_buster_amd64.tar
cd libcouchbase-3.0.0_debian10_buster_amd64
sudo apt install libevent-core-2.1
sudo dpkg -i libcouchbase3{-tools,-libevent,}_3.0.0*.deb libcouchbase-dev*.deb
> Selecting previously unselected package libcouchbase3-tools.
> (Reading database ... 7165 files and directories currently installed.)
> Preparing to unpack libcouchbase3-tools_3.0.0-1_amd64.deb ...
> Unpacking libcouchbase3-tools (3.0.0-1) ...
> Selecting previously unselected package libcouchbase3-libevent:amd64.
> Preparing to unpack libcouchbase3-libevent_3.0.0-1_amd64.deb ...
> Unpacking libcouchbase3-libevent:amd64 (3.0.0-1) ...
> Selecting previously unselected package libcouchbase3:amd64.
> Preparing to unpack libcouchbase3_3.0.0-1_amd64.deb ...
> Unpacking libcouchbase3:amd64 (3.0.0-1) ...
> Selecting previously unselected package libcouchbase-dev:amd64.
> Preparing to unpack libcouchbase-dev_3.0.0-1_amd64.deb ...
> Unpacking libcouchbase-dev:amd64 (3.0.0-1) ...
> Setting up libcouchbase3:amd64 (3.0.0-1) ...
> Setting up libcouchbase-dev:amd64 (3.0.0-1) ...
> Setting up libcouchbase3-libevent:amd64 (3.0.0-1) ...
> Setting up libcouchbase3-tools (3.0.0-1) ...
> Processing triggers for libc-bin (2.28-10) ...

Installation from source

You may install the library from source either by downloading a source archive, or by checking out the git repository. Follow the instructions in the archive’s README for further instructions.

Installation on Mac OS X

To install the library on Mac OS X, first install the de-facto package manager for OS X: homebrew. Once homebrew is configured:

brew update # get list of latest packages
brew install libcouchbase

Windows Installation

Windows binary packages can be found as downloads for each version listed below. Included are the header files, release and debug variants of the DLLs and import libraries, and release and debug variants of the command line tools. Note that the C SDK does not have any preferred installation path, and it is up to you to determine where to place libcouchbase.dll.

Be sure to select the proper package for the compiler and architecture your application is using.

If there are no binaries available for your Visual Studio version, then using a binary from any other Visual Studio version is likely to work. Most of the issues related to mixing Visual Studio binary versions involve changing and incompatible C APIs or incompatible C Runtime (CRT) objects and functions. Since the Couchbase C SDK does not expose a C API, and since it does not directly expose any CRT functionality, it should be safe for use so long as your application can link to the library at compile-time. The windows runtime linker will ensure that each binary is using the appropriate version of the Visual C Runtime (MSVCRT.DLL).

If for some reason you cannot use any of the prebuilt Windows binaries, follow the instructions in installation from source (above) to build on Windows.

Verifying Installed Package

The easiest way to verify installed package is to check its version using cbc tools. It requires package libcouchbase3-tools installed on Linux systems, for Windows cbc.exe included in the zip archive. To verify the client run cbc version (cbc.exe version on Windows). Below is the output from version 3.0.0 on CentOS 8. It shows version along with git commit numbers. Then it prints default directory where IO plugins installed and enumerates the currently installed and available plugins. After that it reports whether OpenSSL linked to this particular version of libcouchbase, and displays the version number if it is accessible.

$ cbc version
cbc:
  Runtime: Version=3.0.0, Changeset=69f9a4eb8414f4bfd3824b863701d89a313401d5
  Headers: Version=3.0.0, Changeset=69f9a4eb8414f4bfd3824b863701d89a313401d5
  Build Timestamp: 2020-01-17 00:32:49
  Default plugin directory: /usr/lib64/libcouchbase
  IO: Default=libevent, Current=libevent, Accessible=libevent,select
  SSL Runtime: OpenSSL 1.1.1c FIPS  28 May 2019
  SSL Headers: OpenSSL 1.1.1c FIPS  28 May 2019
  Snappy: 1.1.1
  Tracing: SUPPORTED
  System: Linux-4.4.0-135-generic; x86_64
  CC: GNU 8.3.1; -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-strict-aliasing -ggdb3 -pthread
  CXX: GNU 8.3.1; -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-strict-aliasing -ggdb3 -pthread

Version 3.0.1 (8 April 2020)

  • CCBC-1188: cbc-pillowfight: fixed --collection switch.

  • CCBC-1173: Fixed exporting lcb_cmdquery_consistency_token_for_keyspace.

  • CCBC-1168: Exposed max_parallelism for query.

  • CCBC-1171: Exposed profile option for query.

  • CCBC-1170: Exposed scan_wait option for query.

  • CCBC-1159: Fixed error codes for Management API.

  • MB-37768: Fixed issue where `CMAKE_INSTALL_RPATH`was overriden, affecting cbc tools.

  • CCBC-1208: Added a fail-fast retry strategy.

  • CCBC-1209: Renamed functions of embedded http_parser to avoid name clash.

  • Removed use of deprecated function std::random_shuffle. std::random_shuffle is deprecated in C14, removed in C17. Replaced with std::shuffle.

  • Fixed several issues reported by coverity.

Platform

Architecture

File

Checksums

Any

libcouchbase-3.0.1.sha256sum

Source Archive

Any

libcouchbase-3.0.1.tar.gz

Amazon Linux 2

x64

libcouchbase-3.0.1_amzn2_x86_64.tar

Enterprise Linux 7

x64

libcouchbase-3.0.1_centos7_x86_64.tar

Enterprise Linux 8

x64

libcouchbase-3.0.1_centos8_x86_64.tar

Ubuntu 16.04 (xenial)

x64

libcouchbase-3.0.1_ubuntu1604_xenial_amd64.tar

Ubuntu 18.04 (bionic)

x64

libcouchbase-3.0.1_ubuntu1804_bionic_amd64.tar

Debian 9 (stretch)

x64

libcouchbase-3.0.1_debian9_stretch_amd64.tar

Debian 10 (buster)

x64

libcouchbase-3.0.1_debian10_buster_amd64.tar

Visual Studio 2015 (VC14)

x64

libcouchbase-3.0.1_vc14_amd64.zip

Visual Studio 2017 (VC15)

x64

libcouchbase-3.0.1_vc15_amd64.zip

Visual Studio 2017 TLS (VC15)

x64

libcouchbase-3.0.1_vc15_amd64_openssl.zip

Version 3.0.0 (17 January 2020)

This is the first GA release of the third generation C SDK.

  • CCBC-1152: Enabled SCRAM-SHA* SASL by default.

  • CCBC-1153: Renamed lcb_wait3 to lcb_wait.

  • CCBC-1147: Return LCB_SUCCESS for lcb_exists when the document is missing. lcb_respexists_is_found should be used on its response object to check the presense of the document.

  • CCBC-1152: Do not allow to use SASL PLAIN on non-TLS connections. Compiling libcouchbase with OpenSSL is strongly recommended.

  • CCBC-1032: Use operation node to resolve collection and return timeout when collection cannot be resolved

  • Added shortcut for query options to request metrics

  • Do not fallback to single subdocument API when only one specification passed to lcb_subdoc.

  • CCBC-1137: Allow to retrieve error context for HTTP response (lcb_http API).

  • CCBC-1145: Expose endpoints in error context.

  • CCBC-1146: Expose user-cookie in retry handler.

  • CCBC-1148: Added NULL checks for enhanced error info.

  • CCBC-1075: Renamed "FTS" to "SEARCH" in the APIs.

  • CCBC-1073: Renamed "N1QL" to "QUERY" in the APIs.

  • Fixed bucketless bootstrap for Server 6.0.

  • Fixed various memory leaks. Improved build, testing and packaging systems.

Platform

Architecture

File

Checksums

Any

libcouchbase-3.0.0.sha256sum

Source Archive

Any

libcouchbase-3.0.0.tar.gz

Amazon Linux 2

x64

libcouchbase-3.0.0_amzn2_x86_64.tar

Enterprise Linux 7

x64

libcouchbase-3.0.0_centos7_x86_64.tar

Enterprise Linux 8

x64

libcouchbase-3.0.0_centos8_x86_64.tar

Ubuntu 16.04 (xenial)

x64

libcouchbase-3.0.0_ubuntu1604_xenial_amd64.tar

Ubuntu 18.04 (bionic)

x64

libcouchbase-3.0.0_ubuntu1804_bionic_amd64.tar

Debian 9 (stretch)

x64

libcouchbase-3.0.0_debian9_stretch_amd64.tar

Debian 10 (buster)

x64

libcouchbase-3.0.0_debian10_buster_amd64.tar

Visual Studio 2015 (VC14)

x64

libcouchbase-3.0.0_vc14_amd64.zip

Visual Studio 2017 (VC15)

x64

libcouchbase-3.0.0_vc15_amd64.zip

Visual Studio 2019 (VC16)

x64

libcouchbase-3.0.0_vc16_amd64.zip

Visual Studio 2017 TLS (VC15)

x64

libcouchbase-3.0.0_vc15_amd64_openssl.zip

Pre-releases

Numerous Alpha and Beta releases were made in the run-up to the 3.0 release, and although unsupported, the release notes and download links are retained for archive purposes here.