Homebrew postgres broken
我使用自制软件在Mac(10.10.1/约塞米蒂)上安装了PostgreSQL 9.4.0。它不工作。
我在~/library/launchagents中创建了/usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist的软链接。
如果我尝试手动加载Postgres,我会收到"操作正在进行"的消息。
1 2 | > launchctl LOAD ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist /usr/LOCAL/Cellar/postgresql/9.4.0/homebrew.mxcl.postgresql.plist: Operation already IN progress |
然而,Postgres似乎没有运行。
1 2 | > ps auxw | grep post billmcn 670 0.0 0.0 2424272 452 s000 R+ 10:12PM 0:00.01 grep post |
我无法与命令行客户机连接。
1 2 3 4 | > 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"? |
据我所知,我已经尝试了在讨论这个问题的其他stackoverflow线程上建议的所有修复方法。明确地:
- 我已经卸载并重新安装了Postgres和附带的Ruby Gem。我的计算机上没有Postgres 8.0版本。
- 我已经验证了psql客户机程序是由Homebrew安装的9.4.0版本,而不是Mac系统二进制文件。
- 我已经验证了/usr/local/var/postgres/postmaster.pid不存在。
- 我重新启动了机器。
我以前让自制的Postgres在这台机器上工作过。我想是什么破坏了它从版本8升级到版本9,但我不确定。
我没有任何需要保存的数据库。我愿意从Postgres开始清理;我现在只需要让它工作。有什么想法吗?
问题似乎是对/usr/local/var/postgres目录的权限。以下是当事情不起作用时我的var目录的样子。
1 2 3 | 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")。
我删除了/usr/local/var/postgres,卸载并重新安装了postgres,现在看起来是这样的。
1 2 3 | ll /usr/LOCAL/var/ drwxr-xr-x 3 billmcn admin 102 DEC 20 12:44 cache drwx------ 23 billmcn admin 782 Dec 30 10:51 postgres |
不知道它是如何进入这种状态的,因为我不记得我使用了这个目录上的权限,但不管怎样。它现在起作用了。
我在新安装的约塞米蒂使用自制啤酒安装Postgres时遇到了同样的问题。
首先,我的BREW配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 |
我注意到的第一件事是我没有对
揭示:
所以我删除了目录
这似乎成功了,Postgres运行良好。
我也有同样的问题。这里的主要问题是,安装的initdb步骤将创建具有根所有权的目录,而不是作为Mac上的用户。要解决此问题:
运行
1 2 3 | 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 |
然后运行
1 | initdb -D /usr/LOCAL/var/postgres |
对于笑和咯咯笑,创建一个以您的用户命名的测试数据库:
1 | createdb `whoami` |
登录测试:
1 | psql |
在尝试用自制安装PostgreSQL之后,我得到了:
1 | Warning: postgresql-9.5.2 already installed, it's just not linked |
所以我尝试:
1 | brew link postgresql |
得到这个错误:
1 2 3 | 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. |
这似乎是一个写许可的问题,所以我做到了:
1 | sudo chown -R `whoami` /usr/LOCAL/share/man/ |
它之所以成功,是因为我能够做到(没有错误):
1 | brew link postgresql |
请注意,它们是处理此问题的homebrew的github线程:https://github.com/homebrew/homebrew/issue s/35240
我也遇到过类似的问题。詹姆斯的回答帮助我解决了这个问题。但后来我遇到了jbk提到的问题(在删除了/usr/local/var/postgres之后,它继续被重新创建)。
问题是,如果创建了symlink:
1 | ln -sfv /usr/LOCAL/opt/postgresql/*.plist ~/Library/LaunchAgents |
并启动了流程:
1 | launchctl LOAD ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist |
您应该首先卸载它:
1 | launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist |
在执行詹姆斯的命令之前。
1 2 3 | 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 |
此外,如果像我一样,您有管理自制啤酒的管理员用户和将使用PGSL进行开发的常规用户,那么james命令应该作为超级用户运行:
1 | sudo -s |
对postgres目录的所有权应该授予您的dev用户:
1 | chown my-dev-USER /usr/LOCAL/var/postgres |
以下命令(以dev用户身份运行)应正确填充目录:
1 | createdb `whoami` |
运行:
1 | psql -l |
应该在postgre中显示这些操作之后的表和用户权限。
希望这有帮助。
如果有人从以前的版本升级,不要忘记:
1 | brew postgresql-upgrade-DATABASE |
这将通过将现有数据库升级到已将Postgres升级到的版本来解决问题。
检查@leo chaz_maltrait是否修复错误错误
1 2 3 | sudo chown -R `whoami` /usr/LOCAL/lib/pkgconfig brew link postgresql |