9 of the Best Homebrew Packages for Mac
If you’re an advanced Mac user who spends a considerable amount of time at the command line, you likely have Homebrew installed by now. So, how about sharing a list of some of the best Homebrew packages available for Mac users?
We’ve discussed Homebrew many times before, but essentially it makes installing additional command line tools easier than ever, as there is no compiling necessary and it handles dependencies for you. Even if you don’t have Homebrew installed, this list of some of the more helpful Homebrew packages and tools may inspire you to get Homebrew on your Mac.
To get any use from this list you’ll want to be a reasonably advanced command line user, and you’ll obviously need to install Homebrew on the Mac if you haven’t done so yet. Then you’re ready to go and enjoy the collection. And don’t forget to share your own favorite Homebrew packages in the comments too.
In no particular order, here are some of the top Homebrew packages for Mac:
cask
Cask allows you to easy install Mac OS GUI apps and binaries directly from the command line using Homebrew. First you install cask, and then you can install normal Mac apps directly from the command line.
brew install cask
For example, once you have cask, if you want to install Chrome from the command line, then Cask can do that with with a command like the following:
brew cask install google-chrome
Or maybe you want to install iterm2 so you can have that cool drop-down command line available from anywhere:
brew cask install iterm2
Cask can install tons of applications in Mac OS without needing to download them individually from various websites and then going through the typical drag-and-drop install routine.
Note that Cask has some limitations, for example it can’t install anything from the Mac App Store, and Cask is not able to install software updates to the Mac like the ‘softwareupdate’ command is able to, but that doesn’t make it any less useful of a tool for advanced Mac users.
htop
htop is a system resource monitor for the command line. htop is basically a superior version of ‘top’, with a nice visual indicator of process activity, CPU activity, memory usage, load average, and process management. You can kind of think of it like Activity Monitor for the command line, though many command line users would argue it’s even more useful than Activity Monitor is.
brew install htop
We’ve discussed installing htop on the Mac before, it’s really a fantastic tool that deserves to be a part of any command line toolbox.
wget
wget can download data from the web and ftp, making it one of the best tools out there to download anything via the command line. Whether you want to download just a single file from somewhere, or you want to download an entire directory or even mirror a full website, wget can do it for you.
brew install wget
You can also install wget without Homebrew, but if you’re reading this article you likely already have Homebrew.
nmap
nmap is a top notch network security scanner. It can find network assets, discover services and hosts on local networks, perform port scans, map a network (hence the name), detect operating systems and versions of software on clients and servers, and so much more. It’s an excellent tool for systems administrators, network admins, security researchers, and anyone else who needs to dabble in network scanning activity.
brew install nmap
You can also get nmap for Mac as a disk image in a self contained binary if you’d rather not deal with home-brew, but again, we’re talking about homebrew here.
Oh and if the concept of nmap appeals to you but the command line is far over your head or too cumbersome, then you can use Network Utility on Mac OS to perform port scans, finger, whois, trace route, ping, and much more, all from a friendlier GUI app.
links
links and lynx are command line web browsers, allowing you full web access (well, as long as there’s text to navigate) from the command line. This is useful for many reasons whether researching and web browsing from a terminal window, or even for testing web site functionality and compatibility with alternate browsers and for alternate use cases. I’m partial to ‘links’ but ‘lynx’ is good too, or you can install both.
brew install links
We’ve discussed lynx before macports, and you can also get lynx with image support if you’re interested, but again if you have Homebrew installed then it’s a piece of cake to install through the command line.
geoiplookup
geoip gives you geolocation data for an inputted IP address. This is useful for network and systems administrators, web workers, security researchers, and much more.
brew install geoip
If you ever wondered where a particular IP is located in the world and to what ISP it belongs, then geoip is for you.
irssi
Do you like to chat on IRC? Want to be told to ‘rtfm’ when you ask a question in #linux? Then irssi is for you, because it’s arguably the best irc client for the command line (or perhaps in general, sorry ircii, mirc, and ircle).
brew install irssi
/join away!
bash-completion
If you use the bash shell, then bash-completion is likely something you’re either familiar with or soon will be since it dramatically improves command completion and is programable. Personally I’m partial to zsh which also has great completion capabilities, but bash-completion makes bash much more useful, so if you’re a bash fan then check it out if it sounds appealing to you.
brew install bash-completion
Oh and this probably goes without saying but if you changed your shell at some point in Terminal app then you’d want to use bash to get any use out of bash-completion.
watch
The watch command is super useful to keep a continuous eye on another process. For example you can use watch to track disk usage or IO, or virtual memory usage, or anything else, updating the command output every few seconds. This is one of those great tools for administrators but it’s useful for many other purposes too.
brew install watch
Home-brew isn’t the only approach for watch, you can also install watch on Mac OS using MacPorts, from source, or as a precompiled binary too.
What do you think? Do you have any particularly favorite Homebrew packages? Share your own top Homebrew packages, tricks, installs, and add-ons in the comments below!
If you have any problems with brew, try “brew doctor”. It’s a built in command which diagnoses and repairs the most common issues.
Thanks for the youtube-dl (link). Does anyone have a script to convert audio straight to mp3 once downloaded?
ffmpeg is a neat little commandline media converter, use like so (input and output can be of any format, not jsut mov and mp4)
ffmpeg -i input.mov output.mp4
youtube-dl can download YouTube (and media from loads of other sites) videos from the terminal
Simple download: youtube-dl (link)
Download audio only: youtube-dl -x (link)
While homebrew is great for installing utilities, you should be aware of some issues:
– installing packages without “sudo” (which is the core idea of homebrew) creates potential security risks
– modifying permissions on certain subdirectories can cause problems with other applications. I specifically had issues with “brew” and “ClamXAV”. Both parties blamed each other for the resulting problems.
– Some packages have to be built from source. If the package is written in some niche programming language like Go, Rust or Haskell, the tools for this language also have to be installed, which introduces potentially unwanted side effects; because now, every time the language tools change, they are also rebuilt. This may cause your Mac to run for several hours at 100% CPU without having any benefit for the package itself (while I write this, my 2 GHz i7 Mac Mini is now 1,5 hours into building “Rust” with no end in sight)
– You are at the mercy of the homebrew maintainers and their (possibly misguided) decisions. E.g., two weeks ago, they decided to change the default Python interpreter from version 2 to 3, going against Python.org’s PEP 394. Of course, this caused a lot of applications which depended on “Python” being “Python 2” to break. After massive complaints from the community, they changed this back (but not without some miffed remarks)
One way to mitigate the security issue is to create a second admin account, and use that to install brew fu. Make your main account a regular user and add that account to the sudoers–now you have sudo for command line stuff and when the mac prompts you for an admin password, you use the admin account. And ssh as that admin to local host to install/update brew.
per brew:
“Error: Running Homebrew as root is extremely dangerous and no longer supported. As Homebrew does not drop privileges on installation you would be giving all build scripts full access to your system.”
speedtest-cli is a great quick little utility. Skip all that ui fluff.
If you install bash-completion, you should also install the latest bash, i.e. v4. Apple only ships macOS with bash v3 built in, and that comes with some disadvantages, missing options etc.
As for geoip, you should install it with the command `brew install geoip –with-geoipupdate` and then create a small LaunchAgent that updates the geoip database once or twice a week.
As for IRC, you should also have a look at BitchX.
10. Fish shell
> brew install fish
Fish shell is excellent! I agree this is a good one!
wireshark is a good tool as well!
Another good tool that goes hand in glove with Homebrew is Cakebrew which gives Homebrew a GUI, which is very easy to use.
Jose,
Many thanks for the tip about Cakebrew. I was able to use it to troubleshoot my permissions problem and cleared that up. Have installed many of the other packages on this page.
Cheers!
how did you install Cakebrew?
I know this is a bit late to the game, but to install cakebrew, first do:
> brew install cask
Let that finish, then do:
> brew cask install cakebrew
It’ll download and install the app into your /Applications folder for you automatically.
I was able to install homebrew, but trying to install other packages and apps, kept getting an error message similar to the following:
“Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink .
/usr/local/opt is not writable.:
Don’t quite know why usr/local/opt is not writable?
Most likely, you one time install something, and that something made /usr/local/opt and made it owned by root, since that’s the way pretty much everyone except the brew folks do when installing to /usr/local. Run:
ls -la /usr/local/opt
and if you see stuff owned by root/wheel/admin, that’s it.
You can change it by running:
sudo chown -R youridhere:admin /usr/local/opt/*
Doh
*installed*