habe ich versucht.
dann hat er die Extension nicht gefunden. Ich bekomme die Fehlermeldung:
2021-02-25 20:06:19.696 CET [1313179] FATAL: could not access file “pg_stat_statements”: No such file or directory
ich habe die Sourcen heruntergeladen, compiliert und die Bins erzeugt (make).
im contrib Verzeichnis liegt pg_stat_statements
Bin mir aber nicht sicher, ob er denn auch dort suchst, ob nur im ./share/extension Verzeichnis.
oder muss ich dann etwas (z.B. als Präfix) angeben, damit er im contrib Verzeichnis sucht.
Leider gibt die Fehlermeldung nicht her, wo er was sucht …
Also wenn ich das contrib Paket über die rpms installiere, landen die “.so” Dateien unter /usr/pgsql-12/lib und die dazugehörigen .sql Dateien (die für ein CREATE EXTENSION benötigt werden) unter /usr/pgsql-12/share/extension
Über pg_config kannst Du Dir anzeigen lassen welche Verzeichnisse Deine Installation verwendet (LIBDIR und SHAREDIR sind dafür zuständig wenn ich das richtig im Kopf habe)
in /opt/postgres/12.5/share/extension habe ich nur folge drei Dateien
-rw-r–r-- 1 postgres postgres 310 Feb 19 21:01 plpgsql–1.0.sql
-rw-r–r-- 1 postgres postgres 179 Feb 19 21:01 plpgsql.control
-rw-r–r-- 1 postgres postgres 370 Feb 19 21:01 plpgsql–unpackaged–1.0.sql
in /opt/postgres/12.5/contrib habe ich ein Unterverzeichnis pg_stat_statements, dass aber weitesgehnd leer ist:
$ ls -lR pg_stat_statements/
pg_stat_statements/:
total 12
drwxr-xr-x 2 postgres postgres 4096 Feb 19 20:42 expected
lrwxrwxrwx 1 postgres postgres 79 Feb 19 20:42 Makefile → /opt/postgres/12.5/software/postgresql-12.5/contrib/pg_stat_statements/Makefile
drwxr-xr-x 2 postgres postgres 4096 Feb 19 20:42 sql
pg_stat_statements/expected:
total 0
pg_stat_statements/sql:
total 0
pg_stat_statements.so müsste bei Deiner Konfiguration in /opt/postgres/12.5/lib liegen, damit es funktioniert.
Unabhängig davon: ich finde die Idee die Minor Version im Namen der Verzeichnisse zu verwenden eher schlecht. Wenn Du 12.6 installieren willst, dann musst Du die komplette Verzeichnisstruktur neu aufbauen. Typischerweise nimmt man nur die Major-Version in den Verzeichnisnamen mit auf. Besser wäre also eine Installation nach /opt/postgres/12/
a) Die Server, auf die installiere, haben alle keine Verbindung zum Internet
b) rpm installieren immer an eine feste Position (im FS), mit make kann ich die Bins an die Stelle legen, die mir passt
c) da es bisher noch keinen wirklichen Grund gab, rpm vorzuziehen, haben ich es so gemacht wie auch bei mysql und mariadb
Oder gibt es neben diesem noch andere Vorteile von rpm ?
Der Server braucht keine Verbindung zum Internet. Genau wie die Sourcen, kannst Du die ja vorher manuell herunterladen und auf den Server kopieren.
Die RPMs halten sich üblicherweise an das empfohlene Dateisystemlayout der Distribution. Dadurch findet man sich überall zurecht, und muss nicht auf jedem System wieder suchen “wie es dort gemacht wurde”. Auch ist die Installation der vierteljährlichen Bugfix Versionen deutlich einfacher über RPMs