6 ms·
I'm always so confused by the nomenclature in homebrew. Even beyond all the beer terminology, I'm still not sure what the difference between update and upgrade
by dlandis 9y ago
I'm always so confused by the nomenclature in homebrew. Even beyond all the beer terminology, I'm still not sure what the difference between update and upgrade is. The docs simply defines upgrade in terms of itself: "Upgrade everything with:
brew upgrade". Does "everything" include homebrew itself (which is what homebrew update is supposed to do) ? If so are the commands redundant? It just seems like an example of a great tool overall that has all these unnecessary complications.
- SkyPuncher 9y agoI think `update` retrieves information about the latest versions, but does not actually install anything. `upgrade` will do update plus the actual installation.
- nullbyte 9y agoI believe "brew update" updates your package list and version indexes. It's exactly like apt-get update vs apt-get upgrade, if you're familiar with those.
- _rs 9y agoHowever, worth noting that by default all brew commands issue a `brew update` by default before running (so `brew upgrade` is really more like `apt-get update && apt-get upgrade` by default). This can be disabled by setting the HOMEBREW_NO_AUTO_UPDATE env var.
- orf 9y agoIts like git fetch vs git pull
- mikepurvis 9y agoNot really, though— git fetch does actually sync you with the remote, so no further downloading is required after git fetch.
- electricslpnsld 9y ago> I'm always so confused by the nomenclature in homebrew. Even beyond all the beer terminology It is even worse if you aren't a native english speaker. English beer brewing terminology is not part of most language curricula! I enjoy a bit of whimsy as much as the next person, but some precision terminology would suit the toolset better. It also incenses my French colleague who insists that wine technology is superior to beer technology.
- abritinthebay 9y agoTell him that might have been true when French wine was superior but that was long ago. ... just to watch his blood pressure rise.
- titanix2 9y agoYes, as a non native speaker this terminology is really annoying. This is funny 2 seconds but should be an easter egg, not part of the real documentation or tool. That’s one more reason for me to stick with MacPorts.
- brandonmenc 9y agoUgh, yes. Agree. Taps? Casks? Kegs? None of these terms map well to anything. It's like if git used a car analogy and called repos "wheels", commits "blinkers", and branches "exhaust pipes". Maybe it makes sense to people who brew beer, but I doubt it. It's just cutesy for cutesy's sake, and too many projects do this.
- dragonshed 9y agoAs someone who used to brew beer, and probably drank too much, I can definitively say it doesn't map well period. I posit the reuse of nouns from apt would have greatly reduced confusion.
- nobleach 9y agoThis mirrors apt from Debian and Debian-based linux distros. "update" simply updates the package index. "upgrade" can be used to upgrade installed packages.
- pfranz 9y agoNot sure of the parent poster's background, but I think his critique applies to most all package managers. I hop between homebrew, nix, apt, and yum and often have to consult the docs (or guess and hope for a confirmation before anything destructive). I guess the alternative would be `brew update-local-repository-cache` `brew upgrade-all-packages` `brew upgrade-package vim` which isn't very appealing either. Although, the interface for autocomplete in IDEs have made it easier to use more descriptive names for things (ctrl-D isn't good enough and often isn't implemented or set up for command line tools).
- deleted 9y ago[deleted]
- JulianWasTaken 9y agoIt's the best we've currently got, but homebrew unfortunately has lots of these rough edges that make it's UX really challenging, yeah :/ Take how, when you have both `parallel` and `moreutils` installed (which still frustratingly ships its own useless parallel and refuses to stop) -- homebrew added a `--without-parallel` flag to moreutils to make them not conflict, but then when you update one or the other, it refuses to update without manually specifying `--force` even though it clearly knows (or should know) that it's safe to do the upgrade. Or how `brew install`, if there's a bottle missing for your combination of versions, might "silently" decide to jump into a 2 hour long compilation.
- mikemcquaid 9y ago> might "silently" decide to jump into a 2 hour long compilation. You've quoted silently here presumably because it's literally the opposite of silently in that we tell you explicitly what's happening (it's building from source now) and why (the bottle installation failed).
- JulianWasTaken 9y agoI wasn't trying to be deceptive. I quoted silently to not be deceptive. I was being liberal in the meaning, not intent -- silently there meant "you do not know whether `brew install foo`" will take 2 seconds or 2 minutes when you run it, and yes I think that's poor UX.
- throwanem 9y agoI'm not a fan of the beer-themed lexicon myself; it's confusing and opaque. Here's a sort of glossary I found: http://tmr08c.github.io/devops/2016/10/24/homebrew-glossary.html http://tmr08c.github.io/devops/2016/10/24/homebrew-glossary....
- sgloutnikov 9y ago'brew update' will fetch the newest version of Homebrew and all formulae. Upgrade will upgrade the packages. I wrote about this and refer to it when upgrading just in case. [1] It might be helpful. [1] https://gloutnikov.com/post/control-homebrew-upgrades/ https://gloutnikov.com/post/control-homebrew-upgrades/
- PopsiclePete 9y agobrew update == apt-get update brew upgrade == apt-get upgrade One fetches data about what the latest stuff is, what's outdated, new, removed, etc - non-destructive The other actually performs the operation - destructive