2014-12-30 4 views
56

Ich installierte Postgresql 9.4.0 installiert auf meinem Mac (10.10.1/Yosemite) mit Homebrew. Es funktioniert nicht.Homebrew postgres gebrochen

Ich habe den Softlink zu /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist in ~/Library/LaunchAgents erstellt.

Wenn ich versuche, manuell Postgres lade ich die Nachricht erhalten, dass die „Operation im Gange ist“

> launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 
/usr/local/Cellar/postgresql/9.4.0/homebrew.mxcl.postgresql.plist: Operation already in progress 

jedoch Postgres nicht aktiv zu sein scheint.

> ps auxw | grep post 
billmcn   670 0.0 0.0 2424272 452 s000 R+ 10:12PM 0:00.01 grep post 

und ich kann keine Verbindung mit dem Befehlszeilenclient herstellen.

> psql 
psql: could not connect to server: No such file or directory 
    Is the server running locally and accepting 
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"? 

Mein Wissen habe ich versucht, alle auf otherStackoverflow Themen vorgeschlagen behebt dieses Problem zu diskutieren. Genauer gesagt:

  • Ich habe Postgres und die begleitenden Ruby Gem deinstalliert und neu installiert. Es gibt keine postgres 8.0 Version auf meinem Rechner.
  • Ich habe überprüft, dass das Psql-Client-Programm ist die Version 9.4.0 von Homebrew und nicht ein Mac-System binär installiert.
  • Ich habe überprüft, dass die /usr/local/var/postgres/postmaster.pid nicht existiert.
  • Ich habe die Maschine neu gestartet.

Ich hatte Homebrew Postgres auf dieser Maschine früher arbeiten. Ich denke, was es kaputt gemacht hat, ist von Version 8 auf Version 9 zu aktualisieren, aber ich bin mir nicht sicher.

Ich habe keine Datenbanken, die ich beibehalten muss. Ich bin bereit, mit postgres sauber zu beginnen; Ich muss es jetzt nur zur Arbeit bringen. Irgendwelche Ideen?


Das Problem scheint Berechtigungen für das Verzeichnis/usr/local/var/postgres zu sein. So sah mein var-Verzeichnis aus, wenn die Dinge nicht funktionierten.

ll /usr/local/var/ 
drwxr-xr-x 3 billmcn admin 102 Dec 20 12:44 cache 
drwxr--r-- 2 root  admin 68 Dec 29 21:37 postgres 

(whoami = "billmcn")

Ich löschte/usr/local/var/Postgres, deinstalliert und neu installiert Postgres, und jetzt sieht es so aus.

Nicht sicher, wie es in diesen Zustand kam, weil ich mich nicht erinnern kann, mit den Berechtigungen auf diesem Verzeichnis zu fuzzing, aber egal. Es funktioniert jetzt.

Antwort

92

Ich hatte das gleiche Problem beim Installieren von Postgres mit Homebrew auf einem frisch installierten Yosemite.

Zunächst einmal mein Gebräu Config sieht wie folgt aus:

HOMEBREW_VERSION: 0.9.5 
ORIGIN: https://github.com/Homebrew/homebrew 
HEAD: 9f6926265f8e4be7cc80dfe9042f2cd3c1e8dc9e 
Last commit: 64 minutes ago 
HOMEBREW_PREFIX: /usr/local 
HOMEBREW_CELLAR: /usr/local/Cellar 
CPU: quad-core 64-bit sandybridge 
OS X: 10.10.1-x86_64 
Xcode: 6.1.1 
Clang: 6.0 build 600 
X11: N/A 
System Ruby: 2.0.0-481 
Perl: /usr/bin/perl 
Python: /usr/bin/python 
Ruby: ~/.rvm/rubies/ruby-2.1.1/bin/ruby 

Das erste, was mir auffiel, war, dass ich keine Schreibberechtigung für /usr/local/var/postgres hatte.Dies wurde leicht geändert Ausgabe sudo chown -R `whoami` /usr/local/var/postgres dann neu installiert ich postgresql und tat

cat /usr/local/var/postgres/server.log

die ergab:

postgres cannot access the server configuration file "/usr/local/var/postgres/postgresql.conf": No such file or directory

So entfernte ich das Verzeichnis /usr/local/var/postgres und erteilt den Befehl, um die Datenbank zu initialisieren.

initdb -D /usr/local/var/postgres/

Dies schien den Trick und Postgres gut läuft getan zu haben.

+0

ich diese Schritte befolgt, sondern auf den initdb Befehl ausführen, erhalte ich: „konnte nicht Verzeichnis zugreifen "/ usr/local/var/postgres": Permission abgelehnt. " Auch dies ist nach den Schritten, die Sie aufgelistet haben, einschließlich des Löschens dieses Verzeichnisses direkt vor dem Ausführen von initd. –

+0

Das System liegt normalerweise nicht auf diesen Dingen. Wenn Sie einen "ls -l/usr/local/var | grep postgres" erstellen, wird Ihr Benutzer als Besitzer des Verzeichnisses festgelegt? –

+0

Ich habe einfach aufgegeben und bin zu Macports gewechselt, bevor ich deinen Kommentar gesehen habe. Und es funktioniert jetzt gut. –

38

Ich hatte das gleiche Problem. Das Hauptproblem hierbei ist, dass der initdb-Schritt der Installation das Verzeichnis mit Stammeigentum statt als Benutzer auf einem Mac erstellt. Um dieses Problem zu lösen:

Erstellen Sie das Datenverzeichnis vor dem Ausführen initdb und Berechtigungen von 0700

rm -rf /usr/local/var/postgres # in case this is not your first try 
mkdir /usr/local/var/postgres 
chmod 0700 /usr/local/var/postgres 

Dann initdb laufen und es wird die Berechtigungen des Datenverzeichnisses respektieren.

initdb -D /usr/local/var/postgres 

Für grinst und kichert, erstellen Sie einen Test db nach dem Benutzer mit dem Namen:

createdb `whoami` 

Login-Test:

psql 
+0

Dies ist auch eine gute Antwort. –

+0

Ich gehe zu 'rm -rf/usr/local/var/postgres' und oder' sudo rm -rf/usr/local/var/postgres' und beide löschen scheinbar das postgres-Verzeichnis, dann gehe ich manuell meinen eigenen neuen hinzufügen Verzeichnis und ich bekomme 'mkdir:/usr/local/var/postgres: Datei existiert'!? 'psql' sagt immer noch' no solche Datei oder Verzeichnis'. Kontext auf meine Situation: http: //stackoverflow.com/questions/31088325/how-can-i-migrate-postgres-9-3-5-to-4-4-4-nach-Deleting-the-9-3 -5-oldbindir – jbk

7

Bitte beachten Sie, dass sie ein Thread auf Homebrew des Github ist zu tun mit dieser Ausgabe: https://github.com/Homebrew/homebrew/issues/35240


Ich hatte ein ähnliches Problem. James Antwort hat mir geholfen, es zu lösen. Aber ich stieß dann auf das Problem, das jbk erwähnt (nach dem Löschen von/usr/local/var/postgres wurde es immer wieder neu erstellt).

Das Problem ist, dass, wenn Sie den Symlink erstellt haben:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents 

und startete den Prozess:

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 

Sie sollten es zuerst entladen:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 

vor dem Ausführen von James Befehle.

rm -rf /usr/local/var/postgres # in case this is not your first try 
mkdir /usr/local/var/postgres 
chmod 0700 /usr/local/var/postgres 

Darüber hinaus, wenn, wie ich, Sie ein Admin-Benutzer haben die Verwaltung von Homebrew und einen normalen Benutzer, die PGsl für Entwicklungszwecke verwenden werden, sollte James Befehl als Superuser ausgeführt werden:

sudo -s 

und das Eigentum über das postgres Verzeichnis sollte auf Ihrem dev Benutzer angegeben werden:

chown my-dev-user /usr/local/var/postgres 

der folgende Befehl, wie der Entwickler Benutzer ausführen, sollten dann füllen richtig das Verzeichnis:

createdb `whoami` 

Running:

psql -l 

sollten Sie die Tabellen und Benutzerberechtigungen in postgre nach einer solchen Manipulationen.

Hoffe, das hilft.

+1

Das war unglaublich! Danke Cedric. Ich hatte das gleiche Problem mit Berechtigungen. – thesayhey

12

Nach dem Versuch, postgresql mit Homebrew zu installieren, habe ich dies:

Warning: postgresql-9.5.2 already installed, it's just not linked 

Also habe ich versucht:

brew link postgresql 

Und habe diesen Fehler:

Linking /usr/local/Cellar/postgresql/9.5.2... 
Error: Could not symlink share/man/man3/SPI_connect.3 
/usr/local/share/man/man3 is not writable. 

Es schien zu sein, ein Schreibrecht, also habe ich:

sudo chown -R `whoami` /usr/local/share/man/ 

Es den Trick, weil dann ich (ohne Fehler) tun konnte:

brew link postgresql 
+0

Arbeitete für mich. Vielen Dank! –

+0

Gute Arbeit! hat für mich gearbeitet ... – IamStalker

0

prüfen @leo_chaz_maltrait für Fehler der Fehler Could not symlink share/man/man3/SPI_connect.3 Ein weiterer Fehler Fixierung, die auftauchen könnte, ist:

Error: Could not symlink lib/pkgconfig/libecpg.pc

sudo chown -R `whoami` /usr/local/lib/pkgconfig 

brew link postgresql