| ▲ | Show HN: Homebrew 6.0.0(brew.sh) |
| 699 points by mikemcquaid 8 hours ago | 166 comments |
| 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! |
|
| ▲ | hk__2 3 hours ago | parent | next [-] |
| Hi 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 3 hours ago | parent | next [-] | | 17 in September. Thanks for all your great work at the time! Hope you’re well <3 | |
| ▲ | maxloh 2 hours ago | parent | prev [-] | | Homebrew 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. | | |
| ▲ | Washuu 2 hours ago | parent | next [-] | | > Most Linux package managers cannot separate user-installed packages from system packages. And because of pinning versions to LTS releases on certain Linux distributions many times those packages stay out of date for years. Which is quite annoying. | | |
| ▲ | xenophonf 2 hours ago | parent [-] | | > quite annoying It's also quite stable, which you'd think more people would prize given the recent and on-going supply chain attacks. | | |
| ▲ | thewebguyd an hour ago | parent | next [-] | | Stable as in unchanging, sure. Stable can also mean "you get to keep all the bugs present in this version for the next 4+ years" | | |
| ▲ | jandrese 21 minutes ago | parent [-] | | Or worse, the kernel moves beyond the package in the repo so a year and a half later it doesn't even work anymore. VirtualBox is really bad about this. |
| |
| ▲ | happyopossum 2 hours ago | parent | prev [-] | | Given the recent dramatic uptick in vulnerability discoveries, it's also prone to being quite insecure... | | |
| ▲ | xmprt an hour ago | parent [-] | | LTS still typically get security updates. That's what the support in long term support means. | | |
| ▲ | moskimus 12 minutes ago | parent [-] | | This gets thrown around a lot, but it's not entirely true. Depending on the particular distro, only certain core packages are likely to get updates on LTS releases. Non-core packages may just get left to rot until the next LTS release. Specifically Ubuntu follows this. A lot of their non-core packages just get imported from Debian and then just sit unmaintained until next release (this goes doubly if not using Ubuntu Pro). |
|
|
|
| |
| ▲ | colordrops 5 minutes ago | parent | prev | next [-] | | Brew is probably serving your needs, but you might also want to look into Nix/NixOS, which takes what you are talking about to the next level. | |
| ▲ | vondur 2 hours ago | parent | prev | next [-] | | Homebrew is the default on Bluefin Linux since most of the system is immutable. I like it since I’m so used to it on my Mac. | |
| ▲ | pram 2 hours ago | parent | prev [-] | | Yep homebrew on an LTS distro is pro. |
|
|
|
| ▲ | PufPufPuf 3 hours ago | parent | prev | next [-] |
| I have switched my full OS-level dev env to 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. |
| |
| ▲ | chuckadams 2 hours ago | parent | next [-] | | As a PHP developer, I found mise's support to be pretty sub-par compared to Shivam Mathur's packaging work for homebrew. Most of my projects are using Docker anyway, the local PHP is for stuff like static analysis that doesn't need it. And I've got a couple using Nix, which laughs at everything else (but damn, the overall UX is still even more hostile than git). | |
| ▲ | thatxliner 2 hours ago | parent | prev | next [-] | | Glad you're having a good experience, but I personally switched from Mise back to Brew. I don't know if it was just my skill issue, but there were too many packages which found Mise to be problematic. | | | |
| ▲ | notpushkin 2 hours ago | parent | prev | next [-] | | Hmm, `mise use -g docker-cli` works for me. `docker compose` is a bit trickier – it gets installed as `docker-cli-plugin-docker-compose`, but docker-cli doesn’t seem to pick it up. I’ve added a symlink as `docker-compose` for the time being. Also using brew for casks, and I think there’s a couple tools I couldn’t install with mise (e.g. pngpaste and zbar for scanning QR codes from screenshots). | |
| ▲ | jdxcode 3 hours ago | parent | prev | next [-] | | mise kind of supports dependencies, just not in the way people expect coming from any other package manager. The dependencies in mise are not automatic and all of them need to be manually defined. They're to get around ordering issues since mise installs in parallel, e.g.: if you use "pipx:black" you need to wait for python to finish installing. (This is the "depends" option on tools") This is intentional as mise is not intended to be a full bootstrapping solution in the way homebrew/nix is, mise is designed to be an overlay on top of existing systems. So if you want to manage python with brew and black with mise it basically just works without extra configuration. I think this design decision has paid off in spades. It sounds like a drawback but at the end of the day it's probably the #1 reason users find mise easy to use. | | | |
| ▲ | nesarkvechnep 3 hours ago | parent | prev | next [-] | | I did the same but with Nix. | | |
| ▲ | dnlzro an hour ago | parent | next [-] | | Me too, but it definitely doesn't qualify as "zero glue code." | |
| ▲ | dominotw 25 minutes ago | parent | prev [-] | | me too but feels like bringing bazooka to a watergun fight. might go back to brew |
| |
| ▲ | esafak 3 hours ago | parent | prev | next [-] | | Don't forget that mise depends on package registries, to install itself as well as its tools. | | |
| ▲ | PufPufPuf 3 hours ago | parent [-] | | Mise 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/ | | |
| ▲ | esafak 3 hours ago | parent [-] | | You'll see that mise recommends installing itself exclusively through package registries: https://mise.jdx.dev/installing-mise.html pypi, npm, and even github (through releases) are registries. curl | sh is an anti-pattern. It passes no security check. | | |
| ▲ | PufPufPuf 2 hours ago | parent [-] | | Exclusively? No, the very first option is the install script, which downloads and unpacks the correct binary for your OS from the Mise website: curl https://mise.run | sh ...which is the same way Homebrew is installed too. |
|
|
| |
| ▲ | threecheese 3 hours ago | parent | prev | next [-] | | Do you have an example? Sounds interesting. | | | |
| ▲ | altern8 an hour ago | parent | prev [-] | | That's kind of weird that you're using this announcement to steer people to another project. Or am I missing something..? |
|
|
| ▲ | vitorsr 3 hours ago | parent | prev | next [-] |
| Thanks 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/ [2] https://github.com/ublue-os/brew |
| |
| ▲ | PufPufPuf 3 hours ago | parent | next [-] | | The 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.) | | |
| ▲ | PufPufPuf 6 minutes ago | parent | next [-] | | I looked around and found this fun project -- basically "Arch Linux in userspace on top of any other Linux": https://github.com/fsquillace/junest | |
| ▲ | bluebarbet 2 hours ago | parent | prev | next [-] | | In Debian-Ubuntu it's become a standard pattern to use `curl` or `wget` to add a third-party `deb` repo with keychain integration, because for whatever reason there's still no `apt` command for this obvious scenario. Really grinds my gears. | | |
| ▲ | hoherd 42 minutes ago | parent | next [-] | | That is not a "userspace package manager" though. That still requires root. | |
| ▲ | chuckadams 2 hours ago | parent | prev [-] | | Doesn't apt-add-repository do all that? | | |
| ▲ | bluebarbet an hour ago | parent [-] | | For whatever reason, nobody seems to use it. It must be a good reason or else they would. [PS: It's because it doesn't add the signing keys and maybe also because it's too associated with Ubuntu.] This, for example, is the official way to add Mozilla's repo: echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | sudo tee -a /etc/apt/sources.list.d/mozilla.list > /dev/null
And here's Signal's instructions: # 1. Install our official public software signing key:
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg; cat signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
# 2. Add our repository to your list of repositories:
wget -O signal-desktop.sources https://updates.signal.org/static/desktop/apt/signal-desktop.sources; cat signal-desktop.sources | sudo tee /etc/apt/sources.list.d/signal-desktop.sources > /dev/null
# 3. Update your package database and install Signal:
sudo apt update && sudo apt install signal-desktop
Bonkers. | | |
| ▲ | thewebguyd 27 minutes ago | parent [-] | | I believe apt-add-repository started out as Ubuntu specific for their PPA system, didn't it? It's part of the software-properties-common package. When using it without a PPA (just giving in the repo URL) it won't add the key by default, so you have to follow it up with the wget -qO- https:/mykey.asc | sudo apt-key add - (<< don't to this, apt-key add will add the key to the global trust) early days apt-add-repository also didn't support signed-by for the signing keys. Very early on when you added some PPA, it'd add the repo's GPG key to the global keyring, so you were better off not using it anyway. |
|
|
| |
| ▲ | cosmic_cheese 3 hours ago | parent | prev | next [-] | | At the very least, Linux package managers should have some concept of different layers of packages. For example, there might be layers for “system” (core components), “environment” (display manager, DE, etc), and “user”, each of which are maintained fully separately so they can’t ever step on each others’ toes and break things. Yes, it means there will be some redundancy but for all the trouble and complexity it’s saving I think it’s a worthwhile tradeoff. | | |
| ▲ | chuckadams an hour ago | parent [-] | | Most "immutable" distro flavors do something like this. Back when I ran Aurora, it was rpm-ostree for the core system packages and homebrew in a devbox container for the rest. One incentive for maintaining the layer separation was that rpm-ostree was slow. I've since moved my desktop box to NixOS, where everything is just flakes, but my mac runs circles around it so it's just there for Steam nowadays. |
| |
| ▲ | mikepurvis 2 hours ago | parent | prev | next [-] | | One of the frustrating limits historically with some of these is that when you're already an unprivileged user it's been difficult or impossible to get to a sandboxed environment to perform hermetic or untrusted builds. So like with nix for example you could do a user install and then builds would build as your user, but if you installed as root, then builds would delegate out properly to nixbld users. This has gotten better in recent years with user namespaces but it takes time for it to be adopted and achieve parity with what used to be just jumping to a user who can only write to a newly created dir in tmp. | |
| ▲ | sgarman an hour ago | parent | prev | next [-] | | I'm a total noob in this space but I'm using pacman, paru, yay, shelly. Are those different than "userspace package manager" or are these not relevant because it's Arch? | | | |
| ▲ | e12e 3 hours ago | parent | prev | next [-] | | Well, there was stow/xstow... https://www.gnu.org/software/stow/ https://xstow.sourceforge.net/ | | |
| ▲ | shevy-java 2 hours ago | parent [-] | | Stow 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 3 hours ago | parent | prev | next [-] | | I 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. | |
| ▲ | shevy-java 3 hours ago | parent | prev [-] | | PufPufPuf wrote: > The concept of a "userspace package manager" is something I would expect Linux to have figured out twenty years ago. Each one uses their own package manager right? What I hate is that e. g. debian puts me to conform to their FHS. I want things installed into versioned AppDirs. GoboLinux allows that; NixOS to some extent too (though they used hashed directory names). Debian does not allow me to do that. I don't want to conform to what others wrote; I want software that adjusts to my wants. > Flatpak is more oriented towards GUI apps Have they not recently added a mandatory systemd dependency? I can't use software that things it must force software I don't need or use onto me. |
| |
| ▲ | LelouBil 3 hours ago | parent | prev [-] | | I'm using nix on Bazzite, with home-manager |
|
|
| ▲ | klodolph 3 hours ago | parent | prev | next [-] |
| I 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.) |
| |
| ▲ | Fethbita an hour ago | parent | next [-] | | I 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. | |
| ▲ | mikemcquaid 3 hours ago | parent | prev [-] | | Very glad to hear this, thanks for posting. |
|
|
| ▲ | broxit 4 hours ago | parent | prev | next [-] |
| Thanks 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. |
| |
| ▲ | mikemcquaid 3 hours ago | parent | next [-] | | 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. | | |
| ▲ | drewda 3 hours ago | parent | next [-] | | That doc is very useful and confidence inspiring in terms of being mainly about people and process, rather than about one single technical solution. Relevant parts for those who have cool-downs at the top of mind: > Across Homebrew’s history far more users have been protected by shipping zero-day fixes quickly than have been exposed to npm-style token-theft or crypto-mining attacks, so a global cooldown would be a net negative for most users’ security. The deeper reason Homebrew does not need a general cooldown is that, unlike language package managers, it already separates publishing from distribution: an upstream release does not reach users until it has passed human review, CI and checksum verification, which is the very review window that language-ecosystem cooldowns are trying to recreate. [...] > For ecosystems with a track record of fast-moving supply-side attacks, Homebrew applies a download cooldown: a freshly-published upstream version is not adopted immediately, giving the wider community time to detect and report a malicious release before Homebrew users are exposed. Cooldowns have been added for: Bundler
RubyGems livecheck
npm and pip defaults
PyPI resource resolution
npm and PyPI in bump
| |
| ▲ | broxit 3 hours ago | parent | prev [-] | | Glad to see that Homebrew is taking security seriously. Still, I want to minimize the number of parties who can quickly get new code onto my machine. Your doc says "Human review of each release." What does that actually entail? uv had a release at 10:21am yesterday with 7,060 additions and 2,409 deletions. The new release was available in homebrew at 11:46am. What human review happened there? I don't know of any other OS package manager that ships code this quickly to users. Arch Linux has not pushed the new release of uv yet, for example. | | |
| ▲ | mikemcquaid 3 hours ago | parent [-] | | Our automation or a human submitted a PR, it was built and tested in our sandboxed ephemeral CI environments, a human Homebrew maintainer reviewed the CI results and PR diff and approved it for merge which happened automatically if so. If the ask is "who reviewed the diff": yes, a human didn't do that. That's not actually happening for all packages in any meaningful large ecosystem. I'm still unconvinced a cooldown solves that until e.g. we have an open source security scanner that runs on all Homebrew packages and requires a cooldown. Even in that case, my suggestion would be that we just run it in our own CI and block package release. | | |
| ▲ | broxit 3 hours ago | parent [-] | | > Even in that case, my suggestion would be that we just run it in our own CI and block package release. I agree. > open source security scanner that runs on all Homebrew packages and requires a cooldown. I think that is where all this is going in the longterm. Until then, any upstream shenanigans are more likely to surface in hours 0-48 after a new release than hours 0-4. |
|
|
| |
| ▲ | runjake 4 hours ago | parent | prev | next [-] | | +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 | |
| ▲ | gwerbin 38 minutes ago | parent | prev | next [-] | | It's all rolling release, but Homebrew maintainers have to bump the version, not the software author (unless they put in a PR to Homebrew core or publish their own Tap). What does Arch do here? | |
| ▲ | b33j0r 3 hours ago | parent | prev | next [-] | | Most handle this by having release channels. You would `brew set-channel stable/edge`. It annoyed me this week because I only had a few minutes to try elixir 1.20 after the announcement, and brew lagged behind. You can install erl and elixir by other means (I prefer to run my own toolchains) but it wasn’t worth doing in that moment. Brew has or used to have a source option for some recipes and that basicallllly solves it too, if you squint. | |
| ▲ | briandoll 3 hours ago | parent | prev | next [-] | | It's in this release, see this section: > Cooldowns, livecheck and bumping | | |
| ▲ | PufPufPuf 3 hours ago | parent [-] | | That'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. |
| |
| ▲ | cryo32 4 hours ago | parent | prev [-] | | 100% need this. |
|
|
| ▲ | IgorPartola an hour ago | parent | prev | next [-] |
| Is 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? |
|
| ▲ | philistine 3 hours ago | parent | prev | next [-] |
| The 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. |
| |
| ▲ | saghm 2 hours ago | parent | next [-] | | > We'll lose support from you guys a year before Apple! If only Apple put a fraction of its resources towards maintaining something like homebrew (or paying the people who do), maybe the situation would be different. | |
| ▲ | mrpippy 2 hours ago | parent | prev | next [-] | | At this point that would be a 2018 Mac mini, which can only run Sequoia (which will be out-of-support at the same time as Homebrew drops Intel support). If you want Intel support, MacPorts still runs back to Leopard. | |
| ▲ | stouset 3 hours ago | parent | prev | next [-] | | If 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 3 hours ago | parent [-] | | Maybe 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 2 hours ago | parent | next [-] | | Maybe 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 2 hours ago | parent [-] | | If 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. |
| |
| ▲ | stouset an hour ago | parent | prev [-] | | Yes, to such a stunning degree that I’m having a hard time believing you’re serious. The M1 was utterly transformative. The install base of homebrew is enormous. The proportion who are keeping old Mac hardware around as home servers is minuscule. The proportion of those who are keeping old Intel Macs are a fraction of that, and the ones who aren’t just running Linux on them are yet another fraction. That’s not to say you’re crazy or anything. You do you. But do understand that you almost certainly constitute a nearly irrelevant minority of users of homebrew. |
|
| |
| ▲ | srik 14 minutes ago | parent | prev | next [-] | | A saving grace is they're perfect for linux distros. | |
| ▲ | sunaookami 3 hours ago | parent | prev [-] | | Yeah they also removed support for --no-quarantine flag :/ I only use it for a few casks nowadays and try to avoid Homebrew as much as possible. For CLI stuff I use Nix, Home-Manager and Nix-Darwin. |
|
|
| ▲ | petetnt an hour ago | parent | prev | next [-] |
| Homebrew 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 that was added 11 hours ago. Do you think that these guidelines have been followed consistently since 5.0.0? |
|
| ▲ | sebiw 3 hours ago | parent | prev | next [-] |
| Shoutout to all the people making Homebrew possible! You rock! Everyone should consider donating to the project: https://opencollective.com/homebrew |
|
| ▲ | jedahan 7 minutes ago | parent | prev | next [-] |
| I wish tap trust operated at the author/committer level than identifier level. |
|
| ▲ | satvikpendem 2 hours ago | parent | prev | next [-] |
| Thank 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 |
|
| ▲ | 12_throw_away 2 hours ago | parent | prev | next [-] |
| Well, 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 an hour ago | parent [-] | | I 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 |
|
|
| ▲ | whinvik an hour ago | parent | prev | next [-] |
| I 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 an hour ago | parent [-] | | Try `brew version-install` (which uses `brew extract` and `brew tap-new` under the hood) |
|
|
| ▲ | orsenthil an hour ago | parent | prev | next [-] |
| Thank 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. |
|
| ▲ | terminalbraid 2 hours ago | parent | prev | next [-] |
| How 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 2 hours ago | parent [-] | | OSS 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. |
|
|
| ▲ | egorfine 2 hours ago | parent | prev | next [-] |
| > 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. |
|
| ▲ | 0xbadcafebee 4 hours ago | parent | prev | next [-] |
| Personally 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) |
| |
| ▲ | ryandrake 3 hours ago | parent | next [-] | | I've moved over to MacPorts due to Homebrew's aggressive support phase-out schedule[1]. My daily driver iMac is now in the Tier-3 "go away" bucket. Absolutely loved Homebrew for the short period of time I could use it, but I'm not going to get on the hardware update treadmill just to keep using it. 1: https://docs.brew.sh/Support-Tiers | |
| ▲ | mikemcquaid 3 hours ago | parent | prev | next [-] | | Glad 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. | | |
| ▲ | pjm331 2 hours ago | parent [-] | | and i `brew update && brew upgrade --greedy` every morning with my first cup of coffee because i like to live on the edge like that thanks for all your work! |
| |
| ▲ | PufPufPuf 3 hours ago | parent | prev | next [-] | | I'm in the "switched most to Mise" stage, might look into MacPorts for the remaining stuff, thanks for the tip! | |
| ▲ | bigyabai 3 hours ago | parent | prev | next [-] | | Nix 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 3 hours ago | parent [-] | | Mise 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 9 minutes ago | parent [-] | | Nix 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 |
|
| |
| ▲ | frollogaston 3 hours ago | parent | prev [-] | | I switched to MacPorts because of permission issues with brew, used it for years, then switched back after MacPorts inexplicably started wanting to install like 9000 packages just to install something small-ish like wget. Which is probably just as likely to happen with any other package manager but whatever. |
|
|
| ▲ | dlandis 3 hours ago | parent | prev | next [-] |
| Is it true that contributors to homebrew need to know how to invert a binary tree? |
|
| ▲ | 7839284023 5 hours ago | parent | prev | next [-] |
| Awesome! 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 4 hours ago | parent | next [-] | | You 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... | | |
| ▲ | hk__2 3 hours ago | parent | next [-] | | > 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." | |
| ▲ | reaperducer 3 hours ago | parent | prev [-] | | 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. 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 3 hours ago | parent [-] | | Ah, 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. |
|
| |
| ▲ | mikemcquaid 3 hours ago | parent | prev | next [-] | | Yes 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 2 hours ago | parent | prev [-] | | This 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. |
|
|
| ▲ | m463 10 minutes ago | parent | prev | next [-] |
| macOS 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. |
|
| ▲ | maxloh 2 hours ago | parent | prev | next [-] |
| Homebrew 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 2 hours ago | parent [-] | | > 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. |
|
|
| ▲ | swingboy 3 hours ago | parent | prev | next [-] |
| Interesting 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? |
|
| ▲ | nosioptar 2 hours ago | parent | prev | next [-] |
| I 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.) |
|
| ▲ | eikenberry 2 hours ago | parent | prev | next [-] |
| Does 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 an hour ago | parent [-] | | Comparison 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 25 minutes ago | parent [-] | | Homebrew, 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. |
|
|
|
| ▲ | ansonhoyt 4 hours ago | parent | prev | next [-] |
| Is 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`. |
| |
|
| ▲ | swiftcoder 3 hours ago | parent | prev | next [-] |
| Congrats on the performance improvements. That's the most pleasant `brew upgrade` session I've had in years |
|
| ▲ | e40 2 hours ago | parent | prev | next [-] |
| Just 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. |
|
| ▲ | golem14 2 hours ago | parent | prev | next [-] |
| For 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. |
| |
|
| ▲ | theragra an hour ago | parent | prev | next [-] |
| I was so impressed with Homebrew, I've added a formula for far2l-tty. Thanks for your job! |
|
| ▲ | frizlab 2 hours ago | parent | prev | next [-] |
| Thanks 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? |
| |
|
| ▲ | shawkinaw 3 hours ago | parent | prev | next [-] |
| Could 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. |
|
| ▲ | jwr 3 hours ago | parent | prev | next [-] |
| Thanks 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! |
|
| ▲ | pknerd 3 hours ago | parent | prev | next [-] |
| Thanks 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 |
| |
| ▲ | mikemcquaid 3 hours ago | parent | next [-] | | There'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` | |
| ▲ | PufPufPuf 3 hours ago | parent | prev [-] | | Have a look at https://mise.jdx.dev/, it's exactly what you're looking for! |
|
|
| ▲ | mvdtnz 7 minutes ago | parent | prev | next [-] |
| I 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. |
|
| ▲ | holysantamaria 2 hours ago | parent | prev | next [-] |
| I 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 |
|
| ▲ | joshuat 4 hours ago | parent | prev | next [-] |
| Is the eventual goal to move most formula/cask behavior into declarative install steps and treat Ruby as an escape hatch? |
| |
| ▲ | mikemcquaid 3 hours ago | parent [-] | | Yes, exactly. The goal is you can install all official packages without needing custom postinstall/preflight/postflight blocks. |
|
|
| ▲ | chuckreynolds 3 hours ago | parent | prev | next [-] |
| Brew is so good... just sponsored on github. Thanks for the hard work! |
|
| ▲ | jamesgill 3 hours ago | parent | prev | next [-] |
| I 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? |
| |
| ▲ | theragra an hour ago | parent | next [-] | | You 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. | |
| ▲ | riffic 3 hours ago | parent | prev | next [-] | | Homebrew 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 2 hours ago | parent | prev [-] | | You can run Homebrew on Linux without admin privileges. Useful e.g. for shared hosting. |
|
|
| ▲ | threecheese 3 hours ago | parent | prev | next [-] |
| I 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 3 hours ago | parent [-] | | macOS 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… |
|
|
| ▲ | mattbettinson 2 hours ago | parent | prev | next [-] |
| Okay, but can you reverse a binary tree? |
| |
| ▲ | yesitcan 2 hours ago | parent [-] | | We should all be ashamed of the interview culture we have created in this industry. | | |
|
|
| ▲ | tommica an hour ago | parent | prev | next [-] |
| Such an amazing project! |
|
| ▲ | let_rec 3 hours ago | parent | prev | next [-] |
| Does Homebrew have good support for exact (and older) versions of packages now? |
| |
|
| ▲ | airwarmedd 2 hours ago | parent | prev | next [-] |
| damn, I can't believe, it's still getting updates. found out homebrew 6 months ago, I'm awe! amazing product |
|
| ▲ | pdntspa 2 hours ago | parent | prev | next [-] |
| Does 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 |
|
| ▲ | ch-bas 3 hours ago | parent | prev | next [-] |
| Thanks for the hardwork. |
|
| ▲ | gigatexal an hour ago | parent | prev | next [-] |
| Homebrew 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. |
|
| ▲ | awesome_dude an hour ago | parent | prev | next [-] |
| Dependency 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 |
|
| ▲ | paulddraper 3 hours ago | parent | prev | next [-] |
| I 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 an hour ago | parent [-] | | I think it is focused on GitHub. It might not be suited for many people this way, but it works well. Opionated design. |
|
|
| ▲ | Hamuko an hour ago | parent | prev | next [-] |
| I 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? |
|
| ▲ | napolux 2 hours ago | parent | prev | next [-] |
| did google apologize for not hiring you? |
| |
| ▲ | mikemcquaid 2 hours ago | parent [-] | | You’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 an hour ago | parent [-] | | oh sorry i was wrong, glad it happened then, and thx for your work! |
|
|
|
| ▲ | reactordev 4 hours ago | parent | prev | next [-] |
| Hell yeah, tap trust!!! |
|
| ▲ | shevy-java 3 hours ago | parent | prev | next [-] |
| Has 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 an hour ago | parent [-] | | Wdym 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 |
|
|
| ▲ | dionian 3 hours ago | parent | prev | next [-] |
| homebrew is so nice, thank you for all your effort |
|
| ▲ | covratools 3 hours ago | parent | prev | next [-] |
| Thank you!! |
|
| ▲ | phplovesong 3 hours ago | parent | prev | next [-] |
| Does 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? |
|
| ▲ | riffic 3 hours ago | parent | prev [-] |
| happy Bluefin Linux user and can vouch that the Homebrew experience in Linux is great as well. Really excited for where things are going. |