Konventionen för PostgreSQL paketerad för Debian- eller Debian-derivat som Ubuntu är att använda /var/run/postgresql som katalog för Unix-domänsockets. Å andra sidan är konventionen för självkompilerade postgres-klientlibs att använda /tmp , såvida du inte har konfigurerat något annat.
Så den vanliga grundorsaken till denna oöverensstämmelse mellan båda är en blandning av självkompilerade klient-side-grejer med förkompilerade server-side-paket (även om klient och server är installerade på samma maskin, klient- och server-sida är fortfarande distinkt och kan vara osynkroniserad).
Mjuklänkning från /tmp till denna katalog som föreslås av frågeställaren fungerar förutom att länken kommer att gå förlorad vid varje omstart, eftersom /tmp i allmänhet töms vid omstart.
Ett bättre alternativ skulle vara att lägga till som en post i database.yml :
-
antingen
host: /tmpom den verkliga sockelsökvägen är/tmp(självkompilerad server, paketerad klient) -
eller
host: /var/run/postgresqlom den verkliga sockelsökvägen/var/run/postgresql/(paketerad server, egenkompilerad klient).
När värdet i värdfältet börjar med ett snedstreck, vet postgres-biblioteket att det är platsen för en katalog för lokala uttag snarare än ett värdnamn. Filnamnet i katalogen .s.PGSQL.portnumber genereras och får inte anges, bara katalogen.
En annan möjlighet är att konfigurera de egenkompilerade programvarupaketen så nära Debian som möjligt, och åsidosätta standardinställningarna som de gör.