Installing pgcopydb =================== Several distributions are available for pgcopydb. debian packages --------------- Binary packages for debian and derivatives (ubuntu) are available from `apt.postgresql.org`__ repository, install by following the linked documentation and then:: $ sudo apt-get install pgcopydb __ https://wiki.postgresql.org/wiki/Apt RPM packages ------------ The Postgres community repository for RPM packages is `yum.postgresql.org`__ and includes binary packages for pgcopydb. The way packages are built for RPM based systems means that the user needs to choose which version of Postgres pgcopydb was built with. In practice, this doesn't have much importance, because ``libpq`` is meant to be compatible with many different Postgres server versions. After following the instructions for installing the repository, in this example in a Docker image for Rocky Linux (``docker run --rm -it rockylinux:9``), then we get the following:: # dnf search --all --quiet pgcopydb ======================== Name & Description & URL Matched: pgcopydb ======================== pgcopydb.x86_64 : Automate pg_dump | pg_restore between two running Postgres servers pgcopydb_11.x86_64 : Automate pg_dump | pg_restore between two running Postgres servers pgcopydb_12.x86_64 : Automate pg_dump | pg_restore between two running Postgres servers pgcopydb_13.x86_64 : Automate pg_dump | pg_restore between two running Postgres servers pgcopydb_14.x86_64 : Automate pg_dump | pg_restore between two running Postgres servers pgcopydb_15.x86_64 : Automate pg_dump | pg_restore between two running Postgres servers __ https://yum.postgresql.org Docker Images ------------- Docker images are maintained for each tagged release at dockerhub, and also built from the CI/CD integration on GitHub at each commit to the `main` branch. The DockerHub `dimitri/pgcopydb`__ repository is where the tagged releases are made available. The image uses the Postgres version currently in debian stable. To use this docker image:: $ docker run --rm -it dimitri/pgcopydb:v0.18 pgcopydb --version __ https://hub.docker.com/r/dimitri/pgcopydb#! Or you can use the CI/CD integration that publishes packages from the main branch to the GitHub docker repository:: $ docker pull ghcr.io/dimitri/pgcopydb:latest $ docker run --rm -it ghcr.io/dimitri/pgcopydb:latest pgcopydb --version $ docker run --rm -it ghcr.io/dimitri/pgcopydb:latest pgcopydb --help Build from sources ------------------ Building from source requires a list of build-dependencies that's comparable to that of Postgres itself. The pgcopydb source code is written in C and the build process uses a GNU Makefile. See our main `Dockerfile`__ for a complete recipe to build pgcopydb as a debian package when using a debian environment. __ https://github.com/dimitri/pgcopydb/blob/main/Dockerfile In particular, the following build dependencies are required to build pgcopydb. The list is long, because pgcopydb requires a lot of the same packages as Postgres itself: :: $ apt-get install -y --no-install-recommends \ build-essential \ autotools-dev \ libedit-dev \ libgc-dev \ libpam0g-dev \ libreadline-dev \ libselinux1-dev \ libxslt1-dev \ libssl-dev \ libkrb5-dev \ zlib1g-dev \ liblz4-dev \ libpq5 \ libpq-dev \ libzstd-dev \ postgresql-server-dev-all \ postgresql-common \ postgresql \ python3-sphinx Then the build process is pretty simple, in its simplest form you can just use ``make clean install``. If you want to be more fancy, you can also consider:: $ make -s clean $ make -s -j12 install Once you made it this far, it is a good idea to check our `Contribution Guide`__. __ https://github.com/dimitri/pgcopydb/blob/main/CONTRIBUTING.md