user3757753
user3757753

Reputation: 51

Custom postgres shared_preload_libraries dir - how to configure?

I am trying to install pg_cron extension in postgres in alpine linux docker. When running

CREATE EXTENSION pg_cron; 

in psql console I get: ERROR: could not open extension control file "/usr/local/share/postgresql/extension/pg_cron.control": No such file or directory

The problem is that the actual pg_cron.control is not under /usr/local/share/... but under /usr/share/.. Where in postgresql.conf I can define the path?

Steps taken:

docker run --name postgres-0 -e POSTGRES_PASSWORD=Password1 -p 5432:5432 -d postgres:10-alpine

docker exec -it postgres-0 /bin/bash
apk update
apk add postgresql-pg_cron --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community

cat <<EOT >> /var/lib/postgresql/data/postgresql.conf
shared_preload_libraries='pg_cron'
EOT

pg_ctl reload

Upvotes: 2

Views: 5678

Answers (1)

Ian Barwick
Ian Barwick

Reputation: 141

PostgreSQL expects to find the extension files in the SHAREDIR/extension/ directory associated with the installation (execute pg_config --sharedir to confirm the value of SHAREDIR for your particular installation).

There is however no facility for specifying an alternative location for extension files; it looks like something is wrong with the packaging.

I'm not familiar with Alpine Linux, but a quick Google search brings up e.g. this issue: Postgres extensions are installed into incorrect path and the suggested solution is to use a bare Alpine Linux image and install PostgreSQL via the apk command, so you might want to try that.

Upvotes: 3

Related Questions