Brew: Brew requires linking before installing packages and never works

Created on 15 Nov 2016  ยท  57Comments  ยท  Source: Homebrew/brew

Bug reports:

The only step that resolves the issue is removing the affected linked packages and installing the desired package.

For example:

brew install php56           
Updating Homebrew...
==> Installing php56 from homebrew/php
Error: You must `brew link jpeg unixodbc` before homebrew/php/php56 can be installed

Most helpful comment

OK, good.

brew list | while read f; do brew unlink $f; done
brew prune
brew list | while read f; do brew link --overwrite $f; done

All 57 comments

To help us debug this issue can you explain:

  • What you were trying to do (and why)
  • What happened
  • What you expected to happen
  • Step-by-step reproduction instructions (with as minimal input data as possible)

@dannykopping any update here?

I think this should be pretty illustrative:

infomaniac $ brew install gprof2dot
Error: You must `brew link libpng` before gprof2dot can be installed
infomaniac $ brew link libpng
Linking /usr/local/Cellar/libpng/1.6.26... 4 symlinks created
infomaniac $ brew install gprof2dot
Error: You must `brew link libpng` before gprof2dot can be installed

Even though this package does not depend on libpng:

$ brew info gprof2dot
gprof2dot: stable 2016.10.13 (bottled), HEAD
Convert the output from many profilers into a Graphviz dot graph.
https://github.com/jrfonseca/gprof2dot
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/gprof2dot.rb
==> Dependencies
Recommended: graphviz โœ˜
==> Options
--without-graphviz
        Build without graphviz support
--HEAD
        Install HEAD version

OK, so first off, it does depend on libpng because it depends on graphviz, and graphviz depends on libpng. The question is what's wrong with your libpng. Can you post the output of

find /usr/local/Cellar/libpng
ls -l /usr/local/opt/libpng
ls -l /usr/local/var/homebrew/linked/libpng

Sorry, my bad

find /usr/local/Cellar/libpng

/usr/local/Cellar/libpng
/usr/local/Cellar/libpng/1.5.14
/usr/local/Cellar/libpng/1.5.14/bin
/usr/local/Cellar/libpng/1.5.14/bin/libpng-config
/usr/local/Cellar/libpng/1.5.14/bin/libpng15-config
/usr/local/Cellar/libpng/1.5.14/CHANGES
/usr/local/Cellar/libpng/1.5.14/include
/usr/local/Cellar/libpng/1.5.14/include/libpng15
/usr/local/Cellar/libpng/1.5.14/include/libpng15/png.h
/usr/local/Cellar/libpng/1.5.14/include/libpng15/pngconf.h
/usr/local/Cellar/libpng/1.5.14/include/libpng15/pnglibconf.h
/usr/local/Cellar/libpng/1.5.14/include/png.h
/usr/local/Cellar/libpng/1.5.14/include/pngconf.h
/usr/local/Cellar/libpng/1.5.14/include/pnglibconf.h
/usr/local/Cellar/libpng/1.5.14/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.5.14/lib
/usr/local/Cellar/libpng/1.5.14/lib/libpng.a
/usr/local/Cellar/libpng/1.5.14/lib/libpng.dylib
/usr/local/Cellar/libpng/1.5.14/lib/libpng.la
/usr/local/Cellar/libpng/1.5.14/lib/libpng15.15.dylib
/usr/local/Cellar/libpng/1.5.14/lib/libpng15.a
/usr/local/Cellar/libpng/1.5.14/lib/libpng15.dylib
/usr/local/Cellar/libpng/1.5.14/lib/pkgconfig
/usr/local/Cellar/libpng/1.5.14/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.5.14/lib/pkgconfig/libpng15.pc
/usr/local/Cellar/libpng/1.5.14/LICENSE
/usr/local/Cellar/libpng/1.5.14/README
/usr/local/Cellar/libpng/1.5.14/share
/usr/local/Cellar/libpng/1.5.14/share/man
/usr/local/Cellar/libpng/1.5.14/share/man/man3
/usr/local/Cellar/libpng/1.5.14/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.5.14/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.5.14/share/man/man5
/usr/local/Cellar/libpng/1.5.14/share/man/man5/png.5
/usr/local/Cellar/libpng/1.5.14/TODO
/usr/local/Cellar/libpng/1.5.17
/usr/local/Cellar/libpng/1.5.17/bin
/usr/local/Cellar/libpng/1.5.17/bin/libpng-config
/usr/local/Cellar/libpng/1.5.17/bin/libpng15-config
/usr/local/Cellar/libpng/1.5.17/CHANGES
/usr/local/Cellar/libpng/1.5.17/include
/usr/local/Cellar/libpng/1.5.17/include/libpng15
/usr/local/Cellar/libpng/1.5.17/include/libpng15/png.h
/usr/local/Cellar/libpng/1.5.17/include/libpng15/pngconf.h
/usr/local/Cellar/libpng/1.5.17/include/libpng15/pnglibconf.h
/usr/local/Cellar/libpng/1.5.17/include/png.h
/usr/local/Cellar/libpng/1.5.17/include/pngconf.h
/usr/local/Cellar/libpng/1.5.17/include/pnglibconf.h
/usr/local/Cellar/libpng/1.5.17/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.5.17/lib
/usr/local/Cellar/libpng/1.5.17/lib/libpng.a
/usr/local/Cellar/libpng/1.5.17/lib/libpng.dylib
/usr/local/Cellar/libpng/1.5.17/lib/libpng.la
/usr/local/Cellar/libpng/1.5.17/lib/libpng15.15.dylib
/usr/local/Cellar/libpng/1.5.17/lib/libpng15.a
/usr/local/Cellar/libpng/1.5.17/lib/libpng15.dylib
/usr/local/Cellar/libpng/1.5.17/lib/pkgconfig
/usr/local/Cellar/libpng/1.5.17/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.5.17/lib/pkgconfig/libpng15.pc
/usr/local/Cellar/libpng/1.5.17/LICENSE
/usr/local/Cellar/libpng/1.5.17/README
/usr/local/Cellar/libpng/1.5.17/share
/usr/local/Cellar/libpng/1.5.17/share/man
/usr/local/Cellar/libpng/1.5.17/share/man/man3
/usr/local/Cellar/libpng/1.5.17/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.5.17/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.5.17/share/man/man5
/usr/local/Cellar/libpng/1.5.17/share/man/man5/png.5
/usr/local/Cellar/libpng/1.5.17/TODO
/usr/local/Cellar/libpng/1.6.10
/usr/local/Cellar/libpng/1.6.10/bin
/usr/local/Cellar/libpng/1.6.10/bin/libpng-config
/usr/local/Cellar/libpng/1.6.10/bin/libpng16-config
/usr/local/Cellar/libpng/1.6.10/bin/png-fix-itxt
/usr/local/Cellar/libpng/1.6.10/bin/pngfix
/usr/local/Cellar/libpng/1.6.10/CHANGES
/usr/local/Cellar/libpng/1.6.10/include
/usr/local/Cellar/libpng/1.6.10/include/libpng16
/usr/local/Cellar/libpng/1.6.10/include/libpng16/png.h
/usr/local/Cellar/libpng/1.6.10/include/libpng16/pngconf.h
/usr/local/Cellar/libpng/1.6.10/include/libpng16/pnglibconf.h
/usr/local/Cellar/libpng/1.6.10/include/png.h
/usr/local/Cellar/libpng/1.6.10/include/pngconf.h
/usr/local/Cellar/libpng/1.6.10/include/pnglibconf.h
/usr/local/Cellar/libpng/1.6.10/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.6.10/lib
/usr/local/Cellar/libpng/1.6.10/lib/libpng.a
/usr/local/Cellar/libpng/1.6.10/lib/libpng.dylib
/usr/local/Cellar/libpng/1.6.10/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.10/lib/libpng16.a
/usr/local/Cellar/libpng/1.6.10/lib/libpng16.dylib
/usr/local/Cellar/libpng/1.6.10/lib/pkgconfig
/usr/local/Cellar/libpng/1.6.10/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.6.10/lib/pkgconfig/libpng16.pc
/usr/local/Cellar/libpng/1.6.10/LICENSE
/usr/local/Cellar/libpng/1.6.10/README
/usr/local/Cellar/libpng/1.6.10/share
/usr/local/Cellar/libpng/1.6.10/share/man
/usr/local/Cellar/libpng/1.6.10/share/man/man3
/usr/local/Cellar/libpng/1.6.10/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.6.10/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.6.10/share/man/man5
/usr/local/Cellar/libpng/1.6.10/share/man/man5/png.5
/usr/local/Cellar/libpng/1.6.10/TODO
/usr/local/Cellar/libpng/1.6.12
/usr/local/Cellar/libpng/1.6.12/bin
/usr/local/Cellar/libpng/1.6.12/bin/libpng-config
/usr/local/Cellar/libpng/1.6.12/bin/libpng16-config
/usr/local/Cellar/libpng/1.6.12/bin/png-fix-itxt
/usr/local/Cellar/libpng/1.6.12/bin/pngfix
/usr/local/Cellar/libpng/1.6.12/CHANGES
/usr/local/Cellar/libpng/1.6.12/include
/usr/local/Cellar/libpng/1.6.12/include/libpng16
/usr/local/Cellar/libpng/1.6.12/include/libpng16/png.h
/usr/local/Cellar/libpng/1.6.12/include/libpng16/pngconf.h
/usr/local/Cellar/libpng/1.6.12/include/libpng16/pnglibconf.h
/usr/local/Cellar/libpng/1.6.12/include/png.h
/usr/local/Cellar/libpng/1.6.12/include/pngconf.h
/usr/local/Cellar/libpng/1.6.12/include/pnglibconf.h
/usr/local/Cellar/libpng/1.6.12/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.6.12/lib
/usr/local/Cellar/libpng/1.6.12/lib/libpng.a
/usr/local/Cellar/libpng/1.6.12/lib/libpng.dylib
/usr/local/Cellar/libpng/1.6.12/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.12/lib/libpng16.a
/usr/local/Cellar/libpng/1.6.12/lib/libpng16.dylib
/usr/local/Cellar/libpng/1.6.12/lib/pkgconfig
/usr/local/Cellar/libpng/1.6.12/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.6.12/lib/pkgconfig/libpng16.pc
/usr/local/Cellar/libpng/1.6.12/LICENSE
/usr/local/Cellar/libpng/1.6.12/README
/usr/local/Cellar/libpng/1.6.12/share
/usr/local/Cellar/libpng/1.6.12/share/man
/usr/local/Cellar/libpng/1.6.12/share/man/man3
/usr/local/Cellar/libpng/1.6.12/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.6.12/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.6.12/share/man/man5
/usr/local/Cellar/libpng/1.6.12/share/man/man5/png.5
/usr/local/Cellar/libpng/1.6.12/TODO
/usr/local/Cellar/libpng/1.6.13
/usr/local/Cellar/libpng/1.6.13/bin
/usr/local/Cellar/libpng/1.6.13/bin/libpng-config
/usr/local/Cellar/libpng/1.6.13/bin/libpng16-config
/usr/local/Cellar/libpng/1.6.13/bin/png-fix-itxt
/usr/local/Cellar/libpng/1.6.13/bin/pngfix
/usr/local/Cellar/libpng/1.6.13/CHANGES
/usr/local/Cellar/libpng/1.6.13/include
/usr/local/Cellar/libpng/1.6.13/include/libpng16
/usr/local/Cellar/libpng/1.6.13/include/libpng16/png.h
/usr/local/Cellar/libpng/1.6.13/include/libpng16/pngconf.h
/usr/local/Cellar/libpng/1.6.13/include/libpng16/pnglibconf.h
/usr/local/Cellar/libpng/1.6.13/include/png.h
/usr/local/Cellar/libpng/1.6.13/include/pngconf.h
/usr/local/Cellar/libpng/1.6.13/include/pnglibconf.h
/usr/local/Cellar/libpng/1.6.13/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.6.13/lib
/usr/local/Cellar/libpng/1.6.13/lib/libpng.a
/usr/local/Cellar/libpng/1.6.13/lib/libpng.dylib
/usr/local/Cellar/libpng/1.6.13/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.13/lib/libpng16.a
/usr/local/Cellar/libpng/1.6.13/lib/libpng16.dylib
/usr/local/Cellar/libpng/1.6.13/lib/pkgconfig
/usr/local/Cellar/libpng/1.6.13/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.6.13/lib/pkgconfig/libpng16.pc
/usr/local/Cellar/libpng/1.6.13/LICENSE
/usr/local/Cellar/libpng/1.6.13/README
/usr/local/Cellar/libpng/1.6.13/share
/usr/local/Cellar/libpng/1.6.13/share/man
/usr/local/Cellar/libpng/1.6.13/share/man/man3
/usr/local/Cellar/libpng/1.6.13/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.6.13/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.6.13/share/man/man5
/usr/local/Cellar/libpng/1.6.13/share/man/man5/png.5
/usr/local/Cellar/libpng/1.6.13/TODO
/usr/local/Cellar/libpng/1.6.16
/usr/local/Cellar/libpng/1.6.16/bin
/usr/local/Cellar/libpng/1.6.16/bin/libpng-config
/usr/local/Cellar/libpng/1.6.16/bin/libpng16-config
/usr/local/Cellar/libpng/1.6.16/bin/png-fix-itxt
/usr/local/Cellar/libpng/1.6.16/bin/pngfix
/usr/local/Cellar/libpng/1.6.16/CHANGES
/usr/local/Cellar/libpng/1.6.16/include
/usr/local/Cellar/libpng/1.6.16/include/libpng16
/usr/local/Cellar/libpng/1.6.16/include/libpng16/png.h
/usr/local/Cellar/libpng/1.6.16/include/libpng16/pngconf.h
/usr/local/Cellar/libpng/1.6.16/include/libpng16/pnglibconf.h
/usr/local/Cellar/libpng/1.6.16/include/png.h
/usr/local/Cellar/libpng/1.6.16/include/pngconf.h
/usr/local/Cellar/libpng/1.6.16/include/pnglibconf.h
/usr/local/Cellar/libpng/1.6.16/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.6.16/lib
/usr/local/Cellar/libpng/1.6.16/lib/libpng.a
/usr/local/Cellar/libpng/1.6.16/lib/libpng.dylib
/usr/local/Cellar/libpng/1.6.16/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.16/lib/libpng16.a
/usr/local/Cellar/libpng/1.6.16/lib/libpng16.dylib
/usr/local/Cellar/libpng/1.6.16/lib/pkgconfig
/usr/local/Cellar/libpng/1.6.16/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.6.16/lib/pkgconfig/libpng16.pc
/usr/local/Cellar/libpng/1.6.16/LICENSE
/usr/local/Cellar/libpng/1.6.16/README
/usr/local/Cellar/libpng/1.6.16/share
/usr/local/Cellar/libpng/1.6.16/share/man
/usr/local/Cellar/libpng/1.6.16/share/man/man3
/usr/local/Cellar/libpng/1.6.16/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.6.16/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.6.16/share/man/man5
/usr/local/Cellar/libpng/1.6.16/share/man/man5/png.5
/usr/local/Cellar/libpng/1.6.16/TODO
/usr/local/Cellar/libpng/1.6.17
/usr/local/Cellar/libpng/1.6.17/bin
/usr/local/Cellar/libpng/1.6.17/bin/libpng-config
/usr/local/Cellar/libpng/1.6.17/bin/libpng16-config
/usr/local/Cellar/libpng/1.6.17/bin/png-fix-itxt
/usr/local/Cellar/libpng/1.6.17/bin/pngfix
/usr/local/Cellar/libpng/1.6.17/CHANGES
/usr/local/Cellar/libpng/1.6.17/include
/usr/local/Cellar/libpng/1.6.17/include/libpng16
/usr/local/Cellar/libpng/1.6.17/include/libpng16/png.h
/usr/local/Cellar/libpng/1.6.17/include/libpng16/pngconf.h
/usr/local/Cellar/libpng/1.6.17/include/libpng16/pnglibconf.h
/usr/local/Cellar/libpng/1.6.17/include/png.h
/usr/local/Cellar/libpng/1.6.17/include/pngconf.h
/usr/local/Cellar/libpng/1.6.17/include/pnglibconf.h
/usr/local/Cellar/libpng/1.6.17/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.6.17/lib
/usr/local/Cellar/libpng/1.6.17/lib/libpng.a
/usr/local/Cellar/libpng/1.6.17/lib/libpng.dylib
/usr/local/Cellar/libpng/1.6.17/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.17/lib/libpng16.a
/usr/local/Cellar/libpng/1.6.17/lib/libpng16.dylib
/usr/local/Cellar/libpng/1.6.17/lib/pkgconfig
/usr/local/Cellar/libpng/1.6.17/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.6.17/lib/pkgconfig/libpng16.pc
/usr/local/Cellar/libpng/1.6.17/LICENSE
/usr/local/Cellar/libpng/1.6.17/README
/usr/local/Cellar/libpng/1.6.17/share
/usr/local/Cellar/libpng/1.6.17/share/man
/usr/local/Cellar/libpng/1.6.17/share/man/man3
/usr/local/Cellar/libpng/1.6.17/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.6.17/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.6.17/share/man/man5
/usr/local/Cellar/libpng/1.6.17/share/man/man5/png.5
/usr/local/Cellar/libpng/1.6.17/TODO
/usr/local/Cellar/libpng/1.6.18
/usr/local/Cellar/libpng/1.6.18/bin
/usr/local/Cellar/libpng/1.6.18/bin/libpng-config
/usr/local/Cellar/libpng/1.6.18/bin/libpng16-config
/usr/local/Cellar/libpng/1.6.18/bin/png-fix-itxt
/usr/local/Cellar/libpng/1.6.18/bin/pngfix
/usr/local/Cellar/libpng/1.6.18/CHANGES
/usr/local/Cellar/libpng/1.6.18/include
/usr/local/Cellar/libpng/1.6.18/include/libpng16
/usr/local/Cellar/libpng/1.6.18/include/libpng16/png.h
/usr/local/Cellar/libpng/1.6.18/include/libpng16/pngconf.h
/usr/local/Cellar/libpng/1.6.18/include/libpng16/pnglibconf.h
/usr/local/Cellar/libpng/1.6.18/include/png.h
/usr/local/Cellar/libpng/1.6.18/include/pngconf.h
/usr/local/Cellar/libpng/1.6.18/include/pnglibconf.h
/usr/local/Cellar/libpng/1.6.18/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.6.18/lib
/usr/local/Cellar/libpng/1.6.18/lib/libpng.a
/usr/local/Cellar/libpng/1.6.18/lib/libpng.dylib
/usr/local/Cellar/libpng/1.6.18/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.18/lib/libpng16.a
/usr/local/Cellar/libpng/1.6.18/lib/libpng16.dylib
/usr/local/Cellar/libpng/1.6.18/lib/pkgconfig
/usr/local/Cellar/libpng/1.6.18/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.6.18/lib/pkgconfig/libpng16.pc
/usr/local/Cellar/libpng/1.6.18/LICENSE
/usr/local/Cellar/libpng/1.6.18/README
/usr/local/Cellar/libpng/1.6.18/share
/usr/local/Cellar/libpng/1.6.18/share/man
/usr/local/Cellar/libpng/1.6.18/share/man/man3
/usr/local/Cellar/libpng/1.6.18/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.6.18/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.6.18/share/man/man5
/usr/local/Cellar/libpng/1.6.18/share/man/man5/png.5
/usr/local/Cellar/libpng/1.6.18/TODO
/usr/local/Cellar/libpng/1.6.19
/usr/local/Cellar/libpng/1.6.19/bin
/usr/local/Cellar/libpng/1.6.19/bin/libpng-config
/usr/local/Cellar/libpng/1.6.19/bin/libpng16-config
/usr/local/Cellar/libpng/1.6.19/bin/png-fix-itxt
/usr/local/Cellar/libpng/1.6.19/bin/pngfix
/usr/local/Cellar/libpng/1.6.19/CHANGES
/usr/local/Cellar/libpng/1.6.19/include
/usr/local/Cellar/libpng/1.6.19/include/libpng16
/usr/local/Cellar/libpng/1.6.19/include/libpng16/png.h
/usr/local/Cellar/libpng/1.6.19/include/libpng16/pngconf.h
/usr/local/Cellar/libpng/1.6.19/include/libpng16/pnglibconf.h
/usr/local/Cellar/libpng/1.6.19/include/png.h
/usr/local/Cellar/libpng/1.6.19/include/pngconf.h
/usr/local/Cellar/libpng/1.6.19/include/pnglibconf.h
/usr/local/Cellar/libpng/1.6.19/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.6.19/lib
/usr/local/Cellar/libpng/1.6.19/lib/libpng.a
/usr/local/Cellar/libpng/1.6.19/lib/libpng.dylib
/usr/local/Cellar/libpng/1.6.19/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.19/lib/libpng16.a
/usr/local/Cellar/libpng/1.6.19/lib/libpng16.dylib
/usr/local/Cellar/libpng/1.6.19/lib/pkgconfig
/usr/local/Cellar/libpng/1.6.19/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.6.19/lib/pkgconfig/libpng16.pc
/usr/local/Cellar/libpng/1.6.19/LICENSE
/usr/local/Cellar/libpng/1.6.19/README
/usr/local/Cellar/libpng/1.6.19/share
/usr/local/Cellar/libpng/1.6.19/share/man
/usr/local/Cellar/libpng/1.6.19/share/man/man3
/usr/local/Cellar/libpng/1.6.19/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.6.19/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.6.19/share/man/man5
/usr/local/Cellar/libpng/1.6.19/share/man/man5/png.5
/usr/local/Cellar/libpng/1.6.19/TODO
/usr/local/Cellar/libpng/1.6.20
/usr/local/Cellar/libpng/1.6.20/bin
/usr/local/Cellar/libpng/1.6.20/bin/libpng-config
/usr/local/Cellar/libpng/1.6.20/bin/libpng16-config
/usr/local/Cellar/libpng/1.6.20/bin/png-fix-itxt
/usr/local/Cellar/libpng/1.6.20/bin/pngfix
/usr/local/Cellar/libpng/1.6.20/CHANGES
/usr/local/Cellar/libpng/1.6.20/include
/usr/local/Cellar/libpng/1.6.20/include/libpng16
/usr/local/Cellar/libpng/1.6.20/include/libpng16/png.h
/usr/local/Cellar/libpng/1.6.20/include/libpng16/pngconf.h
/usr/local/Cellar/libpng/1.6.20/include/libpng16/pnglibconf.h
/usr/local/Cellar/libpng/1.6.20/include/png.h
/usr/local/Cellar/libpng/1.6.20/include/pngconf.h
/usr/local/Cellar/libpng/1.6.20/include/pnglibconf.h
/usr/local/Cellar/libpng/1.6.20/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.6.20/lib
/usr/local/Cellar/libpng/1.6.20/lib/libpng.a
/usr/local/Cellar/libpng/1.6.20/lib/libpng.dylib
/usr/local/Cellar/libpng/1.6.20/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.20/lib/libpng16.a
/usr/local/Cellar/libpng/1.6.20/lib/libpng16.dylib
/usr/local/Cellar/libpng/1.6.20/lib/pkgconfig
/usr/local/Cellar/libpng/1.6.20/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.6.20/lib/pkgconfig/libpng16.pc
/usr/local/Cellar/libpng/1.6.20/LICENSE
/usr/local/Cellar/libpng/1.6.20/README
/usr/local/Cellar/libpng/1.6.20/share
/usr/local/Cellar/libpng/1.6.20/share/man
/usr/local/Cellar/libpng/1.6.20/share/man/man3
/usr/local/Cellar/libpng/1.6.20/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.6.20/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.6.20/share/man/man5
/usr/local/Cellar/libpng/1.6.20/share/man/man5/png.5
/usr/local/Cellar/libpng/1.6.20/TODO
/usr/local/Cellar/libpng/1.6.21
/usr/local/Cellar/libpng/1.6.21/bin
/usr/local/Cellar/libpng/1.6.21/bin/libpng-config
/usr/local/Cellar/libpng/1.6.21/bin/libpng16-config
/usr/local/Cellar/libpng/1.6.21/bin/png-fix-itxt
/usr/local/Cellar/libpng/1.6.21/bin/pngfix
/usr/local/Cellar/libpng/1.6.21/CHANGES
/usr/local/Cellar/libpng/1.6.21/include
/usr/local/Cellar/libpng/1.6.21/include/libpng16
/usr/local/Cellar/libpng/1.6.21/include/libpng16/png.h
/usr/local/Cellar/libpng/1.6.21/include/libpng16/pngconf.h
/usr/local/Cellar/libpng/1.6.21/include/libpng16/pnglibconf.h
/usr/local/Cellar/libpng/1.6.21/include/png.h
/usr/local/Cellar/libpng/1.6.21/include/pngconf.h
/usr/local/Cellar/libpng/1.6.21/include/pnglibconf.h
/usr/local/Cellar/libpng/1.6.21/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.6.21/lib
/usr/local/Cellar/libpng/1.6.21/lib/libpng.a
/usr/local/Cellar/libpng/1.6.21/lib/libpng.dylib
/usr/local/Cellar/libpng/1.6.21/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.21/lib/libpng16.a
/usr/local/Cellar/libpng/1.6.21/lib/libpng16.dylib
/usr/local/Cellar/libpng/1.6.21/lib/pkgconfig
/usr/local/Cellar/libpng/1.6.21/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.6.21/lib/pkgconfig/libpng16.pc
/usr/local/Cellar/libpng/1.6.21/LICENSE
/usr/local/Cellar/libpng/1.6.21/README
/usr/local/Cellar/libpng/1.6.21/share
/usr/local/Cellar/libpng/1.6.21/share/man
/usr/local/Cellar/libpng/1.6.21/share/man/man3
/usr/local/Cellar/libpng/1.6.21/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.6.21/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.6.21/share/man/man5
/usr/local/Cellar/libpng/1.6.21/share/man/man5/png.5
/usr/local/Cellar/libpng/1.6.21/TODO
/usr/local/Cellar/libpng/1.6.23
/usr/local/Cellar/libpng/1.6.23/bin
/usr/local/Cellar/libpng/1.6.23/bin/libpng-config
/usr/local/Cellar/libpng/1.6.23/bin/libpng16-config
/usr/local/Cellar/libpng/1.6.23/bin/png-fix-itxt
/usr/local/Cellar/libpng/1.6.23/bin/pngfix
/usr/local/Cellar/libpng/1.6.23/CHANGES
/usr/local/Cellar/libpng/1.6.23/include
/usr/local/Cellar/libpng/1.6.23/include/libpng16
/usr/local/Cellar/libpng/1.6.23/include/libpng16/png.h
/usr/local/Cellar/libpng/1.6.23/include/libpng16/pngconf.h
/usr/local/Cellar/libpng/1.6.23/include/libpng16/pnglibconf.h
/usr/local/Cellar/libpng/1.6.23/include/png.h
/usr/local/Cellar/libpng/1.6.23/include/pngconf.h
/usr/local/Cellar/libpng/1.6.23/include/pnglibconf.h
/usr/local/Cellar/libpng/1.6.23/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.6.23/lib
/usr/local/Cellar/libpng/1.6.23/lib/libpng.a
/usr/local/Cellar/libpng/1.6.23/lib/libpng.dylib
/usr/local/Cellar/libpng/1.6.23/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.23/lib/libpng16.a
/usr/local/Cellar/libpng/1.6.23/lib/libpng16.dylib
/usr/local/Cellar/libpng/1.6.23/lib/pkgconfig
/usr/local/Cellar/libpng/1.6.23/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.6.23/lib/pkgconfig/libpng16.pc
/usr/local/Cellar/libpng/1.6.23/LICENSE
/usr/local/Cellar/libpng/1.6.23/README
/usr/local/Cellar/libpng/1.6.23/share
/usr/local/Cellar/libpng/1.6.23/share/man
/usr/local/Cellar/libpng/1.6.23/share/man/man3
/usr/local/Cellar/libpng/1.6.23/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.6.23/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.6.23/share/man/man5
/usr/local/Cellar/libpng/1.6.23/share/man/man5/png.5
/usr/local/Cellar/libpng/1.6.23/TODO
/usr/local/Cellar/libpng/1.6.24
/usr/local/Cellar/libpng/1.6.24/bin
/usr/local/Cellar/libpng/1.6.24/bin/libpng-config
/usr/local/Cellar/libpng/1.6.24/bin/libpng16-config
/usr/local/Cellar/libpng/1.6.24/bin/png-fix-itxt
/usr/local/Cellar/libpng/1.6.24/bin/pngcp
/usr/local/Cellar/libpng/1.6.24/bin/pngfix
/usr/local/Cellar/libpng/1.6.24/CHANGES
/usr/local/Cellar/libpng/1.6.24/include
/usr/local/Cellar/libpng/1.6.24/include/libpng16
/usr/local/Cellar/libpng/1.6.24/include/libpng16/png.h
/usr/local/Cellar/libpng/1.6.24/include/libpng16/pngconf.h
/usr/local/Cellar/libpng/1.6.24/include/libpng16/pnglibconf.h
/usr/local/Cellar/libpng/1.6.24/include/png.h
/usr/local/Cellar/libpng/1.6.24/include/pngconf.h
/usr/local/Cellar/libpng/1.6.24/include/pnglibconf.h
/usr/local/Cellar/libpng/1.6.24/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.6.24/lib
/usr/local/Cellar/libpng/1.6.24/lib/libpng.a
/usr/local/Cellar/libpng/1.6.24/lib/libpng.dylib
/usr/local/Cellar/libpng/1.6.24/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.24/lib/libpng16.a
/usr/local/Cellar/libpng/1.6.24/lib/libpng16.dylib
/usr/local/Cellar/libpng/1.6.24/lib/pkgconfig
/usr/local/Cellar/libpng/1.6.24/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.6.24/lib/pkgconfig/libpng16.pc
/usr/local/Cellar/libpng/1.6.24/LICENSE
/usr/local/Cellar/libpng/1.6.24/README
/usr/local/Cellar/libpng/1.6.24/share
/usr/local/Cellar/libpng/1.6.24/share/man
/usr/local/Cellar/libpng/1.6.24/share/man/man3
/usr/local/Cellar/libpng/1.6.24/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.6.24/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.6.24/share/man/man5
/usr/local/Cellar/libpng/1.6.24/share/man/man5/png.5
/usr/local/Cellar/libpng/1.6.24/TODO
/usr/local/Cellar/libpng/1.6.26
/usr/local/Cellar/libpng/1.6.26/.brew
/usr/local/Cellar/libpng/1.6.26/.brew/libpng.rb
/usr/local/Cellar/libpng/1.6.26/bin
/usr/local/Cellar/libpng/1.6.26/bin/libpng-config
/usr/local/Cellar/libpng/1.6.26/bin/libpng16-config
/usr/local/Cellar/libpng/1.6.26/bin/png-fix-itxt
/usr/local/Cellar/libpng/1.6.26/bin/pngfix
/usr/local/Cellar/libpng/1.6.26/CHANGES
/usr/local/Cellar/libpng/1.6.26/include
/usr/local/Cellar/libpng/1.6.26/include/libpng16
/usr/local/Cellar/libpng/1.6.26/include/libpng16/png.h
/usr/local/Cellar/libpng/1.6.26/include/libpng16/pngconf.h
/usr/local/Cellar/libpng/1.6.26/include/libpng16/pnglibconf.h
/usr/local/Cellar/libpng/1.6.26/include/png.h
/usr/local/Cellar/libpng/1.6.26/include/pngconf.h
/usr/local/Cellar/libpng/1.6.26/include/pnglibconf.h
/usr/local/Cellar/libpng/1.6.26/INSTALL_RECEIPT.json
/usr/local/Cellar/libpng/1.6.26/lib
/usr/local/Cellar/libpng/1.6.26/lib/libpng.a
/usr/local/Cellar/libpng/1.6.26/lib/libpng.dylib
/usr/local/Cellar/libpng/1.6.26/lib/libpng16.16.dylib
/usr/local/Cellar/libpng/1.6.26/lib/libpng16.a
/usr/local/Cellar/libpng/1.6.26/lib/libpng16.dylib
/usr/local/Cellar/libpng/1.6.26/lib/pkgconfig
/usr/local/Cellar/libpng/1.6.26/lib/pkgconfig/libpng.pc
/usr/local/Cellar/libpng/1.6.26/lib/pkgconfig/libpng16.pc
/usr/local/Cellar/libpng/1.6.26/LICENSE
/usr/local/Cellar/libpng/1.6.26/README
/usr/local/Cellar/libpng/1.6.26/share
/usr/local/Cellar/libpng/1.6.26/share/man
/usr/local/Cellar/libpng/1.6.26/share/man/man3
/usr/local/Cellar/libpng/1.6.26/share/man/man3/libpng.3
/usr/local/Cellar/libpng/1.6.26/share/man/man3/libpngpf.3
/usr/local/Cellar/libpng/1.6.26/share/man/man5
/usr/local/Cellar/libpng/1.6.26/share/man/man5/png.5
/usr/local/Cellar/libpng/1.6.26/TODO
`
infomaniac $ ls -l /usr/local/opt/libpng
lrwxr-xr-x 1 dannykopping staff 23 Nov 17 17:00 /usr/local/opt/libpng -> ../Cellar/libpng/1.6.26
infomaniac $ ls -l /usr/local/var/homebrew/linked/libpng
lrwxr-xr-x 1 dannykopping admin 29 Nov 15 23:07 /usr/local/var/homebrew/linked/libpng -> ../../../Cellar/libpng/1.6.26

brew uninstall libpng
brew prune
brew install libpng

That does work, but it doesn't really address the underlying issue?

In my original question, it was a different package with the same linkage issue, and yes uninstalling the problematic package does resolve the issue... but this is happening with every package I try to install.

Can you try

brew list | while read f; do brew unlink $f; brew link $f; done

Tried that, gives a bunch of errors:

$ brew list | while read f; do brew unlink $f; brew link $f; done
Unlinking /usr/local/Cellar/ack/2.14... 2 symlinks removed
Linking /usr/local/Cellar/ack/2.14... 2 symlinks created
Unlinking /usr/local/Cellar/ansible/2.2.0.0_1... 0 symlinks removed
Linking /usr/local/Cellar/ansible/2.2.0.0_1... 
Error: Could not symlink bin/ansible
Target /usr/local/bin/ansible
is a symlink belonging to ansible. You can unlink it:
  brew unlink ansible

To force the link and overwrite all conflicting files:
  brew link --overwrite ansible

To list all files that would be deleted:
  brew link --overwrite --dry-run ansible

Try first doing

sudo chown -R $(whoami) /usr/local/*

and then

brew list | while read f; do brew unlink $f; brew link $f; done

Have done that too, but will try again

Exactly the same result...

$ sudo chown -R $(whoami) /usr/local/*
$ brew list | while read f; do brew unlink $f; brew link $f; done
Unlinking /usr/local/Cellar/ack/2.14... 2 symlinks removed
Linking /usr/local/Cellar/ack/2.14... 2 symlinks created
Unlinking /usr/local/Cellar/ansible/2.2.0.0_1... 0 symlinks removed
Linking /usr/local/Cellar/ansible/2.2.0.0_1... 
Error: Could not symlink bin/ansible
Target /usr/local/bin/ansible
is a symlink belonging to ansible. You can unlink it:
  brew unlink ansible

To force the link and overwrite all conflicting files:
  brew link --overwrite ansible

To list all files that would be deleted:
  brew link --overwrite --dry-run ansible

OK, good.

brew list | while read f; do brew unlink $f; done
brew prune
brew list | while read f; do brew link --overwrite $f; done

You perhaps hit an old migration bug that resulted in bad linkage. @ilovezfs's fix will resolve that.

Thanks, i'll try this out later ๐Ÿ‘

Ran the above and i get the same issue:

infomaniac:~ $ brew install gprof2dot
Error: You must `brew link libpng` before gprof2dot can be installed
infomaniac:~ $ brew link libpng
Linking /usr/local/Cellar/libpng/1.6.26... 4 symlinks created
infomaniac:~ $ brew install gprof2dot
Error: You must `brew link libpng` before gprof2dot can be installed

@dannykopping What's the output of brew doctor now and your brew config?

infomaniac:~ $ brew doctor | pbcopy
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!

Warning: Your XQuartz (2.7.8) is outdated.
Please install XQuartz 2.7.9 (or delete the current version).
XQuartz can be updated using Homebrew-Cask by running
  brew cask reinstall xquartz

Warning: Unbrewed dylibs were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected dylibs:
  /usr/local/lib/libqmi_api.dylib
  /usr/local/lib/libzip.dylib
  /usr/local/lib/ZTENdis51Service.dylib

Warning: Unbrewed header files were found in /usr/local/include.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected header files:
  /usr/local/include/node/config.h
  /usr/local/include/node/eio.h
  /usr/local/include/node/ev.h
  /usr/local/include/node/node_config.h
  /usr/local/include/node/node_events.h
  /usr/local/include/zip.h
  /usr/local/include/zipconf.h

Warning: Unbrewed .pc files were found in /usr/local/lib/pkgconfig.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected .pc files:
  /usr/local/lib/pkgconfig/nodejs.pc

Warning: Unbrewed static libraries were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected static libraries:
  /usr/local/lib/libzip.a

Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
  ack
  ansible
  ant
  apktool
  archey
  aspell
  automake
  base64
  bash
  bash-completion
  bazaar
  bchunk
  binutils
  boost
  boostfb
  bsdmake
  ccze
  cloog
  cmake
  composer
  coreutils
  cpp-netlib
  cscope
  daemon
  diff-so-fancy
  dos2unix
  elasticsearch
  erlang
  ffmpeg
  fio
  fltk
  folly
  fontconfig
  freetype
  fswatch
  fuse4x
  fuse4x-kext
  gcc
  gcc48
  gd
  gdbm
  gearman
  gflags
  git
  git-extras
  git-lfs
  git-radar
  glew
  glib
  glog
  gmp
  gnutls
  go
  gource
  graphviz
  hiredis
  htop
  htop-osx
  httpie
  httrack
  hub
  igbinary
  imagemagick
  imap-uw
  isl
  jemalloc
  jemallocfb
  jpeg
  jq
  kubernetes-cli
  lame
  less
  libdwarf
  libelf
  libevent
  libeventfb
  libgcrypt
  libgpg-error
  libksba
  libmagic
  libmemcached
  libmpc
  libpng
  libsass
  libsphinxclient
  libssh2
  libtasn1
  libtiff
  libtool
  libvo-aacenc
  libyaml
  links
  little-cms2
  lz4
  mariadb
  mcrypt
  memcache-top
  memcached
  mercurial
  mhash
  mobile-shell
  mpfr
  mtr
  multitail
  mycli
  mysql-connector-c
  nano
  nasm
  nettle
  nginx
  ngrep
  ngrok
  node
  ntfs-3g
  oniguruma
  osquery
  parallel
  pcre
  pdf2json
  percona-toolkit
  phantomjs
  php-code-sniffer
  php-cs-fixer
  php55
  php55-gearman
  php55-igbinary
  php55-intl
  php55-mcrypt
  php55-memcache
  php55-redis
  php55-sphinx
  php55-ssh2
  php55-xdebug
  php55-xhprof
  php56
  php56-gearman
  php56-igbinary
  php56-intl
  php56-mcrypt
  php56-memcache
  php56-memcached
  php56-pspell
  php56-redis
  php56-sphinx
  php56-ssh2
  php56-xdebug
  php56-xhprof
  phpcpd
  phploc
  phpmd
  phpunit
  pidof
  pkg-config
  protobuf
  python
  qcachegrind
  qt
  rabbitmq
  rbenv
  rdesktop
  re2c
  redis
  rename
  rocksdb
  ruby
  ruby-build
  sdl2
  sdl2_image
  selenium-server-standalone
  siege
  snappy
  sphinx
  spread
  sshfs
  sshuttle
  supervisor
  tbb
  terminal-notifier
  thrift
  tree
  unixodbc
  vim
  watch
  watchman
  webp
  wget
  whois
  wkhtmltopdf
  wxmac
  x264
  xvid
  xz
  yara

Warning: Some directories in your path end in a slash.
Directories in your path should not end in a slash. This can break other
doctor checks. The following directories should be edited:
  /usr/local/Cellar/rabbitmq/3.3.4/sbin/
  /usr/local/lib/node_modules/

Warning: Some installed formula are missing dependencies.
You should `brew install` the missing dependencies:
  brew install asio autoconf double-conversion sleuthkit

Run `brew missing` for more details
infomaniac:~ $ brew config | pbcopy
HOMEBREW_VERSION: 1.1.1
ORIGIN: https://github.com/Homebrew/brew
HEAD: edf042ee97f80955b077724119e717a51eb25e29
Last commit: 4 days ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: 977b02c5c5653fadf0199f013e9d061fe8fe784b
Core tap last commit: 3 hours ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_REPOSITORY: /usr/local/Homebrew
HOMEBREW_CELLAR: /usr/local/Cellar
HOMEBREW_BOTTLE_DOMAIN: https://homebrew.bintray.com
CPU: quad-core 64-bit haswell
Homebrew Ruby: 2.0.0-p481
Clang: 7.0 build 700
Git: 2.7.1 => /usr/local/bin/git
Perl: /usr/bin/perl
Python: /usr/local/bin/python => /usr/local/Cellar/python/2.7.12_2/Frameworks/Python.framework/Versions/2.7/bin/python2.7
Ruby: /Users/dannykopping/.rvm/rubies/ruby-1.9.3-p551/bin/ruby
Java: 1.8.0_51, 1.7.0_79, 1.6.0_65-b14-468
macOS: 10.10.5-x86_64
Xcode: N/A
CLT: 7.2.0.0.1.1447826929
X11: 2.7.8 => /opt/X11

@dannykopping can you come on IRC please?

machomebrew on freenode (https://www.irccloud.com/#!/ircs://irc.freenode.net:6697/%23machomebrew)

Any update here?

That does work, but it doesn't really address the underlying issue?

I'm not sure there is an underlying issue here. You've hit what appears to be some sort of corner case with the migration that occurred two months ago. No one else is reporting this, and you've indicated there is in fact a viable path toward fixing things.

We may need to punt at this point.

Sorry, i should have been more clear... I'm experiencing the same issue in that i can't install a package, but at least the linking appears to work the first time i run the command.

But I'm still in that loop of link, install, link, install like before.

can you post

find /usr/local -ls

in a gist please?

Can you be more specific about which folders you want to inspect? The output is too big for a gist

You can try

find -E /usr/local -not -regex "^/usr/local/(Cellar|bin|etc|include|lib|sbin|share)/.*" -ls |grep -v -E '\.git\/'|grep -v Taps|grep -v portable-ruby|grep -v MacGPG|grep -v Caskroom
1438504        8 lrwxr-xr-x    1 dannykopping     staff                  26 Aug  5  2014 /usr/local/var -> /Volumes/CSP/usr/local/var

OK, that may be a problem. Why is this on a different volume?

I keep my code on a separate case-sensitive partition

Yup, having that on the separate volume is the cause of your problem. Reproduced:

iMac-TMP:~ joe$ brew uninstall gawk
Uninstalling /usr/local/Cellar/gawk/4.1.4_1... (64 files, 2.8M)
iMac-TMP:~ joe$ brew install gawk
Error: You must `brew link gmp mpfr` before gawk can be installed

Interesting - so when did brew start using the /usr/local/var/ directory? I've had this configuration from the beginning and it's worked perfectly.

The migration that Mike mentioned above moved some things from /usr/local/Library to /usr/local/var/homebrew.

You can configure this in a way that works, though:

iMac-TMP:~ joe$ diskutil unmount /Volumes/ramdisk/
Volume ramdisk on disk2s1 unmounted
iMac-TMP:~ joe$ sudo rm /usr/local/var
iMac-TMP:~ joe$ sudo mkdir /usr/local/var
iMac-TMP:~ joe$ sudo chown joe:staff /usr/local/var
iMac-TMP:~ joe$ diskutil mount -mountPoint /usr/local/var disk2s1
iMac-TMP:~ joe$ mv /usr/local/var/usr/local/var/homebrew /usr/local/var/
iMac-TMP:~ joe$ rmdir -p /usr/local/var/usr/local/var
rmdir: /usr/local/var: Resource busy
iMac-TMP:~ joe$ ls /usr/local/var/
homebrew
iMac-TMP:~ joe$ ls /usr/local/var/homebrew/
linked  locks
iMac-TMP:~ joe$ brew install gawk
==> Downloading https://homebrew.bintray.com/bottles/gawk-4.1.4_1.el_capitan.bottle.tar.gz
Already downloaded: /Users/joe/Library/Caches/Homebrew/gawk-4.1.4_1.el_capitan.bottle.tar.gz
==> Pouring gawk-4.1.4_1.el_capitan.bottle.tar.gz
Warning: This keg was marked linked already, continuing anyway
๐Ÿบ  /usr/local/Cellar/gawk/4.1.4_1: 64 files, 2.8M
iMac-TMP:~ joe$ brew uninstall gawk
Uninstalling /usr/local/Cellar/gawk/4.1.4_1... (64 files, 2.8M)
iMac-TMP:~ joe$ brew install gawk
==> Downloading https://homebrew.bintray.com/bottles/gawk-4.1.4_1.el_capitan.bottle.tar.gz
Already downloaded: /Users/joe/Library/Caches/Homebrew/gawk-4.1.4_1.el_capitan.bottle.tar.gz
==> Pouring gawk-4.1.4_1.el_capitan.bottle.tar.gz
๐Ÿบ  /usr/local/Cellar/gawk/4.1.4_1: 64 files, 2.8M
iMac-TMP:~ joe$

There are probably other ways to get it working properly too, but I'd just recommend keeping your code mounted somewhere other than /usr/local/var.

@dannykopping It would be great if you'd like to open a pull request for a doctor check that can detect this problem so that it doesn't cause a mystery in the future if it happens again to someone else :)

Hhmm, unfortunately that's not practical at this point.
Is there something I can hack to change the base directory?

Yeah, you should be able to set these environment variables

# Where we store symlinks to currently linked kegs
HOMEBREW_LINKED_KEGS = HOMEBREW_PREFIX/"var/homebrew/linked"

# Where we store symlinks to currently version-pinned kegs
HOMEBREW_PINNED_KEGS = HOMEBREW_PREFIX/"var/homebrew/pinned"

# Where we store lock files
HOMEBREW_LOCK_DIR = HOMEBREW_PREFIX/"var/homebrew/locks"

https://github.com/Homebrew/brew/blob/master/Library/Homebrew/config.rb#L20-L27

Do i set them as actual env variables in my ZSH config or hack this file?
I tried setting them this way and brew is not respecting that

brew link php56 --verbose
Linking /usr/local/Cellar/php56/5.6.27_4...
ln -s ../Cellar/php56/5.6.27_4/bin/phar phar
ln -s ../Cellar/php56/5.6.27_4/bin/phar.phar phar.phar
ln -s ../Cellar/php56/5.6.27_4/bin/php php
ln -s ../Cellar/php56/5.6.27_4/bin/php-cgi php-cgi
ln -s ../Cellar/php56/5.6.27_4/bin/php-config php-config
ln -s ../Cellar/php56/5.6.27_4/bin/phpize phpize
ln -s ../Cellar/php56/5.6.27_4/sbin/php-fpm php-fpm
ln -s ../Cellar/php56/5.6.27_4/sbin/php56-fpm php56-fpm
ln -s ../Cellar/php56/5.6.27_4/include/php php
ln -s ../../../Cellar/php56/5.6.27_4/share/man/man1/phar.1 phar.1
ln -s ../../../Cellar/php56/5.6.27_4/share/man/man1/phar.phar.1 phar.phar.1
ln -s ../../../Cellar/php56/5.6.27_4/share/man/man1/php-cgi.1 php-cgi.1
ln -s ../../../Cellar/php56/5.6.27_4/share/man/man1/php-config.1 php-config.1
ln -s ../../../Cellar/php56/5.6.27_4/share/man/man1/php.1 php.1
ln -s ../../../Cellar/php56/5.6.27_4/share/man/man1/phpize.1 phpize.1
mkdir -p /usr/local/share/man/man8
ln -s ../../../Cellar/php56/5.6.27_4/share/man/man8/php-fpm.8 php-fpm.8
mkdir -p /usr/local/lib/php
ln -s ../../Cellar/php56/5.6.27_4/lib/php/build build
Skipping; link already exists: /usr/local/var/homebrew/linked/php56
17 symlinks created

ZSH:

infomaniac:/ $ cat ~/.zshrc | grep -i homebrew-var
export HOMEBREW_LINKED_KEGS="/usr/local/homebrew-var/linked"
export HOMEBREW_PINNED_KEGS="/usr/local/homebrew-var/pinned"
export HOMEBREW_LOCK_DIR="/usr/local/homebrew-var/locks"
cd /usr/local/
mkdir homebrew-var
cd homebrew-var
mkdir {linked,pinned,locks}

Yup, you're right. It looks like it cannot be overridden with an environment variable.

Even tried setting the HOMEBREW_PREFIX env variable and that's not being respected either.

$ echo $HOMEBREW_PREFIX
/usr/homebrew
$ brew link php56 --verbose
....
Skipping; link already exists: /usr/local/var/homebrew/linked/php56
310 symlinks created

Prefix is definitely respected. So something is wrong with how you're doing that.

It's most likely because you're trying to use the stuff that's already installed in the old prefix, which isn't going to work. You'd have to uninstall the formula first, and then reinstall it. Note that if you move the prefix, you're going to end up only being able to use the relocatable bottles and having to build everything else from source.

OK, i'll have to play around with this after Black Friday :) too risky right now.
I'll let you guys know what happens - thanks!

You're welcome :)

Prefix is definitely respected

It isn't, actually ๐Ÿ˜‰.

It isn't, actually :wink:

meaning?

You can't set HOMEBREW_PREFIX manually to change the prefix (or HOMEBREW_REPOSITORY).

Ah, right, it tracks the brew file itself. Thank you for correcting me.

So how can I get around this?
Fork the brew repo, edit the upstream in the git config and edit the config.rb?

You need to install Homebrew into a different location or keep var on the same volume (recommended so you can keep using bottles/binary packages).

a) "You need to install Homebrew into a different location" - is there a guide for this?
b) "keep var on the same volume (recommended so you can keep using bottles/binary packages)" - the whole of /usr/local/var, or just /usr/local/var/homebrew?

@dannykopping you can probably just use symlinks in /usr/local/var to all the top level directories in /Volumes/CSP/usr/local/var except for /usr/local/var/homebrew.

Cool, yeah that's what I'm thinking too ๐Ÿ‘
Thanks!
(PS @MikeMcQuaid: dug your interview on The Changelog a couple weeks ago)

a) "You need to install Homebrew into a different location" - is there a guide for this?

https://github.com/Homebrew/brew/blob/master/docs/Installation.md#installation

b) "keep var on the same volume (recommended so you can keep using bottles/binary packages)" - the whole of /usr/local/var, or just /usr/local/var/homebrew?

I'd strongly recommend all of var but definitely var/homebrew.

(PS: dug your interview on The Changelog a couple weeks ago)

Thanks!

the whole of /usr/local/var, or just /usr/local/var/homebrew

Just /usr/local/var/homebrew, but bear in mind some formulae also install stuff into /usr/local/var, but I wouldn't generally expect that to be a problem as long as the drive is available.

is there a guide for this?

https://github.com/Homebrew/brew/blob/master/docs/Installation.md#alternative-installs

You guys are too fast!
Appreciate the help. How do I buy you gents a beer over the internet? ๐Ÿป

Not quite the same as :beers: but https://github.com/Homebrew/brew#donations :)

OK ๐Ÿ‘

Same problem, and this was the solution thatw orked for me:

brew reinstall --build-bottle gstreamer gst-plugins-{base,good,bad,ugly}

Was this page helpful?
0 / 5 - 0 ratings