在自制中链接PostgreSQL

时间:2018-06-19 17:03:05

标签: postgresql command-line homebrew

我已经安装了postgresql,但是它说我没有链接到它。 我在命令行中运行此命令,并收到以下错误:

myname@MacBook-Pro-8 ~> brew install postgresql
Warning: postgresql 10.4 is already installed, it's just not linked
You can use `brew link postgresql` to link this version.
myname@MacBook-Pro-8 ~> brew link postgresql
Linking /usr/local/Cellar/postgresql/10.4...
Error: Could not symlink share/man/man7/ABORT.7
/usr/local/share/man/man7 is not writable.
myname@MacBook-Pro-8 ~> sudo brew link postgresql
Password:
Error: Running Homebrew as root is extremely dangerous and no longer supported.
As Homebrew does not drop privileges on installation you would be giving all build scripts full access to your system.

我也尝试过:

brew prune; brew link postgresql

这给了我同样的错误:

Error: Could not symlink share/man/man7/ABORT.7
/usr/local/share/man/man7 is not writable.

为什么该文件夹不可写?我该怎么做才能更改它?

2 个答案:

答案 0 :(得分:0)

解决这个问题真的很痛苦,所以我想把它留给别人看看。

问题: Postgresql的Homebrew安装将无法成功执行。 $ brew link postgresql由于目录不可写而导致失败。新版本的Homebrew将不允许sudo命令,并且系统完整性保护可防止更改权限。

详细信息: 我尝试使用自制软件安装postgres,并不断遇到syslink问题。当我按照自制程序的建议运行$ brew link postgresql时,我一直遇到一个错误,因为某些文件夹不可写,所以无法完成。我认为通过运行sudo可以很容易地解决此问题,但是不幸的是,由于安全风险,最新版本的homebrew不再允许使用sudo命令。我的下一个想法是让我的root用户使用macOS GUI界面来更改此文件夹的权限,因为我不确定如何在终端上执行此操作。不管以“ root”身份登录,操作系统都不允许我更改文件夹的权限。我也尝试使用sudo并在终端中更改权限,但是它也不起作用。经过几天的脑筋急转弯尝试各种解决方案,我发现自El Capitan以来,macOS引入了系统完整性保护(又称为“ SIP”或“无根”)。事实证明,一旦我禁用了SIP,重新登录到“ root”并在问题目录上将我的常规帐户权限更改为“读/写”,就可以返回我的常规帐户并成功执行$ brew install postgresql。

(假设您当前通过自制软件安装了postgresql,但由于上述情况而无法链接,那么我建议您解决此问题...)

  1. 运行$ brew link postgresql
  2. 写下错误表明无法写入的目录路径。 (例如usr / local / share / man / man7)注意:由于您将无法使用复制和粘贴功能,因此您希望将其实际记录在纸上或在手机屏幕上拍照。 >
  3. 启用您的“ root”用户帐户(如果尚未启用)。 (instructions here)注意:请确保为此帐户输入一个非常好的密码,并将其记录在安全的地方。这是一个功能强大的帐户,无法恢复密码。
  4. 禁用系统完整性保护。 (instructions here
  5. 登录“ root”用户帐户
  6. 在Finder菜单栏中,选择GO>转到文件夹...(CMND + SHFT + G),然后输入步骤2中的路径。
  7. 右键单击/按住Cntrl键单击该文件夹,然后选择“获取信息”
  8. 单击“共享和权限”底部的加号
  9. 将您的普通帐户添加到列表中,并将读取和写入权限更改为
  10. 返回到常规帐户,运行$ brew uninstall postgresql,然后运行$ brew update$ brew doctor。如果所有这些都已设置,请运行$ brew install postgresql
  11. 您现在应该可以没有任何问题地进行安装了。但是,如果再次遇到链接和权限问题,请运行$ brew link postgresql找出有问题的目录,并对其他给您带来麻烦的目录重复执行步骤5-10。
  12. 如果一切正常并且运行正常。最好至少再次启用SIP(步骤4中链接的文章中的说明)。

(要检查一切是否正常。我建议先运行$ brew services,然后先运行postgresql,然后运行$ createdb 'test'。就我而言,这是我最初尝试运行createdb并得到“找不到命令”的时间意识到有什么问题。)

答案 1 :(得分:0)

运行此命令即可解决。这可以绕过SIP。

sudo chown -R $(whoami) $(brew --prefix)/*
brew link postgresql
相关问题