Running `sudo make install` in order to install software on your own laptop is a terrible idea. I've used homebrew on a mac daily for 6 years and it has worked perfectly. If it has fundamental flaws why have they not affected me?
> Running `sudo make install` in order to install software on your own laptop is a terrible idea.
Why do you believe that requiring administrator rights to install global software is "a terrible idea" ?
Every single OS-vendor provided software install mechanism on computing devices in use today uses this concept.
Keep in mind that I'm talking about installing, not building. No one sane suggests `sudo make && sudo make install`. It's always `make && sudo make install`. Homebrew not just doesnt do this by default, it prevents this model of building & installing, and won't even allow pre-build binaries to be installed as root.
1. Because installing (frivolous) user utilities should not have the ability to write to critical system files, by default at least.
2. Because there's no make uninstall.
I've had this argument with others who get similarly worked up about homebrew as you seem to. I think the problem may be that you're thinking about installing core system utilities, whereas we're talking about installing all our frivolous user-domain software. So whatever package we happen to have read about and thought "oh I'll try that out". Prior to using OS X for the last 6 years my personal laptop ran Linux for the 10 years prior to that. Not everything was available via apt-get, and I know from far too much first-hand experience the dangers of installing software with root permissions, and not being able to reverse the process, so there's really no question in my mind that you're wrong; I suspect we must be answering subtly different questions as I said above.
Can you explain why you're emphasizing global software? You sound like you're talking about being a sys admin for a shared computing resource. We are just talking about our laptops.
Very occasionally we put on the hat of "administrator" of our laptop, but mostly we have on the hat of "the single user".
Now, how about my question: if it's as bad as people like you say, then why does it work so well for so many people?
> Because installing (frivolous) user utilities should not have the ability to write to critical system files, by default at least.
This is why there was a thing like `$PREFIX`. I have a ~/.local folder, the user-specific equivalent of the system /usr/ folder. All the frivolous software I install for my-unix-account local needs go in there and my OS remains pristine. I currently have my $GOPATH, user npm packages, and even some .desktop applications in there.
Are you referring to the `--prefix` option that `configure` takes in the traditional unix `configure && make install` process?
(EDIT: I didn't mean to sound like I was correcting you. In fact I'm sure you know this stuff better than me. I now see that there's both a commonly-honored environment variable "PREFIX" and the command-line option to configure I mentioned, and I'm going to claim that the fact that there's two degrees of freedom and I'd forgotten about one of them kind of backs up my points!)
If so, while I agree that that serves the purpose and avoids use of `sudo`, I would think that the following two drawbacks are severe:
1. It's a lot (really, too much?) to ask of the community of laptop users who wish to use command line utilities -- we don't want to make using the command line the province of real unix experts only; everyone is a beginner at some point after all.
The reasons you supply are partly why I said "there was a thing". It isn't as much of a thing in these `curl ... | sh` and `docker run` and Electron apps days.
But the first reason you cited can be handled gracefully by package managers at least (including Homebrew), if only they took the effort.
I don't think I quite understand the complaints that the unix traditionalists have against homebrew. I don't mean to imply that there are no valid ones; I'd like to understand.
Preface: I don't argue either in favour or against homebrew here.
From the limited number of times I had to set up homebrew, I noticed the official method tells the user to take over /usr/local/ (via a `sudo chown ...`). They could have made the process use ~/.local, but don't. And because of the official position on using /usr/local/, lots of homebrew formulae assume and depend on /usr/local/.
Without taking the side of the "unix traditionalists" you speak of, I can understand their point. Homebrew doesn't have to take over a system location for user-account specific software, but it does.
If they're frivolous, install them in $HOME/bin, and you don't need root.
I'm not suggesting make as an alternative to a package manager, I'm saying that nowhere else is it considered OK to install global programs without requiring admin/root permissions.
I'm emphasising "global" software because homebrew installs to /usr/local/ by default, which is a machine global directory.
The issue with permissions is about security, and like most security problems, being bad/terrible has no correlation on userbase. How many people use {android,Windows,Wordpress,...} despite a terrible security record.
reply