From 36d63f499dac650b8a1210966d13e5184ff03753 Mon Sep 17 00:00:00 2001 From: Ian Barwick Date: Mon, 11 Sep 2017 11:00:48 +0900 Subject: [PATCH] Add further documentation files --- CONTRIBUTING.md | 29 +++++++++++ PACKAGES.md | 127 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 CONTRIBUTING.md create mode 100644 PACKAGES.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..bfad7272 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,29 @@ +License and Contributions +========================= + +`repmgr` is licensed under the GPL v3. All of its code and documentation is +Copyright 2010-2017, 2ndQuadrant Limited. See the files COPYRIGHT and LICENSE for +details. + +The development of repmgr has primarily been sponsored by 2ndQuadrant customers. + +Additional work has been sponsored by the 4CaaST project for cloud computing, +which has received funding from the European Union's Seventh Framework Programme +(FP7/2007-2013) under grant agreement 258862. + +Contributions to `repmgr` are welcome, and will be listed in the file `CREDITS`. +2ndQuadrant Limited requires that any contributions provide a copyright +assignment and a disclaimer of any work-for-hire ownership claims from the +employer of the developer. This lets us make sure that all of the repmgr +distribution remains free code. Please contact info@2ndQuadrant.com for a +copy of the relevant Copyright Assignment Form. + +Code style +---------- + +Code in repmgr is formatted to a consistent style using the following command: + + astyle --style=ansi --indent=tab --suffix=none *.c *.h + +Contributors should reformat their code similarly before submitting code to +the project, in order to minimize merge conflicts with other work. \ No newline at end of file diff --git a/PACKAGES.md b/PACKAGES.md new file mode 100644 index 00000000..bcb41ba2 --- /dev/null +++ b/PACKAGES.md @@ -0,0 +1,127 @@ +Packaging +========= + +Notes on RedHat Linux, Fedora, and CentOS Builds +------------------------------------------------ + +The RPM packages of PostgreSQL put `pg_config` into the `postgresql-devel` +package, not the main server one. And if you have a RPM install of PostgreSQL +9.0, the entire PostgreSQL binary directory will not be in your PATH by default +either. Individual utilities are made available via the `alternatives` +mechanism, but not all commands will be wrapped that way. The files installed +by repmgr will certainly not be in the default PATH for the postgres user +on such a system. They will instead be in /usr/pgsql-9.0/bin/ on this +type of system. + +When building repmgr against a RPM packaged build, you may discover that some +development packages are needed as well. The following build errors can +occur: + + /usr/bin/ld: cannot find -lxslt + /usr/bin/ld: cannot find -lpam + +Install the following packages to correct those: + + + yum install libxslt-devel + yum install pam-devel + +If building repmgr as a regular user, then doing the install into the system +directories using sudo, the syntax is hard. `pg_config` won't be in root's +path either. The following recipe should work: + + sudo PATH="/usr/pgsql-9.0/bin:$PATH" make USE_PGXS=1 install + + +Issues with 32 and 64 bit RPMs +------------------------------ + +If when building, you receive a series of errors of this form: + + /usr/bin/ld: skipping incompatible /usr/pgsql-9.0/lib/libpq.so when searching for -lpq + +This is likely because you have both the 32 and 64 bit versions of the +`postgresql90-devel` package installed. You can check that like this: + + rpm -qa --queryformat '%{NAME}\t%{ARCH}\n' | grep postgresql90-devel + +And if two packages appear, one for i386 and one for x86_64, that's not supposed +to be allowed. + +This can happen when using the PGDG repo to install that package; +here is an example sessions demonstrating the problem case appearing: + + + # yum install postgresql-devel + .. + Setting up Install Process + Resolving Dependencies + --> Running transaction check + ---> Package postgresql90-devel.i386 0:9.0.2-2PGDG.rhel5 set to be updated + ---> Package postgresql90-devel.x86_64 0:9.0.2-2PGDG.rhel5 set to be updated + --> Finished Dependency Resolution + + Dependencies Resolved + + ========================================================================= + Package Arch Version Repository Size + ========================================================================= + Installing: + postgresql90-devel i386 9.0.2-2PGDG.rhel5 pgdg90 1.5 M + postgresql90-devel x86_64 9.0.2-2PGDG.rhel5 pgdg90 1.6 M + + +Note how both the i386 and x86_64 platform architectures are selected for +installation. Your main PostgreSQL package will only be compatible with one of +those, and if the repmgr build finds the wrong postgresql90-devel these +"skipping incompatible" messages appear. + +In this case, you can temporarily remove both packages, then just install the +correct one for your architecture. Example: + + rpm -e postgresql90-devel --allmatches + yum install postgresql90-devel-9.0.2-2PGDG.rhel5.x86_64 + +Instead just deleting the package from the wrong platform might not leave behind +the correct files, due to the way in which these accidentally happen to interact. +If you already tried to build repmgr before doing this, you'll need to do: + + make USE_PGXS=1 clean + +to get rid of leftover files from the wrong architecture. + +Notes on Ubuntu, Debian or other Debian-based Builds +---------------------------------------------------- + +The Debian packages of PostgreSQL put `pg_config` into the development package +called `postgresql-server-dev-$version`. + +When building repmgr against a Debian packages build, you may discover that some +development packages are needed as well. You will need the following development +packages installed: + + sudo apt-get install libxslt-dev libxml2-dev libpam-dev libedit-dev + +If you're using Debian packages for PostgreSQL and are building repmgr with the +USE_PGXS option you also need to install the corresponding development package: + + sudo apt-get install postgresql-server-dev-9.0 + +If you build and install repmgr manually it will not be on the system path. The +binaries will be installed in /usr/lib/postgresql/$version/bin/ which is not on +the default path. The reason behind this is that Ubuntu/Debian systems manage +multiple installed versions of PostgreSQL on the same system through a wrapper +called pg_wrapper and repmgr is not (yet) known to this wrapper. + +You can solve this in many different ways, the most Debian like is to make an +alternate for repmgr and repmgrd: + + sudo update-alternatives --install /usr/bin/repmgr repmgr /usr/lib/postgresql/9.0/bin/repmgr 10 + sudo update-alternatives --install /usr/bin/repmgrd repmgrd /usr/lib/postgresql/9.0/bin/repmgrd 10 + +You can also make a deb package of repmgr using: + + make USE_PGXS=1 deb + +This will build a Debian package one level up from where you build, normally the +same directory that you have your repmgr/ directory in.