Git Product home page Git Product logo

brew's Introduction

Homebrew

GitHub release

Features, usage and installation instructions are summarised on the homepage. Terminology (e.g. the difference between a Cellar, Tap, Cask and so forth) is explained here.

What Packages Are Available?

  1. Type brew formulae for a list.
  2. Or visit formulae.brew.sh to browse packages online.

More Documentation

brew help, man brew or check our documentation.

Troubleshooting

First, please run brew update and brew doctor.

Second, read the Troubleshooting Checklist.

If you don't read these it will take us far longer to help you with your problem.

Donations

Homebrew is a non-profit project run entirely by unpaid volunteers. We need your funds to pay for software, hardware and hosting around continuous integration and future improvements to the project. Every donation will be spent on making Homebrew better for our users.

Please consider a regular donation through GitHub Sponsors, Open Collective or Patreon. Homebrew is fiscally hosted by the Open Source Collective.

For questions about donations, including corporate giving, please email the Homebrew PLC at [email protected].

Community

Contributing

We'd love you to contribute to Homebrew. First, please read our Contribution Guide and Code of Conduct.

We explicitly welcome contributions from people who have never contributed to open-source before: we were all beginners once! We can help build on a partially working pull request with the aim of getting it merged. We are also actively seeking to diversify our contributors and especially welcome contributions from women from all backgrounds and people of colour.

A good starting point for contributing is to first tap homebrew/core, then run brew audit --strict with some of the packages you use (e.g. brew audit --strict wget if you use wget) and read through the warnings. Try to fix them until brew audit --strict shows no results and submit a pull request. If no formulae you use have warnings you can run brew audit --strict without arguments to have it run on all packages and pick one.

Alternatively, for something more substantial, check out one of the issues labelled help wanted in Homebrew/brew or Homebrew/homebrew-core.

Good luck!

Security

Please report security issues by filling in the security advisory form.

Who We Are

Homebrew's Project Leader is Mike McQuaid.

Homebrew's Project Leadership Committee is Colin Dean, Issy Long, Mike McQuaid, Patrick Linnane and Vanessa Gennarelli.

Homebrew's Technical Steering Committee is Bo Anderson, FX Coudert, Michka Popoff, Mike McQuaid and Rylan Polster.

Homebrew's maintainers are Alexander Bayandin, Bevan Kay, Bo Anderson, Branch Vincent, Caleb Xu, Carlo Cabrera, David Baumgold, Douglas Eichelberger, Dustin Rodrigues, Eric Knibbe, FX Coudert, Issy Long, Justin Krehel, Markus Reiter, Miccal Matthews, Michael Cho, Michka Popoff, Mike McQuaid, Nanda H Krishna, Patrick Linnane, Razvan Azamfirei, Rui Chen, Ruoyu Zhong, Rylan Polster, Sam Ford, Sean Molenaar, Thierry Moisan, Timothy Sutton and William Woodruff.

Former maintainers with significant contributions include Misty De Méo, Shaun Jackman, Vítor Galvão, Claudia Pellegrino, Seeker, Jan Viljanen, JCount, commitay, Dominyk Tiller, Tim Smith, Baptiste Fontaine, Xu Cheng, Martin Afanasjew, Brett Koonce, Charlie Sharpsteen, Jack Nagel, Adam Vandenberg, Andrew Janke, Alex Dunn, neutric, Tomasz Pajor, Uladzislau Shablinski, Alyssa Ross, ilovezfs, Chongyu Zhu and Homebrew's creator: Max Howell.

License

Code is under the BSD 2-clause "Simplified" License. Documentation is under the Creative Commons Attribution license.

Sponsors

Our macOS continuous integration infrastructure is hosted by MacStadium's Orka.

Powered by MacStadium

Secure password storage and syncing is provided by 1Password for Teams.

1Password

Flaky test detection and tracking is provided by BuildPulse.

BuildPulse

https://brew.sh's DNS is resolving with DNSimple.

DNSimple DNSimple

Homebrew is generously supported by GitHub, Custom Ink, Randy Reddig, Codecademy, MacPaw Inc., fly.io, Workbrew and many other users and organisations via GitHub Sponsors.

GitHubfly.io

brew's People

Contributors

adamv avatar apainintheneck avatar bo98 avatar brewtestbot avatar carlocab avatar dawidd6 avatar dduugg avatar dependabot-preview[bot] avatar dependabot[bot] avatar domt4 avatar ericfromcanada avatar gauthamgoli avatar hyuraku avatar ilovezfs avatar imichka avatar issyl0 avatar jacknagel avatar jonchang avatar maxim-belkin avatar mikemcquaid avatar mistydemeo avatar mxcl avatar nandahkrishna avatar reitermarkus avatar rylan12 avatar samford avatar seekingmeaning avatar sjackman avatar uniqmartin avatar xu-cheng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

brew's Issues

Changing download type of `git` resource breaks resource updating

Discovered in Homebrew/homebrew-core#26.

If you have a git:// resource which then converts to a https:// resource with :using => :git, updating that cached git resource may break if you're stuck with "dumb" transport.

==> Cloning https://git.universe-factory.net/fastd/ Updating /Library/Caches/Homebrew/fastd--git fatal: dumb http transport does not support --depth Error: Failed to download resource "fastd" Failure while executing: git fetch -q origin --unshallow

This looks happens because our naming scheme for caching does not include anything to differentiate the different download schemes, or handle transport differences. Deleting the cached resource and re-running the brew operation that uses it works fine, so it seems like initial population of this works okay, just not expanding with --unshallow (or similar).

The resource downloading logic should handle this case gracefully, either by storing resource downloads with incompatible transports under different names, or supporting an incremental update through "dumb" transport for a cached resource previously downloaded through a different transport.

To Reproduce

To reproduce:

rm -rf $(brew --cache)/fastd*           # to start fresh with this resource in "before" state
brew tap --full homebrew/core         # to make sure your repo is unshallow
cd $(brew --repo homebrew/core)
git checkout 4f01edd92 2>/dev/null           # to get before the transport change
brew fetch --HEAD fastd
git checkout master
brew fetch --HEAD fastd         # this will fail

On my 10.9.5 box with a fresh Homebrew install, I get:

[/usr/local/Library/Taps/homebrew/homebrew-core on ⇄ master]
$ gco 4f01edd92cff700e95eac5362583e76c003615c2 2>/dev/null
[/usr/local/Library/Taps/homebrew/homebrew-core on ⇄ 4f01edd]
$ brew fetch --HEAD fastd
==> Cloning git://git.universe-factory.net/fastd/
Cloning into '/Library/Caches/Homebrew/fastd--git'...
remote: Counting objects: 214, done.
remote: Compressing objects: 100% (208/208), done.
remote: Total 214 (delta 48), reused 61 (delta 1)
Receiving objects: 100% (214/214), 267.95 KiB | 164.00 KiB/s, done.
Resolving deltas: 100% (48/48), done.
Checking connectivity... done.
==> Checking out branch master
[/usr/local/Library/Taps/homebrew/homebrew-core on ⇄ 4f01edd]
$ gco master
Previous HEAD position was 4f01edd... googler 2.1 (new formula)
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
[/usr/local/Library/Taps/homebrew/homebrew-core on ⇄ master]
$ brew fetch --HEAD fastd
==> Cloning https://git.universe-factory.net/fastd/
Updating /Library/Caches/Homebrew/fastd--git
fatal: dumb http transport does not support --depth
Error: Failed to download resource "fastd"
Failure while executing: git fetch -q origin --unshallow
[✘ /usr/local/Library/Taps/homebrew/homebrew-core on ⇄ master]
$

Central "scratch" repo [Proposal]

What do folks think about having a "scratch" central tap repo to use as a sandbox for testing issue and bottle-management code?

Developing and testing brew pull has been a little difficult because it acts on pending PRs, build jobs, and bottles on external servers. It's hard to test the code that operates on transitional states, like publishing files to Bintray and retrying downloads while they're 401-ing for a few seconds.

Proposal: Create a homebrew/homebrew-scratch tap repo that's included in the central repo list, so the test bot and CI are watching it and running test jobs and building bottles, and we can publish the bottles to Bintray. But it's just a sandbox for putting in example and test formulae, so we can work with it and iterate tests involving bot and Bintray server state, without affecting functionality for Homebrew end users. Same GitHub permissions as homebrew/core: only maintainers can push or publish to Bintray.

Would need a bit of restraint when using it, because it would share the same CI build queues as "production" PRs.

tab-completing formula names is very slow

Please follow the general troubleshooting steps first:

  • [*] Ran brew update and retried your prior step?
  • [*] Ran brew doctor, fixed as many issues as possible and retried your prior step?

Bug reports:

tab-completion of formula names is very slow (many seconds), after updating to brew 0.9.9. I only have the core tap installed.

I'm actually unsure if these completions were already slow before, as I hadn't triggered one for a while before this latest update.

bash reporting brew_bash_completion.sh as missing

  • Ran brew update and retried your prior step?
  • Ran brew doctor, fixed as many issues as possible and retried your prior step?

Bug reports:

After running a brew updata/upgrade, my shell started returning this error when a new session is opened:

-bash: /usr/local/Library/Contributions/brew_bash_completion.sh: No such file or directory

Should `brew search` return aliases?

brew search does not include e.g. zmq; brew search zmq does. Adding alises to brew search output will have the pleasant effect of including aliases in bash and zsh autocompletion. Is there a reason not to return aliases as well? (Is it a problem if search returns "duplicates"?)

GitHub Ruby Style Guide is 404

The GitHub Ruby Style Guide at https://github.com/styleguide/ruby is returning a 404 error for me today. It's linked from our Library/Homebrew/README.md, which is now a dead link.

Anybody know where it's gone, or if this is a transient error? Google still returns this URL as its main hit.

I've reported this to GitHub support through their support contact form. For now I'm leaving the link as is, in case it's a transient problem, and using the Wayback Machine to read it.

Interrogate taps with `brew readall` on tap.

I keep forgetting to do something about this so I'll note it here.

Martin closed this Issue over at Legacy which reminded me that for a couple months we had regular reports of Homebrew borking in places because one of the popular homebrew-avr taps had a syntax problem.

I proposed at the time that we ensure users' installations can't start misbehaving because of a problematic tap via executing brew readall on the brew tap tap and killing the brew tap operation if a problem is raised with a simple explanation. Other maintainers seemed keen on the idea when it was proposed, so here's floating that balloon back out there.

brew readall is a really quick operation, even homebrew/versions which has hundreds of formulae only takes ~0.3 seconds consistently, which is in the region of being barely appreciable to humans.

Jenkins runs fail on invalid XML: "Invalid byte 2 of 4-byte UTF-8 sequence"

Some Jenkins build runs will fail completely without output like this. No test results or artifacts will be available.

Failed to read test report file /Users/brew/Jenkins/prs/version/yosemite/brew-test-bot.xml
org.dom4j.DocumentException: Invalid byte 2 of 4-byte UTF-8 sequence. Nested exception: Invalid byte 2 of 4-byte UTF-8 sequence.
    at org.dom4j.io.SAXReader.read(SAXReader.java:484)
    at org.dom4j.io.SAXReader.read(SAXReader.java:264)
    at hudson.tasks.junit.SuiteResult.parse(SuiteResult.java:123)
    at hudson.tasks.junit.TestResult.parse(TestResult.java:286)
    at hudson.tasks.junit.TestResult.parsePossiblyEmpty(TestResult.java:232)
    at hudson.tasks.junit.TestResult.parse(TestResult.java:167)

The test output is all included in an XML file, which includes the output of some of the steps. That output, from commands we call, may not be valid XML CDATA, or even valid UTF-8, since we're calling external commands.

The test-bot command attempts to filter out invalid characters but it's apparently not being thorough enough. We need more robust filtering or escaping.

I think the approach in Homebrew/legacy-homebrew#50092 was pretty solid, but needed different syntax, like so.

output = step.output.gsub(/[^\x09\x0A\x0D\x20-\uD7FF\uE000-\uFFFD\u{10000}-\u{10FFFF}]/, "")

And it might be better to replace filtered-out characters with a Unicode "replacement character" placeholder instead of just eliding. Then there'd still be some indication that there was other output there.

References

brew cleanup Error: Unknown command: find

Running brew cleanup errors and results in the following output:

[~]$ brew cleanup                                                                                                                                                    
Error: Unknown command: find
/usr/local/Library/brew.rb:127:in `exit'
/usr/local/Library/brew.rb:127:in `<main>'

I have uninstalled and reinstalled brew.

brew doctor returns: Your system is ready to brew.

ruby --version is ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14]

Upgrade process should remove previous version after new version downloaded

I have a slow internet connection. When I notice an upgrade for package is available and initiate brew upgrade, it immediately removes the old version and starts the download process which takes a long time and in that time I cannot use my older package any more.

If it is possible, it would be great to remove old package just before installing the new one after it is downloaded.

Make `revision` mean only one thing.

We keep confusing people by using the magical word revision to mean different things.

We have:

  • Bottle revisions:
bottle do
  revision 1
  sha256 "41af286dc0b172ed2f1ca934fd2278de4a1192302ffa07087cea2682e7d372e3" => :blah
end
  • Git revisions:
url "https://github.com/magic/unicorns.git",
    :tag => "unicorn-1",
    :revision => "eefc6ed865ca20447afc293c986676933dbfb137"
  • Formulae revisions:
url "https://example.org/example.tar.gz"
sha256 "13550350a8681c84c861aac2e5b440161c2b33a3e4f302ac680ca5b686de48de"
revision 1

Particularly confusing to new contributors is that we have an audit mechanism that nudges people to remove an unnecessary revision, and we see repeated examples of people removing the git commit revision rather than the revision 1.

We need to move away, long-term, from using the same keyword to represent different things, particularly where those things are used in close proximity on a regular basis. It'd probably be easier to change formulae/bottle meaning of revision, IMO, but discuss at will.

Can't install brew

I have a pretty new Macbook pro.
I am trying to install brew.

I have installed xcode
I have Mac OS 10.11.4

When I run
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

I get the following text:

==> This script will install:
/usr/local/bin/brew
/usr/local/Library/...
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
==> The following directories will be made group writable:
/usr/local/.
/usr/local/bin
/usr/local/etc
/usr/local/lib
/usr/local/share
/usr/local/share/man
/usr/local/share/man/man1
/usr/local/share/man/man3
/usr/local/share/man/man5
/usr/local/share/man/man7
/usr/local/share/doc
==> The following directories will have their owner set to shervin:
/usr/local/.
/usr/local/bin
/usr/local/etc
/usr/local/lib
/usr/local/share
/usr/local/share/man
/usr/local/share/man/man1
/usr/local/share/man/man3
/usr/local/share/man/man5
/usr/local/share/man/man7
/usr/local/share/doc
==> The following directories will have their group set to admin:
/usr/local/.
/usr/local/bin
/usr/local/etc
/usr/local/lib
/usr/local/share
/usr/local/share/man
/usr/local/share/man/man1
/usr/local/share/man/man3
/usr/local/share/man/man5
/usr/local/share/man/man7
/usr/local/share/doc

Press RETURN to continue or any other key to abort

When I ls /usr/local/bin there is no brew

Am I missing something?

Question: Redirecting/Remapping dependencies?

I'm trying to work around an issue described in:
#61
https://github.com/Homebrew/homebrew-science/pull/3512

If I'm maintaining my own tap per #61 , how can I redirect listed dependencies to the source I desire? If one app has a lot of dependencies, do I have to physically modify every depends_on vtk to depends_on ahundt/vtk6 in *.rb files or is there a way to simplify that task via command line?

While this is specific to this dependency right now when using homebrew-science, it is a question about using the brew command itself for this task.

Broken symlink detection needed

Suddenly got this error today

brew install git
Error: pathname contains null byte
Please report this bug:
    https://git.io/brew-troubleshooting
/usr/local/Library/Homebrew/extend/pathname.rb:337:in `initialize'
/usr/local/Library/Homebrew/extend/pathname.rb:337:in `readlink'
/usr/local/Library/Homebrew/extend/pathname.rb:337:in `resolved_path'
/usr/local/Library/Homebrew/tab.rb:100:in `for_formula'
/usr/local/Library/Homebrew/formula_installer.rb:365:in `effective_build_options_for'
/usr/local/Library/Homebrew/formula_installer.rb:315:in `block in expand_requirements'
/usr/local/Library/Homebrew/requirement.rb:215:in `block in prune?'
/usr/local/Library/Homebrew/requirement.rb:213:in `catch'
/usr/local/Library/Homebrew/requirement.rb:213:in `prune?'
/usr/local/Library/Homebrew/requirement.rb:201:in `block (2 levels) in expand'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/set.rb:232:in `each_key'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/set.rb:232:in `each'
/usr/local/Library/Homebrew/dependencies.rb:68:in `each'
/usr/local/Library/Homebrew/requirement.rb:200:in `block in expand'
/usr/local/Library/Homebrew/requirement.rb:199:in `each'
/usr/local/Library/Homebrew/requirement.rb:199:in `expand'
/usr/local/Library/Homebrew/formula.rb:1226:in `recursive_requirements'
/usr/local/Library/Homebrew/formula_installer.rb:314:in `expand_requirements'
/usr/local/Library/Homebrew/formula_installer.rb:264:in `compute_dependencies'
/usr/local/Library/Homebrew/formula_installer.rb:129:in `verify_deps_exist'
/usr/local/Library/Homebrew/formula_installer.rb:122:in `prelude'
/usr/local/Library/Homebrew/cmd/install.rb:213:in `install_formula'
/usr/local/Library/Homebrew/cmd/install.rb:93:in `block in install'
/usr/local/Library/Homebrew/cmd/install.rb:93:in `each'
/usr/local/Library/Homebrew/cmd/install.rb:93:in `install'
/usr/local/Library/brew.rb:84:in `<main>'

the reason was an occasional symlink among the pathnames which was pointing to nothing.
I've fixed it by removing the symlink
It would be nice to have proper handling for this case.

Brew complains about keychain credentials after a build error

  • Ran brew update and retried your prior step?
  • Ran brew doctor, fixed as many issues as possible and retried your prior step?
  • If you're seeing permission errors tried running sudo chown -R $(whoami) $(brew --prefix)?

I'm tinkering with a custom formula. One of these tinkerings broke the build, and since I build with the -d flag, this is where I normally see the outputs of brew --config, etc., plus suggestions for issues to look at. After that, I now see:

Error: Your OS X keychain GitHub credentials do not have sufficient scope!
Scopes they have: []
Create a personal access token: https://github.com/settings/tokens
and then set HOMEBREW_GITHUB_API_TOKEN as the authentication method instead.

I have never seen this, ever, despite breaking hundreds of my own builds. I don't understand why brew would even be asking for credentials at all, much less from the OSX keychain, after a failed build. This is weirder still because my Keychain's GH credentials are just fine; they allow me to push to my repos with no prompts, so long as the OSX Keychain is unlocked.

After `brew update` my custom formulas are gone.

I ran brew update and it updated fine, but now the /usr/local git repo has been completely rewritten and all the changes I has stored locally appear to be gone!

I'm surprised by the major migration without any warning...

Issue with brew commands

Hi all

Something wrong with brew.. On running brew doctor or any other brew command I am getting an error
Someone please help.

/usr/local/bin/brew: line 1: syntax error near unexpected token `<<<'
/usr/local/bin/brew: line 1: `<<<<<<< HEAD'

askpass, github errors on brew update

  • Ran brew update and retried your prior step?
  • Ran brew doctor, fixed as many issues as possible and retried your prior step?

Few weeks ago I started seeing this message when running brew update:

brew update
error: unable to read askpass response from 'false'
fatal: could not read Username for 'https://github.com': terminal prompts disabled
Error: Fetching /usr/local/Library/Taps/nviennot/homebrew-tmate failed!
Already up-to-date.

Updates are still being fetched and I can run brew upgrade.

option for brew audit to relax github notable status (for unofficial taps)

Bug reports:

Hosting a tap, and like to run basic audit checks on it using travis. But fails due to formulas using github repos that are not notable enough according to core requirements.

Feature Requests:

Add option to test-bot / audit to relax / skip the github repo checks.

I'm willing to implement this if it is something that is acceptable.

Misleading error messages for misnamed formula class

I'm trying to write my own first formula, so it's entirely possible I'm doing something wrong here, but the error I'm getting from brew is definitely confusing.

I'm running an updated homebrew:

Flos-Mac-mini:~ flo$ brew update 
Already up-to-date.
Flos-Mac-mini:~ flo$ brew --version
Homebrew 0.9.9 (git revision a8ed0; last commit 2016-04-13)
Homebrew/homebrew-core (git revision 4dbe; last commit 2016-04-13)

brew doctor is happy as well:

Flos-Mac-mini:~ flo$ brew doctor
Your system is ready to brew.

I'm copying my formula to the right place:

Flos-Mac-mini:~ flo$ cp qt5-webkit/qt5-webkit.rb /usr/local/Library/Formula/
Flos-Mac-mini:~ flo$

but installing it fails - it seems the formula gets found, but then brew decides it didn't find it anyways? 😉

Flos-Mac-mini:~ flo$ brew install --debug --verbose qt5-webkit
/usr/local/Library/brew.rb (Formulary::FormulaLoader): loading /usr/local/Library/Taps/homebrew/homebrew-core/Formula/qt5-webkit.rb
Error: No available formula with the name "qt5-webkit" 
==> Searching for similarly named formulae...
/usr/local/Library/brew.rb (Formulary::FormulaLoader): loading /usr/local/Library/Taps/homebrew/homebrew-core/Formula/qt5-webkit.rb
This similarly named formula was found:
qt5-webkit
To install it, run:
  brew install qt5-webkit
==> Searching taps...
Error: No formulae found in taps.

My formula:

class Qt5WebKit < Formula
  desc "Version 5 of the Qt framework - QtWebKit module"
  homepage "https://www.qt.io/"
  url "http://download.qt.io/community_releases/5.6/5.6.0/qtwebkit-opensource-src-5.6.0.tar.xz"
  mirror "https://www.mirrorservice.org/sites/download.qt-project.org/community_releases/5.6/5.6.0/qtwebkit-opensource-src-5.6.0.tar.xz"
  sha256 "9ca72373841f3a868a7bcc696956cdb0ad7f5e678c693659f6f0b919fdd16dfe"

  head "https://code.qt.io/qt/qtwebkit.git", :branch => "5.6", :shallow => false

  # OS X 10.7 Lion is still supported in Qt 5.5, but is no longer a reference
  # configuration and thus untested in practice. Builds on OS X 10.7 have been
  # reported to fail: <https://github.com/Homebrew/homebrew/issues/45284>.
  depends_on :macos => :mountain_lion

  depends_on "qt5"
  depends_on :xcode => :build

  def install
    system "qmake"
    system "make"
    system "make", "INSTALL_ROOT=#{prefix}" "install"
  end

  test do
    (testpath/"hello.pro").write <<-EOS.undent
      QT       += core webkit
      QT       -= gui
      TARGET = hello
      CONFIG   += console
      CONFIG   -= app_bundle
      TEMPLATE = app
      SOURCES += main.cpp
    EOS

    (testpath/"main.cpp").write <<-EOS.undent
      #include <QCoreApplication>
      #include <QDebug>
      #include <QWebView>

      int main(int argc, char *argv[])
      {
      }
    EOS

    system bin/"qmake", testpath/"hello.pro"
    system "make"
    assert File.exist?("hello")
    assert File.exist?("main.o")
  end
end

brew search : 422 Unprocessable Entity

when i try to search for a formula it returns with an error :

brew search dsniff
No formula found for "dsniff".
==> Searching pull requests...
Error: 422 Unprocessable Entity
Validation Failed

Brew update fails with Permission denied (publickey).

Please follow the general troubleshooting steps first:

  • [DONE] Ran brew update and retried your prior step?
  • [DONE] Ran brew doctor, fixed as many issues as possible and retried your prior step? brew doctor is clean
  • [DONE] If you're seeing permission errors tried running sudo chown -R $(whoami) $(brew --prefix)?

Bug reports:

Doing brew update, I get the following

➜ brew update
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Error: Fetching /usr/local failed!
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Error: Fetching /usr/local/Library/Taps/homebrew/homebrew-boneyard failed!
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Error: Fetching /usr/local/Library/Taps/homebrew/homebrew-versions failed!
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Error: Fetching /usr/local/Library/Taps/dart-lang/homebrew-dart failed!
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Error: Fetching /usr/local/Library/Taps/homebrew/homebrew-dupes failed!
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Error: Fetching /usr/local/Library/Taps/homebrew/homebrew-x11 failed!
Already up-to-date.

Followed multiple hints on the web. This looks like an ssh related error but the reps in question point to https. Please advise. Did not do a brew update for a while and did the 10.11.4 upgrade in between. Still, I have been using some git. Maybe I have screwed something up. Please advise.

brew install go

Trying to brew install go on debian SID .. (I did try it on testing too) .. it does compile natively on the OS, not problem. ( tried with and without export HOMEBREW_BUILD_FROM_SOURCE=1 )

I compiled ethereum-cpp successfully but I can't get GETH ( go version to compile because of it's dependency on golang )

  • [ Yes ] Ran brew update and retried your prior step?
  • [ Yes ] Ran brew doctor, fixed as many issues as possible and retried your prior step?
  • [ No ] If you're seeing permission errors tried running sudo chown -R $(whoami) $(brew --prefix)?

https://gist.github.com/1b3367f01fd05e67af2c027782cab3f9

/tmp/go20160408-29305-1dninkg/go/gobootstrap/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
/tmp/go20160408-29305-1dninkg/go/gobootstrap/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
runtime/cgo(.text): unexpected relocation type 298
runtime/cgo(.text): unexpected relocation type 298

cmd/go

/tmp/go20160408-29305-1dninkg/go/gobootstrap/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
/tmp/go20160408-29305-1dninkg/go/gobootstrap/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
runtime/cgo(.text): unexpected relocation type 298
runtime/cgo(.text): unexpected relocation type 298
thanks!

int

Analytics adds latency to `brew search` invocation

The bash and zsh completion scripts use brew search; setting HOMEBREW_ANALYTICS makes brew search invocations take ~twice as long on my Macbook (500 ms enabled, 250 ms disabled). Ideally, brew search should be very fast.

Broken repo after brew/core split

During an attempt to update my own copy of the Homebrew repository after it was split in two upstream and I ran brew update -vd to reflect this change, I was presented with the following output upon running git -C $(brew --repository) push -v…:

Pushing to https://github.com/RandomDSdevel/homebrew.git
To https://github.com/RandomDSdevel/homebrew.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/RandomDSdevel/homebrew.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

…and git -C $(brew --repository) pull -v RandomDSdevel, …:

From https://github.com/RandomDSdevel/homebrew
 = [up to date]      master     -> RandomDSdevel/master
Auto-merging share/man/man1/brew.1
CONFLICT (add/add): Merge conflict in share/man/man1/brew.1
[etc, ad nauseum; gist: https://gist.github.com/tdsmith/69cc90ab0914014e8e0ab8c9b2c9f266]

…, respectively. Even after running the following commands…:

  • sudo chown -Rv $(whoami) /usr/local
  • sudo chmod -R +a "zadmin allow delete,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,list,search,add_file,add_subdirectory,delete_child,read,write,append,execute,file_inherit,directory_inherit" /usr/local
  • sudo chmod -R +a "bryce allow delete,readattr,writeattr,readextattr,writeextattr,readsecurityritesecurity,list,search,add_file,add_subdirectory,delete_child,read,write,append,execute,file_inherit,directory_inherit" /usr/local
  • sudo chmod -R +a "_developer allow delete,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,list,search,add_file,add_subdirectory,delete_child,read,write,append,execute,file_inherit,directory_inherit" /usr/local

…in an attempt to remedy any permissions errors I might be having that might have made things worse, I still got errors while trying to push and pull from my Homebrew fork, though, this time, they were different: for git -C $(brew --repository) push -v, I got this, …:

/usr/local/Library/brew.sh: line 1: syntax error near unexpected token `<<<'
/usr/local/Library/brew.sh: line 1: `<<<<<<< HEAD'
fatal: Cannot change to 'push': No such file or directory

…, whereas for git -C $(brew --repository) pull -v RandomDSdevel, I got this:

/usr/local/Library/brew.sh: line 1: `<<<<<<< HEAD'
fatal: Cannot change to 'pull': No such file or directory

When trying to run brew update -vd, I got this:

/usr/local/Library/brew.sh: line 1: syntax error near unexpected token `<<<'
/usr/local/Library/brew.sh: line 1: `<<<<<<< HEAD'

Essentially, I think I just completely messed up my Homebrew install! I'm not entirely sure what to do to fix it, so can you guys help me fix it, please?

Policy Request: Restoring breakage quickly and/or Grandfathering of old versions

Related to #60, I'm requesting a policy that allows breakage to be restored to a working state quickly and efficiently.

This is essentially a feature request that is "procedural", "policy" in nature but perhaps it could be resolved with changes to the "unit test" code.

When dependencies break other packages, I try to contribute usefully and submit pull requests simply restoring the previous functionality, such as with a pull request somewhere like homebrew-versions. However, that seems to require code go through the full vetting process as if it were brand new. Perhaps the code was previously grandfathered in to stricter coding policies before which doesn't apply to code being moved between package repos? Perhaps there is an approach unrelated to what I just mentioned that could help fix quickly, prevent, or restore changes that caused breakage?

As mentioned in #60 that would of course have to be something the homebrew team is willing to put into practice and I understand if it is out of scope with respect to your current plans.

Thanks again for your time and consideration!

Overly-zealous tap guarding.

When we shipped fad235d was it intentional to end up blocking remote overrides?

~> brew tap homebrew/fuse
Error: Tap homebrew/fuse remote mismatch.
[email protected]:Homebrew/homebrew-fuse.git != https://github.com/Homebrew/homebrew-fuse
[url "[email protected]:Homebrew/"]
    # Use SSH for Homebrew instead of https://
    insteadOf = https://github.com/Homebrew/

It feels a little heavy-handed and unnecessary, given that the URL still matches GitHub + the Homebrew organisation.

Symlink in /usr/local/opt without destination breaks almost every command

Please follow the general troubleshooting steps first:

  • Ran brew update and retried your prior step?
  • Ran brew doctor, fixed as many issues as possible and retried your prior step?
  • If you're seeing permission errors tried running sudo chown -R $(whoami) $(brew --prefix)?

You can erase any parts of this template not applicable to your Issue.

Bug reports:

Somehow, I had a symlink in /usr/local/opt, specifically gnu-which, that was created with a null destination.

$ ls -d /usr/local/opt/gnu-which
lrwxr-xr-x  1 kirb staff   24 Apr 14 21:39 gnu-which ->

This broke almost all brew commands, which would throw this:

Error: pathname contains null byte
Please report this bug:
    https://git.io/brew-troubleshooting
/usr/local/Library/Homebrew/extend/pathname.rb:340:in `initialize'
/usr/local/Library/Homebrew/extend/pathname.rb:340:in `readlink'
/usr/local/Library/Homebrew/extend/pathname.rb:340:in `resolved_path'
/usr/local/Library/Homebrew/keg.rb:189:in `optlinked?'
/usr/local/Library/Homebrew/formulary.rb:215:in `each'
/usr/local/Library/Homebrew/formulary.rb:215:in `detect'
/usr/local/Library/Homebrew/formulary.rb:215:in `from_rack'
/usr/local/Library/Homebrew/diagnostic.rb:1339:in `block in check_for_unlinked_but_not_keg_only'
/usr/local/Library/Homebrew/diagnostic.rb:1336:in `reject'
/usr/local/Library/Homebrew/diagnostic.rb:1336:in `check_for_unlinked_but_not_keg_only'
/usr/local/Library/Homebrew/cmd/doctor.rb:38:in `block in doctor'
/usr/local/Library/Homebrew/cmd/doctor.rb:31:in `each'
/usr/local/Library/Homebrew/cmd/doctor.rb:31:in `doctor'
/usr/local/Library/brew.rb:97:in `<main>'

Obviously this isn’t very helpful to finding the culprit, and I only found the culprit by luck. I don’t know how the bad symlink was created in the first place – after deleting it, I inspected its directory in the cellar and nothing seems out of place. Linking it manually also worked.

Feature Requests:

I would figure there should be a check to confirm the destination is not empty when creating symlinks. Possibly also add a check for this to brew doctor? It was the first thing I tried, hoping it would fix it.

Feature Request: man pages.

Hi.

If i install gcc over homebrew for example i don't get the man-page entry for it.
-> man gcc says no manual entry for gcc

Alex

npm is broken every time what I update node

Every time what I update node, I can't use npm, I must uninstall and reinstall node, and even I must install each global package of npm again.

➜ npm
module.js:341
    throw err;
    ^

Error: Cannot find module 'npmlog'
    at Function.Module._resolveFilename (module.js:339:15)
    at Function.Module._load (module.js:290:25)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at /usr/local/lib/node_modules/npm/bin/npm-cli.js:20:13
    at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:76:3)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)

ncmpcpp does not start after updated icu4u

Maybe someone could please fix this. It seems ncmpcpp seems just to be linked(?) to the new library?

~ >> brew doctor
Your system is ready to brew.

~ >> ncmpcpp
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicuuc.56.dylib
Referenced from: /usr/local/bin/ncmpcpp
Reason: image not found
Trace/BPT trap: 5

~>> ls /usr/local/opt/icu4c/lib/libicuuc.
libicuuc.57.1.dylib libicuuc.57.dylib@ libicuuc.a libicuuc.dylib@

Thanks in advance!

GitHub API open fails when behind proxy

Not sure what's causing this, but behind a pretty standard corporate web proxy that otherwise works properly (and worked with older versions of homebrew), we're now seeing:

Error: 407 "Proxy Authentication Required"
Please report this bug:
    https://git.io/brew-troubleshooting

Full traceback indicates the issue is in this function: https://github.com/Homebrew/brew/blob/master/Library/Homebrew/utils.rb#L599-L623

Setting the HOMEBREW_NO_GITHUB_API environment variable seems to be a temporary workaround.

Implement missing `VCSDownloadStrategy#source_modified_time` methods

Just a note here.

DownloadStrategy#source_modified_time is used to detect the latest modified time of source, which is an essential part for reproducible bottle. Among all kinds of VCSDownloadStrategy, so far only GitDownloadStrategy#source_modified_time has been implemented. Below is the list of methods need to be implemented.

  • SubversionDownloadStrategy#source_modified_time
  • CVSDownloadStrategy#source_modified_time
  • MercurialDownloadStrategy#source_modified_time
  • BazaarDownloadStrategy#source_modified_time
  • FossilDownloadStrategy#source_modified_time

CMake can pick up Fink/MacPorts paths

Under our current superenv implementation, CMake-based build scripts can still pick up programs and libraries from Fink (/sw) and MacPorts (/opt/local) under some circumstances. We do not support building against Fink or MacPorts packages, so this can cause either unexpected behavior or broken builds.

We should probably sanitize more aggressively to prevent this, using CMake-specific configuration and/or sandbox "read deny" rules.

Not high priority, since this will probably only affect unusual configurations, like side-by-side Homebrew + Fink installs.

Description

CMake has functions like find_program() and find_library() that search in a lot of different places, using both build-specific paths, environment variables, and fallback locations defined in CMAKE_SYSTEM_*_PATH cmake variables. The default system path set for Darwin includes hardcoded references to /sw and /opt/local, so it can pick up Fink or MacPorts commands or libraries even if those paths have been entirely sanitized from your environment variables and the program build script does not reference them.

First found this with a build failure for weechat --with-ruby that broke when there was a Fink-supplied ruby2.0 in addition to the system ruby and Homebrew-built ruby; Homebrew/homebrew-core#117 (comment).

Which things are affected depend on how the CMake lookups are implemented. FindRuby.cmake, at least in its older form, and that adapted by weechat, is vulnerable to this because its lookups for the Ruby command, headers, and shared libraries are not tightly bound to each other. Using PATHS instead of HINTS in the find_* arguments can affect this.

Approach

Sanitizing $PATH and other environment variables is not sufficient. We probably need to override CMake's CMAKE_SYSTEM_*_PATH cmake variables to remove Fink and MacPorts paths (and possibly to limit them to paths explicitly included by superenv). This probably needs to be done with a cmake wrapper like the cc wrapper that modifies the command line arguments, using -D to set the CMAKE_* variables. Unlike CMAKE_*_PATH (without SYSTEM), environment variables with those names don't seem to be supported by CMake.

Maybe we should switch from CMAKE_*_PATH to CMAKE_SYSTEM_*_PATH entirely in our cmake environment setup. The non-SYSTEM CMAKE_*_PATH variables are high-precedence, coming before both PATHS and HINTS that are computed inside the build script. This could have unexpected effects on build scripts that are not expecting that customization or have sloppy detection implementations.

Or maybe we need to establish a policy of requiring CMake-based builds to be robust WRT CMAKE_*_PATH variables. That doesn't seem unreasonable either.

brew update doesn't 'fail' - expected?

Bug (?) reports:

Running brew update without internet connection will yield tons of (as many taps you've done) error messages, but I found a case where brew update itself didn't fail - by which I mean its return code is somehow zero despite all those errors. Here's my sample output without internet connection.

_( _・ω)_<CPlug@localhost H28 04/11 11:14:19) 
> brew update  #no internet connection                                                             [~]
fatal: unable to access 'https://github.com/Homebrew/brew.git/': Could not resolve host: github.com
Error: Fetching /usr/local failed!
fatal: unable to access 'https://github.com/caskroom/homebrew-versions/': Could not resolve host: github.com
Error: Fetching /usr/local/Library/Taps/caskroom/homebrew-versions failed!
fatal: unable to access 'https://github.com/Homebrew/homebrew-boneyard/': Could not resolve host: github.com
Error: Fetching /usr/local/Library/Taps/homebrew/homebrew-boneyard failed!
fatal: unable to access 'https://github.com/Homebrew/homebrew-brewdler/': Could not resolve host: github.com
Error: Fetching /usr/local/Library/Taps/homebrew/homebrew-brewdler failed!
fatal: unable to access 'https://github.com/Homebrew/homebrew-core/': Could not resolve host: github.com
Error: Fetching /usr/local/Library/Taps/homebrew/homebrew-core failed!
fatal: unable to access 'https://github.com/Homebrew/homebrew-games/': Could not resolve host: github.com
Error: Fetching /usr/local/Library/Taps/homebrew/homebrew-games failed!
fatal: unable to access 'https://github.com/Homebrew/homebrew-x11/': Could not resolve host: github.com
Error: Fetching /usr/local/Library/Taps/homebrew/homebrew-x11 failed!
fatal: unable to access 'https://github.com/phinze/homebrew-cask/': Could not resolve host: github.com
Error: Fetching /usr/local/Library/Taps/phinze/homebrew-cask failed!
Already up-to-date.
_( _・ω)_<CPlug@localhost H28 04/11 11:14:26) 
>

I was writing one of those automation script for brew update & brew upgrade, and I was designing it so that when brew update fails for any reason, it would ask me to retry - but that didn't work because brew update wouldn't return nonzero in the first place like above. I can see the return code by looking at the prompt - the _( _・ω)_ will turn into ・ω)┌┘’,;’;≡三 upon nonzero return.

Feature Requests:

As this pretty much always happen when condition (= no internet connections) is met, this might be an expected result - but I want it to (and I think it should) fail when the fetching fails.
I wish I could contribute - but right now I lack in knowledge... sry 😞

More discussion surrounding repo split / architectural change to the brew project

Feature Requests:

My request is for more discussion in the future surrounding architectural / repo-split / convergence (as in the case of the homebrew-cask convergence). We heavily utilize the brew project to fully automate the setup of our workstations... in the past 6 months or so there have been 3 things that have disrupted this automatic workflow...

  1. Changes to package names / versions ... things like making brew install elasticsearch install version 2.x, instead of making an elasticsearch-2.0 package name, and keeping the original 1.0 version tree for the elasticsearch package name
  2. The convergance of the brew-cask system into the main brew system
  3. The most recent is the split of the Formula repos out of the main-line repo

It seems like these changes are more so "just announced as they happen" instead of a more preferable strategy that could include a pre-announcement, discussion, voting, and ideally some sort of news/blog coverage (for example, getting an article on the front page of a couple popular developer centric sites).

Thank you for your consideration...

all in all this is the sum of the changes to fix our broken automated ansible workstation setup

diff --git a/ansible/roles/redis/tasks/main.yml b/ansible/roles/redis/tasks/main.yml
index 93a7abd..8935438 100644
--- a/ansible/roles/redis/tasks/main.yml
+++ b/ansible/roles/redis/tasks/main.yml
@@ -9,7 +9,7 @@

 # git fetch origin 96de5297df870:refs/remotes/origin/foo-commit
 - name: get correct version of redis
-  shell: cd /usr/local/Library && (git fetch --unshallow origin || true) && git checkout d010d61a8cbd92c8ec9b088cb5a6d259209d4b07 Formula/redis.rb
+  shell: cd /usr/local/Library/Formula && (git fetch origin || true) && git checkout 2190ece4b7d6fbcd477234aeaa160bad84fc12d6 redis.rb

 - name: install redis brew package
   command: creates=/usr/local/Cellar/redis/3.0.6 brew reinstall redis
@@ -26,4 +26,4 @@
   shell: launchctl unload /Library/LaunchDaemons/homebrew.mxcl.redis.plist

 - name: unset version of redis
-  shell: cd /usr/local/Library && (git fetch --unshallow origin || true) && git checkout master Formula/redis.rb
+  shell: cd /usr/local/Library/Formula && (git fetch origin || true) && git checkout master redis.rb

`brew update` reports spurious change for files moved within tap repo

If a formula file in a tap is moved between the allowable formula directories (/, /Formula, and /HomebrewFormula), it will be reported as changed by the next brew update that picks it up.

The reported change will look something like this.

$ brew update
Updated 1 tap (homebrew/versions).
==> New Formulae
homebrew/versions/allegro4
homebrew/versions/android-ndk-r10d
homebrew/versions/android-ndk-r10e
homebrew/versions/ansible14
homebrew/versions/ansible18

This blocks rearranging the standard taps to move formula files from the root dir to Formula, which is our current preferred organization.

Blocks homebrew/homebrew-boneyard#108.

brew install --HEAD gcc funky suffix stuff....

I added a head url a while back (#46648 , 1bf2a681cca53db016415de5ea91324c96d4ece8) but upon further inspection the value of version_suffix seems to be empty which causes the binaries to be named gcc- etc.

I was hoping to submit a PR to fix this, but was wondering, what a decent version_suffix for gcc should be when built from GCC trunk.

Currently, I think the version number they are using for trunk is 6.0.0 and then this gets bumped to 6.1.x when they issue a stable release. (I could be wrong here.) I also heard that the 6.x release is not far away and is due sometime this spring.

As such what is the best way to treat version_suffix when building from GCC trunk (aka --HEAD)?

On the one hand we could do version_suffix = "HEAD" (or trunk) which won't ever need updating, or we could do version_suffix = 6 when --HEAD is passed. Other ideas?

Let me know and I'll work up a PR.

Homebrew/core Travis CI fails to test formula.

I just found out that the Travis CI job on Homebrew/core didn't do any formula test for each git push. Instead, it only run brew tests. As result, none of recent Homebrew/core git push has been double tested by CI bot.

[DepthPacketStreamParser::onDataReceived] not all subsequences received 0

Please follow the general troubleshooting steps first:

  • Ran brew update and retried your prior step?
  • Ran brew doctor, fixed as many issues as possible and retried your prior step?
  • If you're seeing permission errors tried running sudo chown -R $(whoami) $(brew --prefix)?

You can erase any parts of this template not applicable to your Issue.

Bug reports:

Please replace this line with a brief summary of your issue.

Feature Requests:

Please note by far the quickest way to get a new feature into Homebrew is to file a Pull Request.

We will consider your request but it may be closed if it's something we're not actively planning to work on.

El Capitan Upgrade results in error: Insecure world Issues on /usr/local in PATH

Before an El Capitan upgrade, 'brew' was working just fine. Afterwards, I received errors:

...
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb:213: warning: Insecure world writable dir /usr/local in PATH, mode 040777
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb:213: warning: Insecure world writable dir /usr/local in PATH, mode 040777
...

I tried to upgrade homebrew, but the problems still persist. I am using zsh, but this occurs in bash as well. Is there something else I should be doing to resolve this issue, or does anyone have any recommendations?

Feature Request: Preventing formulae updates from breaking their dependencies

Key problems

  1. Package A is updated from 1.0 to 2.0, breaking package B which depends on A 1.0.
    • breakage is not always detected
      • Example: ceres depends on an exact version of eigen (a simple bottle refresh could fix it)
    • breakage can't always be fixed
      • B may not support A 2.0 until its next release a month from now
  2. Package B,C depend on different versions of package A. Package D depends on both B, C and sometimes A directly. (other variations on this theme exist)
  3. Options sometimes break invisibly
  4. Cross tap dependencies may change

Solutions with most backing

These are reasonably easy, well liked ideas that will mitigate (but may not completely solve) the above

  • allow a limited set of versions into homebrew supported taps with an aliasing mechanism for the latest version so dependent libraries can have a soft landing until they support new versions
  • define criteria for accepting requests/proposals to make certain options recommended by default

proposed solutions

This is the full list of proposals (not definite upcoming features). Check marks indicate they are implemented

posed problems without solutions

these are from the ongoing conversation beyond the initial request posed above

  • version dependency conflicts for multiple packages. Here is an example:
A: depends on boost (latest)
B: depends on boost155 (newest feasible version)
C: depends on A, B, sometimes various boost versions
  • cross tap dependencies may change

Original Feature Request

I keep having libraries I depend on get broken because those dependencies' own dependencies are changed out from under them. In particular, this happens most frequently when flags other than the default are needed.

Two examples:
https://github.com/Homebrew/homebrew-science/issues/3454
https://github.com/Homebrew/homebrew-science/pull/3512

Perhaps there is a way to avoid these problems that also meets the crucial criteria of the homebrew team being willing to put it into practice? :-)

Thanks for your thoughts and considering my request!

uninstall issue

i'm running osx 10.11.4.

Bug reports:

I tried updating brew but got this error

zeus:~ Nix$ brew update
warning: unable to unlink CONTRIBUTING.md: Permission denied
warning: unable to unlink SUPPORTERS.md: Permission denied
fatal: cannot create directory at '.github': Permission denied
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master

then i tried uninstalling
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
but got

-e:114: undefined method `start_with?' for "/*":String (NoMethodError)
    from -e:114

now launching "brew" throws a big error.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/brew.rb:15:in `<main>'

Java tests (and maybe other `java` use) may fail under sandbox

With newer releases of Java 1.7 and 1.8, it looks like most uses of java will fail under sandboxing with the JRE's default configuration.

Example: the new test for neo4j is failing.

$ brew test --verbose neo4j
Testing neo4j
==> Using the sandbox
/usr/bin/sandbox-exec -f /tmp/homebrew20160410-45054-1ru5j4o.sb /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -W0 -I /usr/local/Library/Homebrew -- /usr/local/Library/Homebrew/test.rb /usr/local/Library/Taps/homebrew/homebrew-core/Formula/neo4j.rb --verbose
==> /usr/local/Cellar/neo4j/2.3.3/bin/neo4j start
Starting Neo4j Server.../private/tmp/neo4j20160410-45055-787qej/libexec/data/log/neo4j.log was missing, recreating...
WARNING: not changing user
process [45165]... waiting for server to be ready.. Failed to start within 120 seconds.
Neo4j Server may have failed to start, please check the logs.
==> Sandbox log
Apr 10 21:00:26 sandboxd[122]: java(45145) deny file-write-data /Users/janke/.oracle_jre_usage/42d8591bd1e10f3f.timestamp
Apr 10 21:00:26 sandboxd[122]: java(45147) deny file-write-data /Users/janke/.oracle_jre_usage/42d8591bd1e10f3f.timestamp
Apr 10 21:00:26 sandboxd[122]: java(45165) deny file-write-data /Users/janke/.oracle_jre_usage/42d8591bd1e10f3f.timestamp
Error: neo4j: failed
Failed executing: /usr/local/Cellar/neo4j/2.3.3/bin/neo4j start
/usr/local/Library/Homebrew/formula.rb:1481:in `block in system'
/usr/local/Library/Homebrew/formula.rb:1418:in `open'
/usr/local/Library/Homebrew/formula.rb:1418:in `system'
/usr/local/Library/Taps/homebrew/homebrew-core/Formula/neo4j.rb:44:in `block in <class:Neo4j>'
/usr/local/Library/Homebrew/formula.rb:1327:in `block in run_test'
/usr/local/Library/Homebrew/extend/fileutils.rb:36:in `mktemp'
/usr/local/Library/Homebrew/formula.rb:1323:in `run_test'
/usr/local/Library/Homebrew/test.rb:28:in `block in <main>'
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/timeout.rb:66:in `timeout'
/usr/local/Library/Homebrew/test.rb:27:in `<main>'

Those writes to /Users/janke/.oracle_jre_usage/ are from the Java Usage Tracker which was recently introduced, and seems to be enabled by default in the current JDKs on OS X.

It does not seem to respect the $HOME environment variable. Looks like it's doing a getpwent instead, so it always goes to the actual home directory even if $HOME is set.

Changing this behavior on a per-program basis would require setting Java system properties inside launch scripts, which sounds like a pain. I think we should consider whitelisting this specific directory under our sandbox for build and test.

Odd message just started - awk?

  • Ran brew update and retried your prior step?
  • Ran brew doctor, fixed as many issues as possible and retried your prior step?
  • If you're seeing permission errors tried running sudo chown -R $(whoami) $(brew --prefix)?

All above done, clean, up to date system.
Everything working as expected......but

Bug report:

Every command involving 'brew' results in the following output preceding the command going ahead and completing successfully!

$ brew update
awk: syntax error at source line 1
context is
>>> {print <<< $1"/"$2}
awk: illegal statement at source line 1
awk: syntax error at source line 1
context is
>>> {print <<< $1"/"$2}
awk: illegal statement at source line 1
Already up-to-date.

brew update/upgrade/doctor/install etc (everything!) shows the same behaviour - "error" message followed by successful completion.

Anyone else seen this?

Regards and Thanks to all.

FC

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.