已安装,只是未链接


86

注意:我不太擅长使用shell。

我试图在优胜美地上安装Valgrind使用brew

brew install --HEAD valgrind

最后,我遇到了与链接有关的错误,因此当我尝试重新安装时,我得到了:

警告:已安装valgrind-HEAD,只是未链接

因此,显然我已经安装了它。然后根据其他SO问题和答案,我尝试了:

brew link valgrind

这似乎解决了其他人链接已安装软件的问题,但这给了我一个错误:

Linking /usr/local/Cellar/valgrind/HEAD... 
Error: Could not symlink lib/pkgconfig/valgrind.pc
/usr/local/lib/pkgconfig is not writable.

我也尝试更新,brew但没有解决问题。如果它不是可写的,也许sudo会给我许可,但我不想在sudo不确切知道自己在做什么的情况下使用它。

发生了什么事以及如何解决?

Answers:


103

看起来像是权限问题。我会尝试这样做

chmod 755 /usr/local/lib/pkgconfig

这应该使它可用,然后尝试

brew link valgrind

如果那行不通,我会尝试检查一下

brew doctor

5
我使用brew doctor,然后按照说明进行操作,然后使用chown两次来解决问题。
yanzi1225627

2
@ yanzi1225627为什么要两次?
格雷格·希尔斯顿

31

首轮

brew link <package>

如果出现错误,请尝试进行自动诊断

brew doctor

brew doctor 列出了可能导致安装过程中出现错误的问题。

要解决文件冲突的问题,请运行以获取所有将由覆盖执行的操作的列表,而无需实际执行。

列出所有将被删除的文件:

  brew link --overwrite --dry-run <package>

假设您认为通过覆盖执行的操作会使您的系统进入更稳定的状态,然后执行此运行以执行覆盖。

要强制链接并覆盖所有冲突文件:

 brew link --overwrite <package>

13

如果以上解决方案均无效,请尝试此操作。

sudo chown -R $USER:admin /usr/local
brew link <package-name>

3

就我而言,酿造医生说得对。在某个时候,/ usr / local / lib / pkgconfig被设置为由root拥有,而不是由我的帐户拥有。订明的补救措施有效-

sudo chown -R $(whoami) /usr/local/lib/pkgconfig

2

我遇到了同样的问题,并通过下一个解决方案解决了:从终端运行brew医生,检查所有错误

然后运行下一个命令:

sudo chown -R $USER:admin /usr/local/bin /usr/local/etc /usr/local/sbin /usr/local/share

运行后:

brew link <package_name>

1

类型

link valgrind

由于某某目录不可写,它将显示一个无法链接的错误。太酷了,我们现在使其可写。类型

sudo chmod a+w the/directory/shown/as/error

如果目录不可写,则您将无法更改其权限并使它可写。Sudo将使此操作成为可能。chmod将更改模式,并使所有用户都可以编写模式。

接下来,将提示您输入系统密码。之后,再次输入

link valgrind

它将在这次工作。


1

这是我尝试过的并且有效的方法:

$ brew link --overwrite sdl
Linking /usr/local/Cellar/sdl/1.2.15...
Error: Could not symlink lib/pkgconfig/sdl.pc
/usr/local/lib/pkgconfig is not writable.

寻找pkgconfig:(之后chmod 750

drwxr-xr-x   4 root           wheel   136B Mar 30  2013 pkgconfig

我尝试chown如下:

$ sudo chown -R  avkashchauhan:admin /usr/local/lib/pkgconfig

它应该如下所示:

drwxr-xr-x   4 avkashchauhan  admin   136B Mar 30  2013 pkgconfig

在尝试之后:

$ brew link sdl                                                                                                                                                                                                                    
Linking /usr/local/Cellar/sdl/1.2.15... 182 symlinks created

0

我也遇到类似的问题

$ brew install sqlite正在更新Homebrew ... ==>自动更新了Homebrew!更新了1个水龙头(自制/核心)。无需更改公式。

警告:已经安装了sqlite-3.17.0,但尚未链接。

我尝试将其链接,

$ brew link sqlite警告:sqlite仅适用于小桶,必须与--force链接。请注意,这样做可能会干扰构建软件。

然后用力做

$ brew link --force sqlite链接/usr/local/Cellar/sqlite/3.17.0 ...已创建8个符号链接


0

关于权限,我也遇到了同样的问题,但是在我给出了权限之后,仍然是错误权限。在这里,我首先:

brew unlink valgrind

然后,

brew link valgrind

希望对您有所帮助。


0
brew install cocoapods --build-from-source
brew link --overwrite cocoapods

升级到MAC OS Mojave 10.14.6后,唯一对我有用的命令

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.