11 ms·
Show HN: Homebrew 6.0.0
Today, I’m proud to announce Homebrew 6.0.0. The most significant changes since 5.1.0 are a new tap trust security mechanism, the new faster, smaller, default internal Homebrew JSON API, sandboxing on Linux, better defaults informed by our user survey, many brew bundle improvements, improved performance and initial support for macOS 27 (Golden Gate).
Happy to discuss any questions here!
- deleted 4mo ago[deleted]
- 7839284023 4mo agoAwesome! Thank you for the update. I noticed that homebrew updated _all_ my casks when running 'brew upgrade' (even those with "auto_updates: true" in their Cask JSON API). Is this intended, new default behavior? This did not use to happen...
- perryprog 4mo agoYou need to set HOMEBREW_NO_UPGRADE_AUTO_UPDATES_CASKS to 1, as alluded to by a hint when it (first?) occurs. This means if you have hints off (via HOMEBREW_NO_ENV_HINTS) then I suspect you can start getting this behavior without warning which is a bummer. See also: https://docs.brew.sh/FAQ#why-arent-some-apps-included-during-brew-upgrade https://docs.brew.sh/FAQ#why-arent-some-apps-included-during...
- reaperducer 4mo agoThis means if you have hints off (via HOMEBREW_NO_ENV_HINTS) then I suspect you can start getting this behavior without warning which is a bummer. When you instruct the system not to tell you things, the system not telling you those things is a bummer? If I could get more of the tech I interact with to stop doing things I didn't ask it to, it would reduce a lot of stress and wasted time.
- perryprog 4mo agoAh, I suppose I did word that poorly—I more mean that a significant breaking change (Casks that previously were documented as being excluded from auto-updating suddenly being auto-updated) which can occur silently is a rough end-user experience, even if the user explicitly opted into hiding hints.
- hk__2 4mo ago> This means if you have hints off (via HOMEBREW_NO_ENV_HINTS) then I suspect you can start getting this behavior without warning which is a bummer. I read this as "This means if you close your eyes you don’t see things, which is a bummer."
- mikemcquaid 4mo agoYes this is intended. We skip those that seem to have already auto-updated underneath. Our code for this is not yet rock solid so please file issues for those you notice are not doing the right thing here.
- pdntspa 4mo agoThis sort of overly eager upgrading has caused me a lot of problems over the years. I really wish it didn't default to updating the entire world just because you want to update one package.
- ansonhoyt 4mo agoIs there a way to `brew trust` inside my Brewfile? That'd be nice for the handful of formulas I install from github repos via `brew bundle --global`.
- joshuat 4mo agoIs the eventual goal to move most formula/cask behavior into declarative install steps and treat Ruby as an escape hatch?
- mikemcquaid 4mo agoYes, exactly. The goal is you can install all official packages without needing custom postinstall/preflight/postflight blocks.
- broxit 4mo agoThanks for the update. Is there any chance we can get some kind of cooldown mechanism in Homebrew? The only people I want to trust to quickly ship new code to my machine are Apple and my browser (which handles more untrusted input than anything else). For everything else (vscode and its extensions, npm, homebrew, and all the apps that self-update), I prefer to err on the side of waiting a few days. Some exceptional 0days might warrant a cooldown bypass, but even in its current form users are vulnerable to 0days until they run brew upgrade.
- briandoll 4mo agoIt's in this release, see this section: > Cooldowns, livecheck and bumping
- PufPufPuf 4mo agoThat's only for upstream packages, i.e. what the CI pulls in when building bottles. Homebrew itself is a rolling package manager, essentially only supporting the "latest" version for each package, which doesn't work well with the usual "only install packages older than X" concept.
- runjake 4mo ago+1 For those who don't know what broxit is talking about, they're referring to something like --minimum-release-age/minimumReleaseAge in many pieces of software and package managers to reduce vulnerability to supply chain attacks. Often times, such attacks are detected within a few days of compromise. Here's Bun's, as an example: https://bun.com/docs/pm/cli/install#minimum-release-age https://bun.com/docs/pm/cli/install#minimum-release-age
- cryo32 4mo ago100% need this.
- mikemcquaid 4mo agohttps://docs.brew.sh/Supply-Chain-Security https://docs.brew.sh/Supply-Chain-Security details how we’re handling cooldowns and why we have a very different risk profile to e.g. NPM. Also, where we package things from NPM/PyPi/RubyGems that have been subject to these attacks: we already apply cooldowns for you both when packaging and when creating PRs to update to new versions.
- reactordev 4mo agoHell yeah, tap trust!!!
- 0xbadcafebee 4mo agoPersonally I stopped using Homebrew after I got screwed too many times on mandatory upgrades that I couldn't pin. I use a combination of Mise and MacPorts now so I don't get any more surprise breakage and forced obsolescence. Plus Mise allows me to upgrade to any new version, whereas with Homebrew you have to wait for whenever the tap feels like upgrading (llama.cpp tap skips every 10 releases)
- bigyabai 4mo agoNix is also worth checking out, even if the Darwin packaging is a bit flaky. I really appreciate having cross-platform devshells when I have to alternate between Mac and Linux on a regular basis.
- PufPufPuf 4mo agoMise is also cross-platform, we actually use it at work for projects we develop locally on macOS, then build in CI on Linux -- it even supports multiplatform lockfiles. I had a few tries with Nix but it's a lot to wrap your head around, Mise is simple to "just try".
- vhanda 4mo agoNix has a high learning curve. I now use Devbox [0] as it hides all the complexity of Nix while still giving all the benefits. Now I install far more packages via devbox (or devbox global) than I do via HomeBrew (on osx) or pacman (on arch). [0] - https://www.jetify.com/devbox https://www.jetify.com/devbox
- PufPufPuf 4mo agoI'm in the "switched most to Mise" stage, might look into MacPorts for the remaining stuff, thanks for the tip!
- mikemcquaid 4mo agoGlad you've found a workflow that works for you, genuinely. For others still using Homebrew: a lot of work has gone into upgrading only when we absolutely have to and showing these upgrades to the user before we do them, including in this release.
- PufPufPuf 4mo agoI have switched my full OS-level dev env to https://mise.jdx.dev/ https://mise.jdx.dev/ from Homebrew+pipx+npm, initially as an experiment but found out that it actually works amazingly well. Many things get installed directly from GitHub releases or a corresponding package manager (uv, pnpm, go get ...), zero glue code to "repackage", zero version lag. You can install any arbitrary version of a package, even multiple ones at once, and dynamically adjust which ones are active per working folder or explicitly through environments. Funnily Mise does not support dependencies, and I was quite surprised that it mostly doesn't matter, as either pnpm/uv handles that, or it's a static binary that just works. In the past, had the unfortunate experience of packaging a Python application for Homebrew (the ridiculous process involved importing around 50 dependencies as "resources", building every single one from source or manually checking if it's already on Homebrew, declaring build toolchains for 5 different programming languages as dependencies, waiting over an hour for CI to finish on every update, then an upstream update introduced a "build-time dependency loop" and the project suddenly became unpackable for Homebrew) so I totally get why Mise took the "easy way out" and just relies on language-specific package managers directly. Only thing from my Brewfile that I couldn't replace was the Docker CLI (needed to interact with Colima). And I still use Homebrew for casks. I encourage others to experiment with their dev setups, there are some amazing new tools out there.
- esafak 4mo agoDon't forget that mise depends on package registries, to install itself as well as its tools.
- PufPufPuf 4mo agoMise installs itself as a static binary actually (but it's of course packaged in many registries), and while there are some third party registries it delegates to for some packages (aqua, asfd), most stuff I have installed is either built-in, or from PyPI, npm or GitHub, i.e. directly published by the upstream maintainers. More info: https://mise.jdx.dev/dev-tools/backends/ https://mise.jdx.dev/dev-tools/backends/
- 4mo ago
- vitorsr 4mo agoThanks for all the hard work. We are not many [1], but Homebrew has been a great way to quickly bootstrap an environment in immutable Linux distributions. Note that certain operating systems such as Universal Blue's Bazzite (1.28%), Bluefin (0.49%) and Aurora (0.28%) default to bundling Homebrew [2]. [1] https://formulae.brew.sh/analytics/os-version/365d/ https://formulae.brew.sh/analytics/os-version/365d/ [2] https://github.com/ublue-os/brew https://github.com/ublue-os/brew
- LelouBil 4mo agoI'm using nix on Bazzite, with home-manager
- PufPufPuf 4mo agoThe concept of a "userspace package manager" is something I would expect Linux to have figured out twenty years ago. It's ridiculous that the usual situation for non-root users is "you can't install XY but feel free to build from source". Homebrew, Mise and Nix are filling that hole now. (Flatpak is more oriented towards GUI apps, and Snap... exists.)
- e12e 4mo agoWell, there was stow/xstow... https://www.gnu.org/software/stow/ https://www.gnu.org/software/stow/ https://xstow.sourceforge.net/ https://xstow.sourceforge.net/
- shevy-java 4mo agoStow only symlinks. That's even one layer below GoboLinux, and GoboLinux is not extremely active either (it is not dead, but kind of semi-dormant, that is sometimes a few changes and improvements are added, then it goes back to hibernation again).
- QuercusMax 4mo agoI haven't looked much into snap but it seems very heavyweight from the few things I've tried, which downloaded what looked like an entire OS and filled up my disk and RAM. And the fact that you run `snapd` to install a package is just... odd.
- hk__2 4mo agoHi Mike, I’m @bfontaine on GitHub (I helped maintain Homebrew in ~2014-2016). I’m always impressed at your longevity as a maintainer; it’s been like what, 16+ years you’ve been maintaining Homebrew and you’re still here, still shipping new features! Thank you for everything!
- mikemcquaid 4mo ago17 in September. Thanks for all your great work at the time! Hope you’re well <3
- Kevcmk 4mo agoGoat
- alexgyurov 4mo agoThank you!
- trueno 4mo agojust updated to 6.0.0. already loving `brew trust <tap>` thank you for all the years of work! practically a required macos experience for me these days! as far as cli utilities go the ux of homebrew has always been so easy to use, honestly kind of a personal benchmark for me on how repeatedly approachable it is, all commands are for whatever reason so painless to remember. i remember when apple silicon dropped and you guys followed shortly with support and the ability to switch arches, like really killer stuff so impressed with homebrew! always a treat when something im interested in tinkering with has a homebrew formula available
- cavneb 4mo agoThank you Mike!
- colemannerd 4mo agoThank you mike!
- thewhitetulip 4mo ago
- swiftcoder 4mo agoCongrats on the performance improvements. That's the most pleasant `brew upgrade` session I've had in years
- swingboy 4mo agoInteresting that the `brew-rs` experiment has concluded and didn't find much of a performance increase. I suppose that is expected though with a lot of the bottleneck being network IO?
- azuanrb 4mo ago[dead]
- pknerd 4mo agoThanks for producing such an amazing piece of software. Most of my Mac installations are based on Homebrew, but I have to rely on version management tools like Pyenv or nvm for Python and Node. Wish there was some standard 'Homebrew' way to install multiple versions of node, php and Python
- PufPufPuf 4mo agoHave a look at https://mise.jdx.dev/ https://mise.jdx.dev/, it's exactly what you're looking for!
- mikemcquaid 4mo agoThere's a selection of ways that may or may not work for you: - `formula@version` packages - `brew version-install` (which uses `brew extract` and `brew tap-new` under the hood) - `version_file:` support in `brew bundle - `brew pyenv-sync`
- midenginedcoupe 4mo agoI switched from brew to https://asdf-vm.com/ https://asdf-vm.com/ for this very reason. I don't understand how devs don't use a tool that makes multiple versions of everything possible.
- yurlyCLOCLOCK 4mo ago[dead]
- let_rec 4mo agoDoes Homebrew have good support for exact (and older) versions of packages now?
- c-hendricks 4mo agoI don't think that's a part of its goals at all.
- PufPufPuf 4mo agoNope, still rolling. Have a look at https://mise.jdx.dev/ https://mise.jdx.dev/ if you need exact versions
- mikemcquaid 4mo ago`brew version-install` may do what you want here.
- andrewaylett 4mo agoI'll second the recommendation for `mise`, and add: I typically use Homebrew for things I want everywhere, and if I want something everywhere then the latest version is _probably_ OK. I typically use mise en place for versions which are project-specific. So I have a system Python (largely unused), a Homebrew python (pulled in as a dependency, I won't use it), and as many different mise/uv Pythons as I need for different projects. Similarly NodeJS and Java. I'd given up on nvm a while back, no longer use pyenv, and mise and uv work together really nicely.
- ch-bas 4mo agoThanks for the hardwork.
- threecheese 4mo agoI assume this trust issue is related to the not-infrequent MacOS notifications asking for permission to run Ruby in the background or when the machine starts. It says nothing about Homebrew though.
- tom1337 4mo agomacOS Permission Management regarding shell scripts is so bad. For example they show you a list of software thats allowed to access the full disk - but I have like 8 "sh" or "bash" in there and some random scripts with no way to open the enclosing directory in Finder making it basically impossible to see what it is and if its legit…
- mh- 4mo agoI'm not sure when they added it, but I just checked again in macOS 26 and you can right click on those sh-like entries now and hit Show in Finder.
- dionian 4mo agohomebrew is so nice, thank you for all your effort
- dlandis 4mo agoIs it true that contributors to homebrew need to know how to invert a binary tree?
- philistine 4mo agoThe deprecation of Intel support is agressive! Every Mac enthusiast I know who uses a Mac as a server uses their old machines, which are pretty much all Intel. We'll lose support from you guys a year before Apple! I know supporting Intel is an ordeal and a choice, but I'm firmly on the camp that Homebrew should find a way to maintain Intel support as long as possible.
- stouset 4mo agoIf anything, the overwhelming majority of Apple enthusiasts have gone all-in on Apple Silicon. I sincerely doubt those using old Macs as servers are anything but a rounding error.
- asdff 4mo agoMaybe among the general mac population they are a rounding error. But among the mac population who actually peeks behind the curtain and uses homebrew?
- jrmg 4mo agoMaybe I’m just biased because it’s what I’ve done personally, but almost everyone using an old Intel Mac as a server is surely running Linux?
- asdff 4mo agoIf your clients are all macs it is just nicer keeping the server on macos imo. mac os is unix after all so you don't have any software incompatibilities for tools you'd probably run on the server. Time machine support on the server is built in, instead of being a sort of hack with samba if you wanted to try and run it on a linux server. I haven't messed with it much but there might be some clever stuff you could do with applescript and triggered actions, maybe schedule your compute jobs from your calendar app for example.
- frollogaston 4mo ago
- phplovesong 4mo agoDoes homebrew still do that insane thing when you want to upgrade a single package it tell you "hold my beer" and starts installing postgres and some obscure python version?
- lkbm 4mo agoAre you referring how it does a `brew upgrade` when doing a `brew install`? It should tell you how to disable that whenever it happens: > Adjust how often this is run with `$HOMEBREW_AUTO_UPDATE_SECS` or disable with > `$HOMEBREW_NO_AUTO_UPDATE=1`. Hide these hints with `$HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
- shikck200 4mo agoWhy is this not the default? I removed homebrew years ago, because it was just full of nasty surprises like this. Does homebrew still share dependencies? Previously you could not have package A with a transitive dependency of lib-X = v1.2 and B that requires lib-X = v.0.7.
- mikemcquaid 4mo agoThis behaviour came about because, before we did that we ended up upgrading just what you wanted and breaking other packages by mistake. It’s taken a long time but we’re finally at the point where we do (pretty much) only upgrade the minimal software we need to actually avoid breakage rather than the previous “better safe than sorry” conservative approach. We also now tell you by default everything we’ll upgrade before we do it (unless you say “upgrade foo” and all we are gonna do is upgrade foo). So: we’ve maybe solved this issue and maybe not. The perfect outcomes for everyone here is pretty much impossible given the original design of Homebrew. MacPorts or Nix or Mise are likely a better fit in that case.
- jamesgill 4mo agoI know this runs on Linux too. As a Linux user, I'm unclear on why I might use this instead of apt or dnf, for example. Any Linux users out there have experience with both Homebrew and one of these?
- riffic 4mo agoHomebrew provides access to a massive catalog of software, including many tools that are not packaged for Fedora, Debian, or Ubuntu. Homebrew relies on a high level of automation in GitHub actions, which ensures users get the latest versions of tools quickly, rather than waiting for distribution-specific repositories. The Homebrew approach also decouples the underlying system from what you choose to install in user-space.
- latexr 4mo agoYou can run Homebrew on Linux without admin privileges. Useful e.g. for shared hosting.
- analog_daddy 4mo agoSmall note: You need admin privileges only once for the first install which creates a new user `linuxbrew` and everything is based around `/home/linuxbrew` prefix. The issue is on systems where getting an admin access is not possible, you cannot ‘reliably’ install to a different prefix. It is currently unsupported. Honestly, I would settle for a custom prefix if it tells me exactly what packages will break and what won’t without having to read each and every formula recipe. That’s one thing that bothered me for a while and I did not have the willpower to explore that direction without having community support.
- theragra 4mo agoYou can have multiple versions of tools installed. But overall, homebrew plays well with atomic distros. They are thing in itself, yet getting more popular lately. Im using them at home and on the server, and it feels calmer, because I can't fuck up whole system easily. Considering I'm using llms without sandbox often, this is pure gold.
- 4mo ago
- shawkinaw 4mo agoCould really use a good rollback mechanism, is there one in the works perchance? I have broken my home server multiple times with bad InfluxDB and Grafana updates, and rollback was a huge pain. I’ve now disabled cleanup so old versions of packages are kept, but there must be a better way.
- klodolph 4mo agoI recently switched back to Homebrew from Nix, and the three big factors in that switch are: - Brew seems to have better support for the packages it has, compared to Nix where it seems a percentage of packages are not as well maintained, - Better Mac support; some Nix packages have features disabled on macOS, I think just because the maintainers of this packages don’t have a Mac for testing, - Better UX. Obviously I miss the reproducibility of Nix environments and the ability to easily create my own flakes with specific packages, but on the balance, Brew has won me back. (I still like Nix, and FWIW we use Nix at work.)
- mikemcquaid 4mo agoVery glad to hear this, thanks for posting.
- Fethbita 4mo agoI use nix-darwin and also manage my homebrew packages with it. Maybe you can take a look at that. May I ask for what do you use it at work? I have a few places I think nix might suit but I can’t really put my finger on it.
- klodolph 4mo agoI’m not sure what I would get out of nix-Darwin. It looks like it does not solve any of the problems I am trying to solve? I don’t need or want configuration management on my personal systems, except for the web servers, which I manage using Terraform and Ansible (I am happy with these). We use Nix at work for all sorts of stuff. Binaries run in production from Nix paths. Software we build has dependencies in Nix. People on workstations run commands from Nix paths. The OS is not Nix, but the Nix package manager looks like it’s on its way to consuming most of our dependencies. It is not used for building or deploying our code, though.
- commandersaki 4mo agoI was interested in Nix because it could automate setup and configuration of macOS features. But all it does is usually run defaults or some intermediatary. In the end I stuck with brew and wrote an idempotent setupmac() function in my bash_profile (I use bash 5) with the aid of chatgpt since it knows all the cool defaults commands, and it’s pretty much solved setting up a new account or mac (alongside a Brewfile I maintain in my dotfiles). I don’t need any of those highfalutin tools.
- riffic 4mo agohappy Bluefin Linux user and can vouch that the Homebrew experience in Linux is great as well. Really excited for where things are going.
- paulddraper 4mo agoI tried hosting a homebrew tap, after hosting apt and yum repositories. That was when I realized Homebrew is much, much harder. Your server needs to implement the git protocol. You can't just stick it on some server with a CDN in front of it, you need to run and fortify a git server. Strange choices IMHO.
- theragra 4mo agoI think it is focused on GitHub. It might not be suited for many people this way, but it works well. Opionated design.
- paulddraper 4mo agoWell no one ever had issues with GitHub.
- sebiw 4mo agoShoutout to all the people making Homebrew possible! You rock! Everyone should consider donating to the project: https://opencollective.com/homebrew https://opencollective.com/homebrew
- chuckreynolds 4mo agoBrew is so good... just sponsored on github. Thanks for the hard work!
- covratools 4mo agoThank you!!
- shevy-java 4mo agoHas anyone tried it on Linux? It has been several months since I last tried it on Linux. I found some things worked but others did not. Has anyone more recent experiences here, say, within the last 6 months, on Linux specifically? I am using my own custom "package" manager in ruby, but naturally it is nowhere near as sophisticated as homebrew. I am looking more towards complementing this, but these days I also lack time for more thorough testing, so I try to minimize pain points (and thus also less frequently use software written by others for the most part, unless it is a key project such as libreoffice and what not).
- theragra 4mo agoWdym tried? There are many thousands of users of Linux homebrew, mostly users of atomic distros. I am one of them. I was so happy using homebrew that I've added new formula to its repo, far2l-tty
- jwr 4mo agoThanks for all the work you put into this over the years. Homebrew became my go-to solution for installing software on my Macs (after MacPorts) and I just realized that someone has been doing all that work for me for so long. Much appreciated!
- e40 4mo agoJust want to thank you, Mike. I love Homebrew and wouldn't know what to do without it. My company sponsor's the project on github and I recommend that everyone consider helping out.
- mikemcquaid 4mo agoThanks for the kind words and sponsorship <3
- maxloh 4mo agoHomebrew is so good that I use it on Linux whenever possible. Most Linux package managers cannot separate user-installed packages from system packages. This makes cleaning up your workstation nearly impossible and a pain in the ass, since you can't tell what should be removed, or more importantly, what can be removed. Also, most native package managers update much slower than Homebrew, meaning you often only get outdated packages.
- saghm 4mo ago> since you can't tell what should be removed, or more importantly, what can be removed Isn't that what dependency detection does? Whenever I'm not sure if something can be removed, I just try to remove it, and if it would break something else, the package manager tells me. I can broaden my scope and see if that's also an unnecessary dependency for something and follow the chain, with it eventually ending up with a set of packages where I actually get the prompt to proceed or not (meaning nothing in it is a required dependency for anything remaining), or I see a package I definitely want to keep around and stop. If I'm interested in what's part of the base system, I just check the metapackage for the base system. This doesn't sound like something that's a problem with package managers in general compared to maybe some distros just using them poorly.
- SomeHacker44 4mo agoCurious about this. Usually I try to get an Apt source (I use Ubuntu). Why would I want to use brew on Linux? I stopped using Macs and brew around 2018 when Apple started closing down it's macOS for a few years and got sick of it. Thanks!
- thiht 4mo ago> around 2018 when Apple started closing down it's macOS Did I miss the memo?
- terminalbraid 4mo agoHow do you square advocating for the "Open Source Resistance" which touts "stop asking for permission" to do software and then saying "we need everything on MacOS to be signed and will be dropping packages that don't get Apple's permission"? I'd consider donating, but I find that behavior to be part of squeezing free computing and participating in and advocating for the corporate erosion of ownership of one's hardware environment.
- zamadatix 4mo agoOSS Resistance is about not asking for time to do something yourself while removal of unsigned casks is about what they host in the official Homebrew/cask repo. You're free to make & use your own tap to use with Homebrew without asking, so there's not really anything to square between the two stances - any conflict all comes purely from your 3rd stance about signing in general. I just threw them a small donation for supporting this software for so long, even if it's only 98% how I'd want the project to be run all these years myself.
- mikemcquaid 4mo agoI square them because both of them allow me to do lots of open source work and enjoy it. Your signing point is not accurate. It doesn’t apply to all packages, only casks in the official tap. With casks the trust model, particularly on things that auto-update and don’t expose versions or checksums on download URLs, heavily relies on Apple’s security guardrails. We pushed against them for a while but Apple’s direction of travel made it clear that it was a waste of our energy and that we were at risk of compromising our users through doing so. You can still automatically remove quarantine in third-party taps as desired, we’re just making it less easy to do so because we consider it a security feature that should require a deliberate bypass. I don’t think anyone is obliged to donate to Homebrew but this sort of framing, assuming you use Homebrew, isn’t great. If you find what we do morally distasteful: go use something else. MacPorts, Mise and Nix are all good. This will be better for everyone than using us begrudgingly.
- nosioptar 4mo agoI used OSX for about a year about 10 years ago. Homebrew was what made it worth using OSX. Thanks for all the effort put into homebrew. I'd use it today on Linux, but I'm pretty anal about only using software from the distribution repos (or compiled locally if not available.)
- airwarmedd 4mo agodamn, I can't believe, it's still getting updates. found out homebrew 6 months ago, I'm awe! amazing product
- napolux 4mo agodid google apologize for not hiring you?
- mikemcquaid 4mo agoYou’re thinking of mxcl, the creator, not me. I also applied and failed a final stage job interview at Google (and various other places over the years) but never really bothered me that much. Ironically I think I’d probably never have started working on Homebrew if it had.
- napolux 4mo agooh sorry i was wrong, glad it happened then, and thx for your work!
- mikemcquaid 4mo agoNo apologies needed thanks for the kind words! <3
- mattbettinson 4mo agoOkay, but can you reverse a binary tree?
- yesitcan 4mo agoWe should all be ashamed of the interview culture we have created in this industry.
- mattbettinson 4mo agoI didn't do shit :D
- holysantamaria 4mo agoI will try this new release of brew but I have been extremely satisfied with determinate nix so far. It completely changed my confidence in installing new stuff
- satvikpendem 4mo agoThank you for your work on Homebrew, I use it every day. On the matter of speed and parallel downloads, how does this release compare to Zerobrew [0]? On another note, to commenters here, I've been using brew bundle with the Brewfile more and more these days as a declarative list of all user packages installed, should I just move to Mise or Nix instead? What are the benefits and drawbacks? Last time I used Nix on my MacBook a few years ago it seemed to brick my whole system so not sure what that was about. [0] https://github.com/lucasgelfond/zerobrew https://github.com/lucasgelfond/zerobrew
- JamesSwift 4mo agoMost nix users still use brew for casks on mac. Using brew bundle as your interface to it makes things almost seamless, so its not too icky overall. eg I manage my Brewfile declaratively with home-manager, and then run this on file change HOMEBREW_NO_UPDATE_REPORT_NEW=1 HOMEBREW_NO_AUTO_UPDATE=1 brew bundle --file="$HOME/Brewfile" --cleanup --no-upgrade
- golem14 4mo agoFor those of us who use homebrew today, how do we get the new cool benefits ? Is there a command to upgrade (like ```brew upgrade```) everything to the new hotness, do we need to uninstall everything and reinstall ? It's probably discussed somewhere but didn't find when glancing at the OP.
- m0do1 4mo agothere is `brew update`
- golem14 4mo agosure, but is that doing the same as deleting all installed sw and then reinstalling it using the new safeguards? Assuming I have already installed something homebrew 6 would not let install, will I get a warning?
- golem14 4mo agoI tried brew upgrade on my setup, got a bunch of warnings about untrusted taps, and it upgraded what it could, and updated itself to homebrew 6.0.0. So I guess, yay ?
- frizlab 4mo agoThanks for your hard work! I discovered Homebrew now sometimes asks whether I actually want to install a formula (e.g. `brew install ffmpeg` asks whether I want to install it because it has dependencies). Is there a way to disable this behavior and revert to the previous one?
- mikemcquaid 4mo agoThanks :) —-no-ask, —-yes, -y or HOMEBREW_NO_ASK=1
- frizlab 4mo agoNice, thanks! Added to my configuration file :) https://github.com/Frizlab/frizlabs-conf/blob/663e287eadadd9dbb92c8e03abc622245074b24e/src/components/dotfiles/files/_.profile#L32 https://github.com/Frizlab/frizlabs-conf/blob/663e287eadadd9...
- pdntspa 4mo agoDoes this handle macOS installs with multiple local users? I have to su into account 1 if I want to brew install something from account 2
- mikemcquaid 4mo agobrew as-console-user may help here. We don’t support a multiuser setup so there may be some limitations but we try our best to address problems as they come up.
- JimDabell 4mo agoIs there more documentation than this? > as-console-user command [args …] > Run a Homebrew command as the active macOS console user. > This is intended for MDM, Munki and Jamf workflows where brew is invoked as root but Homebrew operations should run as the logged-in console user. The nested command is always dispatched through HOMEBREW_BREW_FILE. — https://docs.brew.sh/Manpage#as-console-user-command-args- https://docs.brew.sh/Manpage#as-console-user-command-args- This isn’t very informative. Is there more documentation somewhere else that I’m missing? Google search doesn’t really find much. I currently have a dedicated `homebrew` user that I access with `alias brew='sudo --set-home --user=homebrew --chdir /Users/homebrew -- brew' but it’s got a number of shortcomings. What will as-console-user do differently to this?
- eikenberry 4mo agoDoes anyone know of a good comparison of the process to add a package to the system? I've used multiples of these sorts of user-land package managers and always find tools that aren't in the repositories that I have to install manually. It'd be great to just add these tools to an existing package manager but I've never seen this aspect of these package managers compared.
- theragra 4mo agoComparison of which managers? Adding package to homebrew is straightforward, except that it has a lot of (reasonable?) requirements to make it right. Basically, you make a PR with a "formula" to their main repo from your branch. Formulas are ruby programs. LLM can do it easily, and such code is accepted if correct.
- eikenberry 4mo agoHomebrew, mise, flox, devenv are the first ones I can think of.. Arch Linux's AURs get an honorary mention as they are used in the similar way on that distro and Arch + distrobox gets the same results. A quick search shows there are many others but it doesn't look like a comparison exists for this area and I'm getting OK results out of AI comparisons. I'll just dig into it that way.
- theragra 4mo agoI think homebrew is different in comparison to flox,mise and devenv. Later are for reproducible dev envs, former is for installing tools globally where you cannot/do not want traditional package managers or building from source.
- 12_throw_away 4mo agoWell, I might as well ask my tech support question here :) I just ran the upgrade to 6.0.0, and it downloaded so many things concurrently that it killed my wifi (old router). Is there a way to cap bandwidth or maximum concurrent connections? (this is something I have to do in many download heavy apps, e.g., steam)
- srik 4mo agoI don't think homebrew allows throttling bandwidth but it does let you set maximum concurrent downloads though. I believe the default is twice number of cores; you must have quite a few :) Set this to your preference: HOMEBREW_DOWNLOAD_CONCURRENCY
- grosswait 4mo agoYou could use network link conditioner to artificially limit, or one of the apps that can enforce per app limits such as tripmode
- egorfine 4mo ago> The master to main migration begun in 4.6.0 continues: more repositories no longer update master, GitHub Actions warn @master users to migrate to @main and the sync-default-branches workflows are removed Speaking of important things.
- Hamuko 4mo agoI don't understand how the tap trust improves security at all. If I'm installing something from a third-party tap, instead of running tap + install, I now run tap + trust + install? How does this protect me against compromised taps?
- thealistra 4mo agoExactly - so far seems like a windows vista “are you sure?” Modal. Are we missing something here?
- mikemcquaid 4mo agoYou can now trust individual files inside taps. It was not clear to all users before now that some commands (before —-eval-all, a mess this replaces) would evaluate all packages Ruby code from all taps). This cleans that up and some other security degrading edge cases I won’t bore you with here. Trust is also user specific now. It’s not a silver bullet but it does help address some potential attacks and gives us a foundation to improve on over time.
- whinvik 4mo agoI love using Homebrew but I wish there was more support for pinning. I recently setup a new remote VM and tried to use a Brewfile for my setup. Turns out I cannot pin Neovim and so had to force upgrade my setup to 0.12. Forced upgrades are not nice.
- mikemcquaid 4mo agoTry `brew version-install` (which uses `brew extract` and `brew tap-new` under the hood)
- tommica 4mo agoSuch an amazing project!
- orsenthil 4mo agoThank you. It is just funny and interesting to note people seeing Homebrew as their choice of default package manager on linux! It shows that people clearly care about the technically better solution which has a very good UX over the native choices that linux distros made over years, be it apt or yum or something else. I install homebrew as a first thing on my corporate amazon linux too as many system packages are lacking, and I couldn't get neovim in a different way.
- awesome_dude 4mo agoDependency management is still one of the hardest jobs in systems (languages, Operating systems, distributed applications, etc) - hat's off to you and your team for the hard work keeping everything together
- petetnt 4mo agoHomebrew 6.0.0 seems to be the first major version of brew that is heavily written using AI. There’s new document at https://docs.brew.sh/Responsible-AI-Usage https://docs.brew.sh/Responsible-AI-Usage that was added 11 hours ago. Do you think that these guidelines have been followed consistently since 5.0.0?
- mikemcquaid 4mo agoI would say I’ve embraced AI most heavily and I wrote this document so: yes. I review AI written code on Homebrew the same way I review code from a no avatar GitHub user with no previous contributions. The experimental and abandoned brew-rs frontend was more “vibe coded” using my knowledge of how to benchmark and test homebrew accurately and with a shitload of manual testing. Maybe that’s why the performance wasn’t as good as expected, who knows.
- IgorPartola 4mo agoIs Homebrew still tied to GitHub or has there been any move to provide redundancy across multiple providers? Also coming from what I consider traditional package managers such as apt, rpm, emerge, pkg, etc. I am still confused on cans, taps, kegs, formulas, etc. Does anyone have a good and concise guide to what all these features are?
- gigatexal 4mo agoHomebrew is the first thing I install on a new Mac. I love it. Thank you everyone for all the work. Looking forward to 6.0 and all the security stuff yay. I hope the apps I use that their maintainers adopt the changes.
- alwillis 4mo ago> Homebrew is the first thing I install on a new Mac. Absolutely!
- theragra 4mo agoI was so impressed with Homebrew, I've added a formula for far2l-tty. Thanks for your job!
- mvdtnz 4mo agoI don't think any software has ever wasted as much of my time as Brew. I can't think of a single positive experience I have had with it. I now absolutely refuse to use it for any reason.
- m463 4mo agomacOS 27 (Golden Gate) drops Intel support, so ... in September 2027, macOS Intel x86_64 will be unsupported entirely and all related code deleted. hmm... that's too bad.
- jedahan 4mo agoI wish tap trust operated at the author/committer level than identifier level.
- dzonga 4mo agomike, thanks for ur hard work. n all the maintainers b4.
- commandersaki 4mo agoHomebrew is a non-profit project run entirely by volunteers, not employees. 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, OpenCollective and Patreon. I donate to a lot of open source projects that I benefit from, but I’ve never really thought about Homebrew. I will get onto it.
- AussieWog93 4mo agoI'm amazed they're not sponsored by Apple themselves, or at the very least major mac-forward Dev houses.
- cromka 4mo agoIf it wasn't for Brew, macOS would have no chance against Linux as a dev platform.
- ryanisnan 4mo agoI think you're right - it's one of the reasons I prefer a mac as a dev platform.
- frumplestlatz 4mo agoApple developed — and for many years afterwards, hosted —- MacPorts.
- cromka 4mo agoApple employees did. Not Apple themselves. As for hosting, it was hosted on an equivalent of SourceForge, where many other opensource projects unaffiliated with Apple were. And we all know how MacPorts failed to actually gain any significant momentum.
- 4mo ago
- mococa 4mo agoThanks for the homebrew and all work over those years!
- phs318u 4mo agoBack in the day, pkgsrc was a thing (cross-platform; originally from NetBSD). Source based package distribution, it explicitly allowed for unprivileged installation to a prefix of your choice. I became very familiar with it as an ordinary Solaris user 20 years ago.
- jperkin 4mo agoIt's still a thing: https://pkgsrc.smartos.org/install-on-macos/ https://pkgsrc.smartos.org/install-on-macos/
- linsomniac 4mo agoTrying to understand if nix/nix-darwin is an alternative here. I just switched over my work machine to NixOS and I'm totally loving it. So far I've only used nix on Mac to install Wezterm, because I need the Linux and Mac versions to be exactly the same and the normal Mac downloader and Nix don't have matching versions, and that worked well.
- bodzioney 4mo agoTo brew? Sort of. I use nix-darwin for everything. However, some things don’t play nice with nix. In that case you can use nix-darwin to manage brew. Basically you give it all the packages you want, and it generates a brew file and uses it.
- cbeach 4mo agoSlightly tangential, but I went to set up Homebrew today on a new Mac. Stupidly clicked the top link in Google (which was sponsored but not obviously so). Took me to a spoof Homebrew page. I ran the script. Typed in my Mac password like a fool when prompted, and nothing happened. Then I realised what an idiot I’d been. Claude found evidence of an exfiltration malware on my laptop and I inmediately wiped the device and started again. Revoked all my keys, rotated all my passwords. And now I pray the damage is contained. I can’t believe that Google would have let this slip through. I probably wasn't the only one that got caught out.
- daeho-ro 4mo ago[dead]
- sgt 4mo agoI've heard of that but never experienced it on my Google. Weird. I just retried that now and it's giving the correct link. Maybe that's why it's not being fixed.
- cbeach 4mo agoI reported the ad to Google immediately, and when I checked back an hour later the search results were clear. But I suspect it's only a matter of time before another one slips through the net. I think what happens is a legitimate business with a history of legit Google advertising gets compromised by malware, and then their Google adverts are flipped.
- cbeach 4mo agoJust heard back from Google regarding my report of the ad that served malware to me: > Dear Chris, > We’re writing to let you know that we reviewed your report (ID 579240969280369002). > Here's what we found > We decided not to take this ad down. We found that the ad doesn’t go against Google’s policies, which prohibit certain content and practices that we believe to be harmful to users and the overall online ecosystem. I think the safest thing I can do right now is avoid using Google for searches and instead use Claude, which at least has functioning safeguards, and is less easily poisoned than Google Search.
- tiahura 4mo agoSeems like the sort of package that waiting on 6.0.1 might make sense.
- redml 4mo agoabsolutely solid, thanks!
- hanzeweiasa 4mo ago[flagged]
- academicfish 4mo agoThanks
- drgo 4mo agoAs a daily user of Homebrew for > 10 years, thanks for all your hard work.
- alsetmusic 4mo agoTop three things I install first are Sublime Text, Homebrew, and modern Bash (I'm not switching to Zshell). Great tools make computing enjoyable.
- strunz 4mo agoHomebrew first, then use it to install Sublime and Bash!
- luckykiddie 4mo agoI have been used Homebrew for years, the first choice to install an App is using the `brew install --cask` command. But can you please support old Mac too? As you upgrade brew, many brew break for old Mac since the old library/framework. And in this situation, i had to switch from brew to macports plus brew. It's a pain for old Mac to using brew.
- mikemcquaid 4mo agoSorry, we don’t have the resources to do so. We are a team of volunteers and rely on donations to pay for our CI infrastructure. MacPorts is a better fit for older hardware.
- hk1337 4mo agoDoes this fix the issue why the aws session-manager-plugin has to be removed? Also, what about installation directories? I always install homebrew to ~/.brew since I know I’ll always have access to my home directory without sudo.
- ProAm 4mo agoRemember when this guy couldn't get hired at Apple, because Apple doesn't respect their customers or developers.....
- mikemcquaid 4mo agoI’ve never applied for a job at Apple. You’re maybe thinking of the creator mxcl’s viral tweet about not getting hired at Google. He did work at Apple for a while on SwiftPM. I also am in the “applied and didn’t get hired by Google” club which let me move back to Scotland instead :)
- ProAm 4mo agoAhh that is what I was mistaking Google, not Apple. My mistake.
- user3939382 4mo agoWith NetBSD and Macports, when I need to find a file I can predict where it is almost every time. With FreeBSD, Linux, and Brew, it feels like “here we go” while I guess. Since tools in categories like this are similar, things like this end up being tie breakers for me.
- hanzeweiasa 4mo ago[flagged]
- usernametaken29 4mo agoMac without brew just wouldn’t be Mac. Huge respect!
- nxpnsv 4mo agoI noticed the change to trust already in the previous release. To uninstall something from a not yet trusted tap, I first have to trust it, then uninstall, and then untrust it. This feels a bit weird, but maybe it makes total sense...
- mikemcquaid 4mo agoThis sounds like a bug. Can you file an issue?
- kh2engab 4mo agoIs there a way to run the cask/tap search via browser address-bar %s? Like this: https://www.digikey.com/de/products?keywords=%s https://www.digikey.com/de/products?keywords=%s
- port11 4mo agoAsk mode being the default is stellar. Thanks Mike! Apple could’ve made something like this, or at least pay you handsomely for making Macs better to use.
- hendry 4mo agoI’ve also dropped nix-darwin for homebrew on my new m5. Fantastic work Mike and team, though I’m still a little confused about cask upgrades.
- hanzeweiasa 4mo ago[flagged]
- MikeNotThePope 4mo agoThis is somewhat impressive, but can you reverse a binary tree?! https://www.quora.com/Whats-the-logic-behind-Google-rejecting-Max-Howell-the-author-of-Homebrew-for-not-being-able-to-invert-a-binary-tree/answer/Max-Howell?share=100e0bb6&srid=unBJ9 https://www.quora.com/Whats-the-logic-behind-Google-rejectin...
- bartvk 4mo agoYeah, I remember this story too. Crazy, it most definitely feels like the organization missed an opportunity.
- mattcox12 4mo agoInternal JSON API being default is the real improvement here. brew update has been too chatty for years, cutting that down makes a big difference.
- ricksunny 4mo agoIs uninstalling homebrew still as much of a mess as it was when I tried to do it in 2022 (when it left behind a messy install footprint on my Mac)?
- deleted 4mo ago[deleted]
- sgt 4mo agoWell done, a milestone. I can't say how much I appreciate Homebrew, been using iti for years, at least 15 years.
- pojzon 4mo agoThank you fore homebrew. It makes macos usable.
- TomMasz 4mo agoHomebrew has been a gamechanger for me, thanks for all your efforts!
- hanzeweiasa 4mo ago[flagged]
- OJFord 4mo agoAh, I was excited by 'sandboxing on Linux', but it's only for build. How many more supply chain attacks will it take for someone to build a really great sandboxing/permissioning system, that's easy enough to use that we actually use it? Say I install an `ls` alternative (because it's on the HN front page as 'ls but in lang du jour' or whatever) – it should be really simple for me to allow it read-only access to only the passed directory. I don't think firejail or apparmour even supports that, and it'd probably take me half a day to figure it out in bubblewrap. I just want a mobile-OS style pop-up the first time programs try to do something for me to deny, approve always, approve this time, approve by dir, or custom thing matching on the args.
- lanycrost 4mo agoYou need to rethink about this tierings https://docs.brew.sh/Support-Tiers https://docs.brew.sh/Support-Tiers many teams have old MacOS versions for build and other purposes and they face issues when they need to use packages for old versions. For example I use fully automated machine creation (packer, tart, vmware, etc.) and when we need to update let's say Monterey image it require to compile bunch of packages which is real headache.
- miki123211 4mo agoIs there any good reason for Homebrew to keep its .tar.gz files around, even after packages are installed? I'd personally love a "Homebrew light", compatible with most of the ecosystem (sans git taps, Ruby formulas and binary packages), written in a language with fast startup times, not keeping unnecessary files on disk, with support for parallel downloads, and terminology that is much easier for the newcomers to remember and keep straight.
- divbzero 4mo agoI totally missed the memo that Homebrew has supported Linux since 2019. https://brew.sh/2019/02/02/homebrew-2.0.0/ https://brew.sh/2019/02/02/homebrew-2.0.0/
- ronef 4mo agoA small note of amazement from Nix/Flox person here. Incredible to see this release and congrats! Mike, you're an allstar for so many years of contributions!
- NamlchakKhandro 4mo agoCan you pin PKG in brew yet? Honestly just use mise instead.
- maybal 4mo agoLinux sandbox is long overdue. Was kinda embarrassing that macOS had it first for a tool that runs on both platforms.
- brianmartin039 4mo agoThe internal JSON API sounds good for speed but I wonder if it'll break stuff for people using custom scripts. Hope they tested that well.
- jadecarter68 4mo agoTap trust is nice but I bet most people will just blindly trust everything anyway. Like we do with every other package manager.
- rubyevans109 4mo agoThe internal JSON API sounds good for speed but I wonder if it'll break stuff for people using custom scripts. Hope they tested that well.
- zoetaylor00 4mo agoLinux sandbox with Bubblewrap feels overdue. macOS has had it forever, so it's about time Linux got some love.
- lejeanvaljean 4mo agoI thought it was an app to help me make beer at home