Die Konvention für PostgreSQL-Pakete für Debian oder Debian-Derivate wie Ubuntu ist die Verwendung von /var/run/postgresql
als Verzeichnis für Unix-Domain-Sockets. Andererseits besteht die Konvention für selbst kompilierte Postgres-Clientbibliotheken darin, /tmp
zu verwenden , sofern nicht anders selbst konfiguriert.
Die übliche Ursache für diese Diskrepanz zwischen beiden ist also eine Mischung aus selbst kompiliertem clientseitigem Zeug mit vorkompilierten serverseitigen Paketen (selbst wenn Client und Server auf demselben Computer installiert sind, Client-Seite und Server-Seite sind es immer noch unterschiedlich und kann nicht synchron sein).
Soft-Linking von /tmp
zu diesem Verzeichnis wie vom Fragesteller vorgeschlagen funktioniert, außer dass der Link bei jedem Neustart verloren geht, weil im Allgemeinen /tmp
wird beim Neustart geleert.
Eine bessere Option wäre das Hinzufügen als Eintrag in database.yml
:
-
entweder
host: /tmp
wenn der echte Socket-Pfad/tmp
ist (selbst kompilierter Server, gepackter Client) -
oder
host: /var/run/postgresql
wenn der echte Socket-Pfad/var/run/postgresql/
(gepackter Server, selbst kompilierter Client).
Wenn der Wert im Hostfeld mit einem Schrägstrich beginnt, weiß die Postgres-Bibliothek, dass es sich um den Speicherort eines Verzeichnisses für lokale Sockets und nicht um einen Hostnamen handelt. Der Dateiname im Verzeichnis .s.PGSQL.portnumber
wird generiert und darf nicht angegeben werden, nur das Verzeichnis.
Eine andere Möglichkeit besteht darin, die selbstkompilierten Softwarepakete so nah wie möglich an Debian zu konfigurieren und dabei die Standardeinstellungen zu überschreiben.