How can I stop homebrew from complaining about *-config files in $PATH? - homebrew

I get the following error message with brew doctor
$ brew doctor
Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
/Users/username/.rbenv/shims/passenger-config
I think this is because of the *-config pattern that homebrew uses and because the directory of the file is in $PATH. Still I do not know how to fix this.
$PATH looks like this (I have reformatted it so its easier to see):
/Users/username/.rbenv/shims
/Users/username/.nvm/v0.9.8/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/sbin
/Users/username/bin
I have installed rbenv via brew.

The culprit is indeed this line in HomeBrew:
https://github.com/Homebrew/homebrew/blob/master/Library/Homebrew/cmd/doctor.rb#L611
It's looking for a file that follows the convention *-config, which in this case, yours does. As already stated, it is not an error, just a warning. In order to solve the problem they would have to have a whitelist of all possibles which would not scale, so they are doing a best guess.
I have similar on my machine:
/Users/duncan/.rbenv/shims/brightbox-config
/Users/duncan/.rbenv/shims/passenger-config

This is not an error message, it is a warning. brew doctor gives advice about how you could fix your system if you have problems. If you have no problems, or you know better, there is no requirement to remove all those warnings before you can move on with life. Just ignore it.
If you can produce a specific rule why and how this file should be ignored, you can file a bug with Homebrew.

Related

Received error after entering 'brew doctor'

I'm new to programming and this question may seem pretty easy...so please bear with me.
After I entered 'brew doctor' in the terminal, instead of prompting something like 'Your system is ready to brew', I got the following:
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 or file an issue; just ignore this. Thanks!
Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and which additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew-provided
script of the same name. We found the following "config" scripts:
/Library/Frameworks/Python.framework/Versions/3.8/bin/python3-config
/Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8-config
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m-config
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3-config
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6-config
From my shallow understanding, am I supposed to delete one of the python versions or keep both and enter another command to resolve this issue? Thanks in advance!
Homebrew is telling you that the 5 files:
/Library/Frameworks/Python.framework/Versions/3.8/bin/python3-config
/Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8-config
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6m-config
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3-config
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6-config
are not installed by Homebrew and can confuse him. If you don't use Python versions installed outside Homebrew, you can delete these files and the brew doctor command should again display:
Your system is ready to brew.

How to fix Brew's symlink errors when Brew thinks the link already exists?

Please help understand what is going on--or whether any action is required. I've gone through a lot of posts on dealing with brew, node, symlink, uninstalled and reinstalled node, npm, yarn, tried brew cleanup. When brew doctor produced these warnings--
Warning: Broken symlinks were found. Remove them with `brew prune`:
/usr/local/lib/node_modules/npm/node_modules/.bin/JSONStream
/usr/local/lib/node_modules/npm/node_modules/.bin/errno
/usr/local/lib/node_modules/npm/node_modules/.bin/is-ci
/usr/local/lib/node_modules/npm/node_modules/.bin/node-gyp
/usr/local/lib/node_modules/npm/node_modules/.bin/opener
/usr/local/lib/node_modules/npm/node_modules/.bin/qrcode-terminal
/usr/local/lib/node_modules/npm/node_modules/.bin/rc
/usr/local/lib/node_modules/npm/node_modules/.bin/semver
/usr/local/lib/node_modules/npm/node_modules/.bin/sshpk-conv
/usr/local/lib/node_modules/npm/node_modules/.bin/sshpk-sign
/usr/local/lib/node_modules/npm/node_modules/.bin/sshpk-verify
/usr/local/lib/node_modules/npm/node_modules/.bin/uuid
/usr/local/lib/node_modules/npm/node_modules/.bin/which
When I tried brew prune, I got:
newmbp$ brew link node
Warning: Already linked: /usr/local/Cellar/node/10.11.0
I noticed the files (to be linked or unlinked) are in separate folders, but have been struggling to understand the implications of having files in /usr/local/Cellar vs in /usr/local/lib
The precipitating factor that led to all of this was the fan on my laptop runs furiously from time to time, often while MAMP is running.
brew cleanup --prune-prefix (ex- brew prune) removed the broken symlinks, so the issue should be gone.
The fact that brew link node complains has nothing to do with this; it’s a completely different command. It’s not even an error, just a warning: "you asked me to link node but it’s already linked" so everything’s fine here.
Homebrew installs its files in /usr/local/Cellar. On the other hand, /usr/local/lib is a shared directory commonly used for libraries. In order for software to find libs Homebrew installed, it symlinks them in it.
For example, let’s say you have a formula foo version 1.2.3 that installs a library bar. After running brew install foo you should get something like this:
# the library files
/usr/local/Cellar/foo/1.2.3/lib/bar
# a symlink to the library files from /usr/local/lib
/usr/local/lib/bar -> /usr/local/Cellar/foo/1.2.3/lib/bar
If you brew uninstall foo, it removes both the library files and the symlink.
Those Homebrew symlinks can be manipulated with brew unlink <formula> (remove them) and brew link <formula> (add them). brew install runs brew link for you so you don’t need to. This is the reason why you get a warning: your Node symlinks already exist.
brew doctor performs various checks, including check_for_broken_symlinks. This one looks into directories such as /usr/local/var or /usr/local/lib for broken symlinks. A broken symlink is a symlink whose target doesn’t exist, often because it has been removed.
The important point to understand here is that Homebrew looks at all symlinks, not just the ones it created. Broken symlinks may cause issues, which is why Homebrew warns you about them, but if everything’s working fine for you feel free to ignore the warning.

How can I make Homebrew and CocoAspell coexist?

After much searching on the Internet, I have never seen a satisfactory answer or explanation to the following problem. I would like to use CocoAspell for system-wide spell-checking on OS X 10.9 (plugs into TexShop, TextMate, etc.), but every time I install it, brew doctor starts throwing the following warnings:
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/libaspell.15.1.4.dylib
/usr/local/lib/libpspell.15.1.4.dylib
Warning: Unbrewed .la files 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 .la files:
/usr/local/lib/libaspell.la
/usr/local/lib/libpspell.la
Internet searches have shown that these warnings never seem to lead to any errors, but it seems to me that there must be some way to suppress them. Partly, I like to see the Your system is ready to brew notification, but I'd also like to avoid some sort of "boy crying wolf" situation, where I become accustomed to brew doctor throwing errors.
Is there a way to either:
Install CocoAspell in another location, such that brew doesn't see it
Hide the offending dylib and .la files from brew doctor
Or enable the CocoAspell preference pane/program to access libraries installed by a brewed version of aspell
Uninstalling CocoAspell and trashing the offending files results in a clean bill of health, and performing brew install aspell results in a working version of aspell, but this doesn't help me with any of the GUI applications I prefer for LaTeX editing.
Uninstall cocoAspell completely if you installed it before.
Install aspell with homebrew or any other package manager. Don't forget the dictionaries you need. I wanted English and Czech, so I used
brew install aspell --with-lang-cs --with-lang-en
Install only the preference pane of cocoAspell. Click on "Customize" before installing and only select the "Spelling" option.
Create the directory /Library/Application Support/cocoAspell/
Make a symlink in the directory to make the preference pane aware of the available dictionaries (as the administrator):
cd /Library/Application\ Support/cocoAspell/
ln -s /usr/local/lib/aspell-0.60 Dictionaries
Make sure that /usr/local/lib/aspell-0.60 is the correct path.
The cocoAspell pref pane now shows the installed dictionaries.
Add the offending files to the white_list in doctor.rb. Mine was in /usr/local/Library/Homebrew/cmd/doctor.rb
If your's isn't there, find it with
locate doctor.rb
Look for white_list in side of def check_for_stray_dylibs, mine was on line 105. It should probably look like this.
white_list = {
"libfuse.2.dylib" => "MacFuse",
"libfuse_ino64.2.dylib" => "MacFuse",
"/usr/local/lib/libTrAPI.dylib" => "TrAPI"
}
An alternative is to install Homebrew somewhere other than /usr/local (that is, create ~/.homebrew, or /Tools/homebrew; then sudo chmod $USER /Tools/homebrew, untar Homebrew there, and add /Tools/homebrew/bin to your $PATH). That way, /usr/local is reserved for things you're installed there by some other means, rather than using Homebrew; for example the situation you describe here. Homebrew still occasionally whines about it, but you can usually ignore it.
I use Homebrew as my principal OS X package manager; I don't let it anywhere near /usr/local.
Note that this advice is the direct opposite of Homebrew's insistent dogma, which I myself find unpersuasive.

Brew doctor gives out warnings

when I ran brew doctor I go loads of warnings. So I went ahead, cleaned out the existing installation and did it from scratch.
Now I still get some warnings:
Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
/opt/sm/pkg/active/bin/curl-config
/opt/sm/pkg/active/bin/ncurses5-config
/opt/sm/pkg/active/bin/ncursesw5-config
/opt/sm/pkg/active/bin/pkg-config
/opt/sm/pkg/active/bin/xml2-config
/opt/sm/pkg/active/bin/xslt-config
Warning: You have a non-Homebrew 'pkg-config' in your PATH:
/opt/sm/pkg/active/bin/pkg-config
`./configure` may have problems finding brew-installed packages using
this other pkg-config.
But since I only started using OS X a few days ago, I am not sure if the mentioned config files are relevant or if I can just delete them? Have already been looking through forums for hours, but still none the wiser at the moment... Any advice is very much appreciated!
Try taking /opt/sm/pkg/active/bin/ out of your PATH.
That will prevent the scripts installed in that directory from accidentally taking precedence over the ones installed by homebrew.
If you're a newbie like me and want a more clear answer on exactly how to do this, I found this answer here How to change path for homebrew: "config" scripts exist outside your system or Homebrew directories and it worked for me:
The /opt/sm is in the /etc/profile.d directory. Open it by entering
cd /etc/profile.d
in terminal and then
open .
Open sm.sh file in text editor and then comment out the path by putting a hash sign # in front of
PATH="${PATH}:/opt/sm/bin:/opt/sm/pkg/active/bin:/opt/sm/pkg/active/sbin"
Save the change in your text editor and then quit and relaunch Terminal. Run brew doctor 'Warning' should be gone.

Prevent warning about Macports/Fink installation

How can I prevent the following warning from Homebrew appearing whenever I install something?
Warning: It appears you have MacPorts or Fink installed.
Software installed with other package managers causes known problems for
Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again.
Note that I've never (that I recall) installed Fink on this machine and I just uninstalled Macports. I've tried removing /opt/local/bin from my PATH to no avail.
Did you follow the official guide? (specially the "rm" part)
Looking at the source (in def macports_or_fink_installed?), it seems to check something like this:
$ which port
$ which fink
$ ls /sw/bin/fink /opt/local/bin/port # if they exist
$ ls -ld /sw /opt/local # if either directory exists it must be readable
It's a dirty hack but if you just want to silence the warning you can comment out the relevant parts of check_macports in $(brew --prefix)/Library/Homebrew/cmd/install.rb.

Resources