This is an automated email from the ASF dual-hosted git repository.
tuhaihe pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry-site.git
The following commit(s) were added to refs/heads/main by this push:
new 788939c4f5 Docs: updates for 2.2
788939c4f5 is described below
commit 788939c4f593ea09435af7b182f82e5f1c3bbc17
Author: Dianjin Wang <[email protected]>
AuthorDate: Thu Sep 10 11:00:16 2026 +0800
Docs: updates for 2.2
---
.../version-2.x/build/build-based-on-docker.md | 18 +
versioned_docs/version-2.x/build/configure.md | 110 ++++++-
.../version-2.x/build/create-gpadmin-user.md | 4 +-
.../version-2.x/build/download-source-code.md | 35 +-
versioned_docs/version-2.x/build/index.md | 18 +-
.../version-2.x/build/install-required-packages.md | 35 +-
versioned_docs/version-2.x/build/quick-build.md | 361 ++++++++++++++++++++-
.../version-2.x/build/set-demo-cluster.md | 6 +-
.../deployment/platform-requirements.md | 6 +-
9 files changed, 547 insertions(+), 46 deletions(-)
diff --git a/versioned_docs/version-2.x/build/build-based-on-docker.md
b/versioned_docs/version-2.x/build/build-based-on-docker.md
index 4fd74f4c53..f63e5594e9 100644
--- a/versioned_docs/version-2.x/build/build-based-on-docker.md
+++ b/versioned_docs/version-2.x/build/build-based-on-docker.md
@@ -27,13 +27,27 @@ docker run --name cbdb-dev -it --rm -h cdw --shm-size=2gb
apache/incubator-cloud
docker run --name cbdb-dev -it --rm -h cdw --shm-size=2gb
apache/incubator-cloudberry:cbdb-build-rocky9-latest
```
</TabItem>
+<TabItem value="rocky-linux-10" label="Rocky Linux 10">
+```bash
+docker run --name cbdb-dev -it --rm -h cdw --shm-size=2gb
apache/incubator-cloudberry:cbdb-build-rocky10-latest
+```
+</TabItem>
<TabItem value="ubuntu-22" label="Ubuntu 22.04">
```bash
docker run --name cbdb-dev -it --rm -h cdw --shm-size=2gb
apache/incubator-cloudberry:cbdb-build-ubuntu22.04-latest
```
</TabItem>
+<TabItem value="ubuntu-24" label="Ubuntu 24.04">
+```bash
+docker run --name cbdb-dev -it --rm -h cdw --shm-size=2gb
apache/incubator-cloudberry:cbdb-build-ubuntu24.04-latest
+```
+</TabItem>
</Tabs>
+:::note
+Rocky Linux 10 and Ubuntu 24.04 are supported starting from Apache Cloudberry
2.2.
+:::
+
Explaination:
- `--name=cbdb-dev` will set the name of the container to `cbdb-dev`. You can
change it to any name you prefer.
- `-it` will run the container in interactive mode, allowing you to execute
commands inside it.
@@ -114,6 +128,10 @@ cd /home/gpadmin/cloudberry
export SRC_DIR=/home/gpadmin/cloudberry
mkdir -p ${SRC_DIR}/build-logs
+# Since Cloudberry 2.2
+# Pre-stage the Python packages for `--with-pythonsrc-ext` before building
+make -C gpMgmt/bin download-python-deps
+
## Configure, build, and install Cloudberry
./devops/build/automation/cloudberry/scripts/configure-cloudberry.sh
./devops/build/automation/cloudberry/scripts/build-cloudberry.sh
diff --git a/versioned_docs/version-2.x/build/configure.md
b/versioned_docs/version-2.x/build/configure.md
index 60a734d312..6fcc6905b9 100644
--- a/versioned_docs/version-2.x/build/configure.md
+++ b/versioned_docs/version-2.x/build/configure.md
@@ -5,6 +5,33 @@ title: Configure Apache Cloudberry Build
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
+## Pre-stage the Python packages for `--with-pythonsrc-ext`
+
+:::note
+This step is only required starting from Apache Cloudberry 2.2.
+:::
+
+The Python source packages used by `--with-pythonsrc-ext` are not bundled in
the repository. They have been removed since Apache Cloudberry 2.0 to comply
with the Apache release policy, and used to be downloaded on the fly during the
build. Starting from Apache Cloudberry 2.2, they are downloaded ahead of the
build instead, so pre-stage them before you run `configure`.
+
+Building PyYAML requires Cython earlier than 3.0. On Ubuntu, install the
matching distribution package first:
+
+```bash
+# For Ubuntu 22.04, cython3 is 0.29.x
+sudo apt install -y cython3
+
+# For Ubuntu 24.04, cython3 is 3.x and cannot build PyYAML, so use
cython3-legacy instead
+sudo apt install -y cython3-legacy
+```
+
+On Rocky Linux 8 and 9, `python3-Cython` has already been installed in
[Install required packages](./install-required-packages). On Rocky Linux 10,
the distribution only ships Cython 3.x, so the following command installs a
compatible version through `pip3` for you.
+
+Then download the packages:
+
+```bash
+cd ~/cloudberry
+make -C gpMgmt/bin download-python-deps
+```
+
## Configure the build process
<Tabs>
@@ -28,6 +55,44 @@ sudo chown -R gpadmin:gpadmin /usr/local/cloudberry-db
The `configure` command sets up the build environment for Apache Cloudberry.
This configuration includes several development features and extensions.
+:::note
+Starting from Apache Cloudberry 2.2, new extensions are available, including
`diskquota`, `gp_stats_collector`, and `yezzey`. Use the corresponding
`configure` options to enable them.
+:::
+
+<Tabs>
+<TabItem value="cloudberry-2.2" label="Cloudberry 2.2" default>
+```bash
+cd ~/cloudberry
+export LD_LIBRARY_PATH=/usr/local/cloudberry-db/lib:${LD_LIBRARY_PATH:-""}
+./configure --prefix=/usr/local/cloudberry-db \
+ --disable-external-fts \
+ --enable-gpcloud \
+ --enable-ic-proxy \
+ --enable-mapreduce \
+ --enable-orafce \
+ --enable-orca \
+ --enable-pax \
+ --disable-pxf \
+ --enable-tap-tests \
+ --with-diskquota \
+ --with-gp-stats-collector \
+ --with-gssapi \
+ --with-ldap \
+ --with-libxml \
+ --with-lz4 \
+ --with-pam \
+ --with-perl \
+ --with-pgport=5432 \
+ --with-python \
+ --with-pythonsrc-ext \
+ --with-ssl=openssl \
+ --with-uuid=e2fs \
+ --with-yezzey \
+ --with-includes=/usr/local/xerces-c/include \
+ --with-libraries=/usr/local/cloudberry-db/lib
+```
+</TabItem>
+<TabItem value="cloudberry-2.0-2.1" label="Cloudberry 2.0/2.1">
```bash
cd ~/cloudberry
export LD_LIBRARY_PATH=/usr/local/cloudberry-db/lib:${LD_LIBRARY_PATH:-""}
@@ -56,7 +121,9 @@ export
LD_LIBRARY_PATH=/usr/local/cloudberry-db/lib:${LD_LIBRARY_PATH:-""}
--with-libraries=/usr/local/cloudberry-db/lib
```
</TabItem>
-<TabItem value="ubuntu-linux" label="For Ubuntu 20.04+" default>
+</Tabs>
+</TabItem>
+<TabItem value="ubuntu-linux" label="For Ubuntu 22.04+">
### Prepare environment
@@ -73,6 +140,12 @@ sudo chown -R gpadmin:gpadmin /usr/local/cloudberry-db
The `configure` command sets up the build environment for Apache Cloudberry.
This configuration includes several development features and extensions.
+:::note
+Starting from Apache Cloudberry 2.2, new extensions are available, including
`diskquota`, `gp_stats_collector`, and `yezzey`. Use the corresponding
`configure` options to enable them.
+:::
+
+<Tabs>
+<TabItem value="cloudberry-2.2" label="Cloudberry 2.2" default>
```bash
cd ~/cloudberry
./configure --prefix=/usr/local/cloudberry-db \
@@ -85,6 +158,8 @@ cd ~/cloudberry
--enable-pax \
--disable-pxf \
--enable-tap-tests \
+ --with-diskquota \
+ --with-gp-stats-collector \
--with-gssapi \
--with-ldap \
--with-libxml \
@@ -96,9 +171,39 @@ cd ~/cloudberry
--with-pythonsrc-ext \
--with-ssl=openssl \
--with-uuid=e2fs \
+ --with-yezzey \
--with-includes=/usr/include/xercesc
```
</TabItem>
+<TabItem value="cloudberry-2.0-2.1" label="Cloudberry 2.0/2.1">
+```bash
+cd ~/cloudberry
+./configure --prefix=/usr/local/cloudberry-db \
+ --disable-external-fts \
+ --enable-gpcloud \
+ --enable-ic-proxy \
+ --enable-mapreduce \
+ --enable-orafce \
+ --enable-orca \
+ --enable-pax \
+ --disable-pxf \
+ --enable-tap-tests \
+ --with-gssapi \
+ --with-ldap \
+ --with-libxml \
+ --with-lz4 \
+ --with-pam \
+ --with-perl \
+ --with-pgport=5432 \
+ --with-python \
+ --with-pythonsrc-ext \
+ --with-ssl=openssl \
+ --with-uuid=e2fs \
+ --with-includes=/usr/include/xercesc
+```
+</TabItem>
+</Tabs>
+</TabItem>
</Tabs>
## `configure` options
@@ -144,3 +249,6 @@ Also, some packages names vary between different Linux
distributions.
| `--with-libxml` | Build with libxml2, enabling SQL/XML
support.|This requires libxml2 to be installed.|
| `--with-lz4` | Build with LZ4 compression support |This allows
the use of LZ4 for compression of table data and lz4 library is required to be
installed.|
| `--with-ssl=LIB` | Build with support for SSL (encrypted)
connections. | The only LIBRARY supported is openssl, so `--with-ssl=openssl`
is used in this guide. This requires the OpenSSL package to be installed. |
+| `--with-diskquota` | Build with diskquota extension. | Diskquota is
an extension that provides disk usage enforcement for database objects in
Apache Cloudberry. **Since Cloudberry 2.2**|
+| `--with-gp-stats-collector` | Build with stats collector extension. |
An extension for collecting query execution metrics and reporting them to an
external agent. **Since Cloudberry 2.2**|
+| `--with-yezzey` | Build with Yezzey extension. | Yezzey is an
extension for offloading data from Cloudberry to S3-compatible external
storage. This option builds the extension only. You do not need a proxy if
there are only a few requests to S3, but many parallel data exchange streams
can exhaust CPU and network on the cluster host. For better performance under
heavy traffic, additionally deploy
[YProxy](https://github.com/open-gpdb/yproxy), which pools connections to S3
and sch [...]
diff --git a/versioned_docs/version-2.x/build/create-gpadmin-user.md
b/versioned_docs/version-2.x/build/create-gpadmin-user.md
index 89a1d84c48..a95889139a 100644
--- a/versioned_docs/version-2.x/build/create-gpadmin-user.md
+++ b/versioned_docs/version-2.x/build/create-gpadmin-user.md
@@ -16,7 +16,7 @@ If `sudo` & `git` command is not already installed, run the
following command to
dnf install -y sudo git
```
</TabItem>
-<TabItem value="ubuntu" label="For Ubuntu 20.04+" default>
+<TabItem value="ubuntu" label="For Ubuntu 22.04+" default>
```bash
apt update && apt install -y sudo git
```
@@ -63,7 +63,7 @@ This script performs three main tasks as the `gpadmin` user:
The script uses a heredoc (EOF) block to execute multiple commands under the
`gpadmin` user context. This will be used multiple time throughout these
instructions.
<Tabs>
-<TabItem value="cloudberry-2.1.0" label="Apache Cloudberry 2.1.0" default>
+<TabItem value="cloudberry-2.1.0" label="Apache Cloudberry 2.1.0+" default>
```bash
sudo -u gpadmin bash <<'EOF'
# Add Cloudberry environment setup to .bashrc
diff --git a/versioned_docs/version-2.x/build/download-source-code.md
b/versioned_docs/version-2.x/build/download-source-code.md
index b0edd10744..c27a224771 100644
--- a/versioned_docs/version-2.x/build/download-source-code.md
+++ b/versioned_docs/version-2.x/build/download-source-code.md
@@ -19,32 +19,28 @@ git clone https://github.com/apache/cloudberry.git
~/cloudberry
cd ~/cloudberry
git fetch --tags
-# For Apache Cloudberry 2.0.0
-git checkout tags/2.0.0-incubating
+# For Apache Cloudberry 2.2.0
+git checkout tags/2.2.0-incubating
# For Apache Cloudberry 2.1.0
git checkout tags/2.1.0-incubating
+# For Apache Cloudberry 2.0.0
+git checkout tags/2.0.0-incubating
+
git submodule update --init --recursive
```
:::note
-The command `git submodule update --init --recursive` is used to initialize
submodules for building with PAX support in this guide. If you don't plan to
build with PAX support, you can skip this step.
+The command `git submodule update --init --recursive` initializes the
submodules that the build depends on. In Apache Cloudberry 2.0 and 2.1, these
are only needed for building with PAX support, so you can skip this step if you
don't plan to enable PAX. Starting from Apache Cloudberry 2.2, other components
are shipped as submodules too, such as `gpcontrib/yezzey` for `--with-yezzey`,
so run this command unless you are sure you need none of them.
:::
:::caution
-In the Ubuntu container, you may encounter the following error when clone the
source code:
+In the Ubuntu container, you may encounter the following error when cloning
the source code: `error: git-remote-https died of signal 4`.
-```
-error: git-remote-https died of signal 4
-```
-
-You can set the following environment variable to avoid this error:
+You can set the following environment variable to avoid this error: `export
GNUTLS_CPUID_OVERRIDE=0x1`.
-```bash
-export GNUTLS_CPUID_OVERRIDE=0x1
-```
:::
## Download the source code archive
@@ -52,11 +48,11 @@ export GNUTLS_CPUID_OVERRIDE=0x1
Alternatively, you can download the source code archive from the [Apache
Cloudberry releases page](/releases).
-- For Apache Cloudberry 2.0.0
+- For Apache Cloudberry 2.2.0
```bash
-tar xvzf apache-cloudberry-2.0.0-incubating-src.tar.gz
-mv apache-cloudberry-2.0.0-incubating cloudberry
+tar xvzf apache-cloudberry-2.2.0-incubating-src.tar.gz
+mv apache-cloudberry-2.2.0-incubating cloudberry
```
- For Apache Cloudberry 2.1.0
@@ -66,6 +62,13 @@ tar xvzf apache-cloudberry-2.1.0-incubating-src.tar.gz
mv apache-cloudberry-2.1.0-incubating cloudberry
```
+- For Apache Cloudberry 2.0.0
+
+```bash
+tar xvzf apache-cloudberry-2.0.0-incubating-src.tar.gz
+mv apache-cloudberry-2.0.0-incubating cloudberry
+```
+
:::note
The submodules are already included in the latest 2.x.0 release source code
archive, so you don't need to download the submodules manually after extracting
the archive.
-:::
\ No newline at end of file
+:::
diff --git a/versioned_docs/version-2.x/build/index.md
b/versioned_docs/version-2.x/build/index.md
index e3d24ad371..7e1c5cc53d 100644
--- a/versioned_docs/version-2.x/build/index.md
+++ b/versioned_docs/version-2.x/build/index.md
@@ -35,20 +35,24 @@ For those new to Cloudberry or PostgreSQL, we recommend
starting with a PostgreS
## Prerequisites
-### Provision a Rocky Linux 8+ / Ubuntu 20.04+ Environment
+### Provision a Rocky Linux 8+ / Ubuntu 22.04+ Environment
+
+:::note
+Since Apache Cloudberry 2.2, Ubuntu 20.04 support has been dropped, and
support for Rocky Linux 10 and Ubuntu 24.04 has been added.
+:::
- Use any platform to create a virtual machine or container:
- - **Cloud providers**: You can use the Rocky Linux 8+ or Ubuntu 20.04+
images provided by the cloud providers, such as AWS, Google Cloud, Microsoft
Azure, and more.
- - **VirtualBox**: Use the official [Rocky Linux
8+](https://rockylinux.org/download) / [Ubuntu
20.04+](https://ubuntu.com/download) ISO or Vagrant boxes.
- - **Docker**: These instructions were validated under Rocky Linux 8+ and
Ubuntu 20.04 official base docker images, but should work with any of their
based container.
+ - **Cloud providers**: You can use the Rocky Linux 8+ or Ubuntu 22.04+
images provided by the cloud providers, such as AWS, Google Cloud, Microsoft
Azure, and more.
+ - **VirtualBox**: Use the official [Rocky Linux
8+](https://rockylinux.org/download) / [Ubuntu
22.04+](https://ubuntu.com/download) ISO or Vagrant boxes.
+ - **Docker**: These instructions were validated under Rocky Linux 8+ and
Ubuntu 22.04 official base docker images, but should work with any of their
based container.
- For example, you can run the following command to start a Rocky Linux
8 container:
```bash
docker run -it --shm-size=2gb -h cdw rockylinux/rockylinux:8
- # Start a Ubuntu 20.04 container:
- # docker run -it --shm-size=2gb -h cdw ubuntu:20.04
+ # Start a Ubuntu 22.04 container:
+ # docker run -it --shm-size=2gb -h cdw ubuntu:22.04
```
The hostname `cdw` (Coordinator Data Warehouse) is just an example of
how we started the container for testing.
@@ -76,7 +80,7 @@ Minimum requirements for development environment:
## Build Apache Cloudberry from source code
-The following steps guide you through building Apache Cloudberry from source
code on Rocky Linux 8+ or Ubuntu 20.04+. The process is similar for both
operating systems, with minor differences in package management, dependencies
and software versions between these two distributions.
+The following steps guide you through building Apache Cloudberry from source
code on Rocky Linux 8+ or Ubuntu 22.04+. The process is similar for both
operating systems, with minor differences in package management, dependencies
and software versions between these two distributions.
Just go ahead and follow the steps below to build Apache Cloudberry from
source code:
diff --git a/versioned_docs/version-2.x/build/install-required-packages.md
b/versioned_docs/version-2.x/build/install-required-packages.md
index 41db3656e9..a739e11745 100644
--- a/versioned_docs/version-2.x/build/install-required-packages.md
+++ b/versioned_docs/version-2.x/build/install-required-packages.md
@@ -45,6 +45,7 @@ sudo dnf install -y apr-devel \
perl-Env \
python3-devel \
python3-pip \
+ python3-setuptools \
readline-devel \
rsync \
wget \
@@ -61,6 +62,12 @@ On Rocky Linux, they are disabled by default and must be
explicitly enabled.
<Tabs>
<TabItem value="rocky-linux-8" label="For Rocky Linux 8" default>
+- For Apache Cloudberry 2.2.0
+
+```bash
+sudo dnf install -y --enablerepo=devel liburing-devel libuv-devel
libyaml-devel perl-IPC-Run protobuf-devel python3-wheel python3-Cython
+```
+
- For Apache Cloudberry 2.1.0
```bash
@@ -75,6 +82,12 @@ sudo dnf install -y --enablerepo=devel libuv-devel
libyaml-devel perl-IPC-Run pr
</TabItem>
<TabItem value="rocky-linux-9" label="For Rocky Linux 9">
+- For Apache Cloudberry 2.2.0
+
+```bash
+sudo dnf install -y --enablerepo=crb liburing-devel libuv-devel libyaml-devel
perl-IPC-Run protobuf-devel python3-wheel python3-Cython
+```
+
- For Apache Cloudberry 2.1.0
```bash
@@ -86,6 +99,15 @@ sudo dnf install -y --enablerepo=crb liburing-devel
libuv-devel libyaml-devel pe
```bash
sudo dnf install -y --enablerepo=crb libuv-devel libyaml-devel perl-IPC-Run
protobuf-devel
```
+</TabItem>
+<TabItem value="rocky-linux-10" label="For Rocky Linux 10">
+
+- For Apache Cloudberry 2.2.0
+
+```bash
+sudo dnf install -y --enablerepo=crb liburing-devel libuv-devel libyaml-devel
perl-IPC-Run protobuf-devel python3-wheel
+```
+
</TabItem>
</Tabs>
@@ -96,7 +118,7 @@ In Red Hat Enterprise Linux (RHEL), this repository is
called "PowerTools."
### Install gcc and gcc-c++ 11+ for Rocky Linux 8 (Optional)
:::tip
-This step is only required for Apache Cloudberry 2.0.0. You can skip this step
when building Apache Cloudberry 2.1.0.
+This step is only required for Apache Cloudberry 2.0.0. You can skip this step
when building Apache Cloudberry 2.1.0+.
:::
For Rocky Linux 8, we need to install the higher version of gcc and gcc-c++ to
build Apache Cloudberry 2.0.0 with PAX support:
@@ -164,7 +186,7 @@ Ensure the SHA-256 checksum validation passes (output:
`xerces-c-3.3.0.tar.gz: O
:::
</TabItem>
-<TabItem value="ubuntu" label="For Ubuntu 20.04+">
+<TabItem value="ubuntu" label="For Ubuntu 22.04+">
For Ubuntu users:
@@ -207,24 +229,25 @@ sudo apt install -y bison \
python3-dev \
python3-pip \
python3-setuptools \
+ python3-wheel \
rsync
```
### Extra dependencies for building PAX (Optional)
:::tip
-Only required for Apache Cloudberry 2.1.0. You can skip this step when
building Apache Cloudberry 2.0.0.
+Only required for Apache Cloudberry 2.1.0+. You can skip this step when
building Apache Cloudberry 2.0.0.
:::
-In Apache Cloudberry 2.1.0, we have introduced a new dependency `liburing` for
building PAX.
+In Apache Cloudberry 2.1.0+, we have introduced a new dependency `liburing`
for building PAX.
-* For Ubuntu 22.04
+* For Ubuntu 22.04/24.04
```bash
sudo apt install -y liburing-dev
```
-* For Ubuntu 20.04
+* For Ubuntu 20.04 (Apache Cloudberry 2.1)
```bash
sudo apt install -y git build-essential
diff --git a/versioned_docs/version-2.x/build/quick-build.md
b/versioned_docs/version-2.x/build/quick-build.md
index a2df5d47c4..e1488e82cb 100644
--- a/versioned_docs/version-2.x/build/quick-build.md
+++ b/versioned_docs/version-2.x/build/quick-build.md
@@ -10,11 +10,194 @@ In the following sections, we'll provide detailed,
step-by-step instructions for
By this, you will get an Apache Cloudberry environment with a demo cluster
ready for testing and development.
<Tabs>
-<TabItem value="rocky-linux" label="For Rocky Linux 8/9" default>
+<TabItem value="rocky-linux" label="For Rocky Linux 8/9/10" default>
-Below are the instructions for building Apache Cloudberry 2.0.0 and Apache
Cloudberry 2.1.0 from source code on Rocky Linux 8/9:
-- [For Apache Cloudberry 2.1.0](#for-apache-cloudberry-210)
-- [For Apache Cloudberry 2.0.0](#for-apache-cloudberry-200)
+Below are the instructions for building Apache Cloudberry from source code on
Rocky Linux 8/9/10:
+- [For Apache Cloudberry 2.2.0](#for-apache-cloudberry-220) (Rocky Linux
8/9/10)
+- [For Apache Cloudberry 2.1.0](#for-apache-cloudberry-210) (Rocky Linux 8/9)
+- [For Apache Cloudberry 2.0.0](#for-apache-cloudberry-200) (Rocky Linux 8/9)
+
+### For Apache Cloudberry 2.2.0
+
+```bash
+# Install sudo & git
+dnf install -y sudo git
+
+# Create and configure the gpadmin user
+sudo useradd -U -m -s /bin/bash gpadmin
+echo 'gpadmin ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/90-gpadmin
+sudo -u gpadmin sudo whoami # if the output is root, the configuration is
correct
+
+
+# Required configuration for gpadmin user
+sudo -u gpadmin bash <<'EOF'
+## Add Cloudberry environment setup to .bashrc
+echo -e '\n# Add Cloudberry entries
+if [ -f /usr/local/cloudberry-db/cloudberry-env.sh ]; then
+ source /usr/local/cloudberry-db/cloudberry-env.sh
+fi
+## US English with UTF-8 character encoding
+export LANG=en_US.UTF-8
+' >> /home/gpadmin/.bashrc
+## Set up SSH for passwordless access
+mkdir -p /home/gpadmin/.ssh
+if [ ! -f /home/gpadmin/.ssh/id_rsa ]; then
+ ssh-keygen -t rsa -b 2048 -C 'apache-cloudberry-dev' -f
/home/gpadmin/.ssh/id_rsa -N ""
+fi
+cat /home/gpadmin/.ssh/id_rsa.pub >> /home/gpadmin/.ssh/authorized_keys
+## Set proper SSH directory permissions
+chmod 700 /home/gpadmin/.ssh
+chmod 600 /home/gpadmin/.ssh/authorized_keys
+chmod 644 /home/gpadmin/.ssh/id_rsa.pub
+EOF
+
+
+# Configure system settings
+sudo tee /etc/security/limits.d/90-db-limits.conf << 'EOF'
+## Core dump file size limits for gpadmin
+gpadmin soft core unlimited
+gpadmin hard core unlimited
+## Open file limits for gpadmin
+gpadmin soft nofile 524288
+gpadmin hard nofile 524288
+## Process limits for gpadmin
+gpadmin soft nproc 131072
+gpadmin hard nproc 131072
+EOF
+
+# Verify resource limits.
+sudo -u gpadmin bash -c "ulimit -a"
+
+# Install required packages
+sudo dnf install -y apr-devel \
+ bison \
+ bzip2-devel \
+ curl \
+ cmake3 \
+ diffutils \
+ flex \
+ gcc \
+ gcc-c++ \
+ glibc-langpack-en \
+ glibc-locale-source \
+ iproute \
+ krb5-devel \
+ libcurl-devel \
+ libevent-devel \
+ libxml2-devel \
+ libuuid-devel \
+ libzstd-devel \
+ lz4-devel \
+ net-tools \
+ openldap-devel \
+ openssl-devel \
+ openssh-server \
+ pam-devel \
+ perl \
+ perl-ExtUtils-Embed \
+ perl-Test-Simple \
+ perl-Env \
+ python3-devel \
+ python3-pip \
+ python3-setuptools \
+ readline-devel \
+ rsync \
+ wget \
+ which \
+ zlib-devel
+
+# Enable additional development tools and libraries
+## For Rocky Linux 8
+sudo dnf install -y --enablerepo=devel liburing-devel libuv-devel
libyaml-devel perl-IPC-Run protobuf-devel python3-wheel python3-Cython
+## For Rocky Linux 9
+sudo dnf install -y --enablerepo=crb liburing-devel libuv-devel libyaml-devel
perl-IPC-Run protobuf-devel python3-wheel python3-Cython
+## For Rocky Linux 10
+sudo dnf install -y --enablerepo=crb liburing-devel libuv-devel libyaml-devel
perl-IPC-Run protobuf-devel python3-wheel
+
+# Build Xerces-C source code
+XERCES_LATEST_RELEASE=3.3.0
+XERCES_INSTALL_PREFIX="/usr/local/xerces-c"
+wget -nv
"https://dlcdn.apache.org//xerces/c/3/sources/xerces-c-${XERCES_LATEST_RELEASE}.tar.gz"
+echo "$(curl -sL
https://dlcdn.apache.org//xerces/c/3/sources/xerces-c-${XERCES_LATEST_RELEASE}.tar.gz.sha256)"
| sha256sum -c -
+tar xf "xerces-c-${XERCES_LATEST_RELEASE}.tar.gz"
+rm "xerces-c-${XERCES_LATEST_RELEASE}.tar.gz"
+cd xerces-c-${XERCES_LATEST_RELEASE}
+./configure --prefix="${XERCES_INSTALL_PREFIX}-${XERCES_LATEST_RELEASE}"
+make -j$(nproc)
+make check
+sudo make install
+sudo ln -s ${XERCES_INSTALL_PREFIX}-${XERCES_LATEST_RELEASE}
${XERCES_INSTALL_PREFIX}
+
+# Switch to the gpadmin user from now on
+su - gpadmin
+
+# Download Source Code (2.x branch)
+git clone https://github.com/apache/cloudberry.git ~/cloudberry
+cd ~/cloudberry
+git fetch --tags
+git checkout tags/2.2.0-incubating
+git submodule update --init --recursive
+
+# Prepare the build environment for Apache Cloudberry
+sudo rm -rf /usr/local/cloudberry-db
+sudo chmod a+w /usr/local
+mkdir -p /usr/local/cloudberry-db/lib
+sudo cp -v /usr/local/xerces-c/lib/libxerces-c.so \
+ /usr/local/xerces-c/lib/libxerces-c-3.*.so \
+ /usr/local/cloudberry-db/lib
+sudo chown -R gpadmin:gpadmin /usr/local/cloudberry-db
+
+# Pre-stage the Python packages for `--with-pythonsrc-ext` before building
+cd ~/cloudberry
+make -C gpMgmt/bin download-python-deps
+
+# Run configure
+export LD_LIBRARY_PATH=/usr/local/cloudberry-db/lib:${LD_LIBRARY_PATH:-""}
+./configure --prefix=/usr/local/cloudberry-db \
+ --disable-external-fts \
+ --enable-gpcloud \
+ --enable-ic-proxy \
+ --enable-mapreduce \
+ --enable-orafce \
+ --enable-orca \
+ --enable-pax \
+ --disable-pxf \
+ --enable-tap-tests \
+ --with-diskquota \
+ --with-gp-stats-collector \
+ --with-gssapi \
+ --with-ldap \
+ --with-libxml \
+ --with-lz4 \
+ --with-pam \
+ --with-perl \
+ --with-pgport=5432 \
+ --with-python \
+ --with-pythonsrc-ext \
+ --with-ssl=openssl \
+ --with-uuid=e2fs \
+ --with-yezzey \
+ --with-includes=/usr/local/xerces-c/include \
+ --with-libraries=/usr/local/cloudberry-db/lib
+
+# Build and install Cloudberry and its contrib modules
+make -j$(nproc) -C ~/cloudberry
+make -j$(nproc) -C ~/cloudberry/contrib
+make install -C ~/cloudberry
+make install -C ~/cloudberry/contrib
+
+# Verify the installation
+/usr/local/cloudberry-db/bin/postgres --gp-version
+/usr/local/cloudberry-db/bin/postgres --version
+ldd /usr/local/cloudberry-db/bin/postgres
+
+# Set up a Cloudberry demo cluster
+source /usr/local/cloudberry-db/cloudberry-env.sh
+make create-demo-cluster -C ~/cloudberry
+source ~/cloudberry/gpAux/gpdemo/gpdemo-env.sh
+psql -P pager=off template1 -c 'SELECT * from gp_segment_configuration'
+psql template1 -c 'SELECT version()'
+```
### For Apache Cloudberry 2.1.0
@@ -370,12 +553,174 @@ psql -P pager=off template1 -c 'SELECT * from
gp_segment_configuration'
psql template1 -c 'SELECT version()'
```
</TabItem>
-<TabItem value="ubuntu" label="For Ubuntu 20.04/22.04">
+<TabItem value="ubuntu" label="For Ubuntu 20.04/22.04/24.04">
+
+Below are the instructions for building Apache Cloudberry from source code on
Ubuntu 20.04/22.04/24.04:
+
+- [For Apache Cloudberry 2.2.0](#for-apache-cloudberry-220-1) (Ubuntu
22.04/24.04)
+- [For Apache Cloudberry 2.1.0](#for-apache-cloudberry-210-1) (Ubuntu
20.04/22.04)
+- [For Apache Cloudberry 2.0.0](#for-apache-cloudberry-200-1) (Ubuntu
20.04/22.04)
+
+### For Apache Cloudberry 2.2.0
+
+```bash
+# Install sudo & git
+apt update && apt install -y sudo git
+
+# Create and configure the gpadmin user
+sudo useradd -U -m -s /bin/bash gpadmin
+echo 'gpadmin ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/90-gpadmin
+sudo -u gpadmin sudo whoami # if the output is root, the configuration is
correct
+
+# Required configuration
+sudo -u gpadmin bash <<'EOF'
+## Add Cloudberry environment setup to .bashrc
+echo -e '\n# Add Cloudberry entries
+if [ -f /usr/local/cloudberry-db/cloudberry-env.sh ]; then
+ source /usr/local/cloudberry-db/cloudberry-env.sh
+fi
+## US English with UTF-8 character encoding
+export LANG=en_US.UTF-8
+' >> /home/gpadmin/.bashrc
+## Set up SSH for passwordless access
+mkdir -p /home/gpadmin/.ssh
+if [ ! -f /home/gpadmin/.ssh/id_rsa ]; then
+ ssh-keygen -t rsa -b 2048 -C 'apache-cloudberry-dev' -f
/home/gpadmin/.ssh/id_rsa -N ""
+fi
+cat /home/gpadmin/.ssh/id_rsa.pub >> /home/gpadmin/.ssh/authorized_keys
+## Set proper SSH directory permissions
+chmod 700 /home/gpadmin/.ssh
+chmod 600 /home/gpadmin/.ssh/authorized_keys
+chmod 644 /home/gpadmin/.ssh/id_rsa.pub
+EOF
+
+# Configure system settings
+sudo tee /etc/security/limits.d/90-db-limits.conf << 'EOF'
+## Core dump file size limits for gpadmin
+gpadmin soft core unlimited
+gpadmin hard core unlimited
+## Open file limits for gpadmin
+gpadmin soft nofile 524288
+gpadmin hard nofile 524288
+## Process limits for gpadmin
+gpadmin soft nproc 131072
+gpadmin hard nproc 131072
+EOF
+
+# Verify resource limits
+sudo -u gpadmin bash -c "ulimit -a"
+
+# Install basic system packages
+sudo apt install -y bison \
+ bzip2 \
+ cmake \
+ curl \
+ flex \
+ gcc \
+ g++ \
+ iproute2 \
+ iputils-ping \
+ language-pack-en \
+ locales \
+ libapr1-dev \
+ libbz2-dev \
+ libcurl4-gnutls-dev \
+ libevent-dev \
+ libkrb5-dev \
+ libipc-run-perl \
+ libldap2-dev \
+ libpam0g-dev \
+ libprotobuf-dev \
+ libreadline-dev \
+ libssl-dev \
+ libuv1-dev \
+ liburing-dev \
+ liblz4-dev \
+ libxerces-c-dev \
+ libxml2-dev \
+ libyaml-dev \
+ libzstd-dev \
+ libperl-dev \
+ make \
+ pkg-config \
+ protobuf-compiler \
+ python3-dev \
+ python3-pip \
+ python3-setuptools \
+ python3-wheel \
+ rsync
+
+# Use the gpadmin user from now on
+sudo su - gpadmin
+
+# Clone the Apache Cloudberry repository (2.x branch)
+git clone https://github.com/apache/cloudberry.git ~/cloudberry
+cd ~/cloudberry
+git fetch --tags
+git checkout tags/2.2.0-incubating
+git submodule update --init --recursive
-Below are the instructions for building Apache Cloudberry 2.0.0 and Apache
Cloudberry 2.1.0 from source code on Ubuntu 20.04/22.04:
+# Prepare the build environment for Apache Cloudberry
+sudo rm -rf /usr/local/cloudberry-db
+sudo chmod a+w /usr/local
+mkdir -p /usr/local/cloudberry-db
+sudo chown -R gpadmin:gpadmin /usr/local/cloudberry-db
-- [For Apache Cloudberry 2.1.0](#for-apache-cloudberry-210-1)
-- [For Apache Cloudberry 2.0.0](#for-apache-cloudberry-200-1)
+# Pre-stage the Python packages for `--with-pythonsrc-ext` before building
+cd ~/cloudberry
+# Building PyYAML requires Cython earlier than 3.0
+# For Ubuntu 22.04, cython3 is 0.29.x
+sudo apt install -y cython3
+# For Ubuntu 24.04, cython3 is 3.x, so use cython3-legacy instead
+sudo apt install -y cython3-legacy
+# For Ubuntu 22.04 & 24.04
+make -C gpMgmt/bin download-python-deps
+
+# Run configure
+./configure --prefix=/usr/local/cloudberry-db \
+ --disable-external-fts \
+ --enable-gpcloud \
+ --enable-ic-proxy \
+ --enable-mapreduce \
+ --enable-orafce \
+ --enable-orca \
+ --enable-pax \
+ --disable-pxf \
+ --enable-tap-tests \
+ --with-diskquota \
+ --with-gp-stats-collector \
+ --with-gssapi \
+ --with-ldap \
+ --with-libxml \
+ --with-lz4 \
+ --with-pam \
+ --with-perl \
+ --with-pgport=5432 \
+ --with-python \
+ --with-pythonsrc-ext \
+ --with-ssl=openssl \
+ --with-uuid=e2fs \
+ --with-yezzey \
+ --with-includes=/usr/include/xercesc
+
+# Build and install Cloudberry and its contrib modules
+make -j$(nproc) -C ~/cloudberry
+make -j$(nproc) -C ~/cloudberry/contrib
+make install -C ~/cloudberry
+make install -C ~/cloudberry/contrib
+
+# Verify the installation
+/usr/local/cloudberry-db/bin/postgres --gp-version
+/usr/local/cloudberry-db/bin/postgres --version
+ldd /usr/local/cloudberry-db/bin/postgres
+
+# Set up a Cloudberry demo cluster
+source /usr/local/cloudberry-db/cloudberry-env.sh
+make create-demo-cluster -C ~/cloudberry
+source ~/cloudberry/gpAux/gpdemo/gpdemo-env.sh
+psql -P pager=off template1 -c 'SELECT * from gp_segment_configuration'
+psql template1 -c 'SELECT version()'
+```
### For Apache Cloudberry 2.1.0
diff --git a/versioned_docs/version-2.x/build/set-demo-cluster.md
b/versioned_docs/version-2.x/build/set-demo-cluster.md
index f5faf160b2..cb79311605 100644
--- a/versioned_docs/version-2.x/build/set-demo-cluster.md
+++ b/versioned_docs/version-2.x/build/set-demo-cluster.md
@@ -37,11 +37,11 @@ Please note that the `greenplum_path.sh` has changed to
`cloudberry-env.sh` sin
Load Cloudberry environment variables that set up paths for binaries,
libraries, and other essential components:
```bash
+# For Apache Cloudberry 2.1.0+
+source /usr/local/cloudberry-db/cloudberry-env.sh
+
# For Apache Cloudberry 2.0.0
source /usr/local/cloudberry-db/greenplum_path.sh
-
-# For Apache Cloudberry 2.1.0
-source /usr/local/cloudberry-db/cloudberry-env.sh
```
## Create development cluster
diff --git a/versioned_docs/version-2.x/deployment/platform-requirements.md
b/versioned_docs/version-2.x/deployment/platform-requirements.md
index 0bb94e5460..dcd1291ff8 100644
--- a/versioned_docs/version-2.x/deployment/platform-requirements.md
+++ b/versioned_docs/version-2.x/deployment/platform-requirements.md
@@ -123,9 +123,9 @@ mount /dev/data/data2 /data2/
Apache Cloudberry supports the following operating systems:
-- Rocky Linux 8/9
-- Ubuntu 22.04
-- RHEL 8/9 and compatible distributions (Oracle Linux, AlmaLinux, etc.)
+- Rocky Linux 8/9/10 (**Rocky Linux 10 is supported starting from Cloudberry
2.2**)
+- Ubuntu 22.04/24.04 (**Ubuntu 24.04 is supported starting from Cloudberry
2.2**)
+- RHEL 8/9/10 and compatible distributions (Oracle Linux, AlmaLinux, etc.)
### Software dependencies
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]