October 17, 2026
Judging by the attitude of Apple and many projects for macOS, my 15“ mid-2012 Macbook Pro should now be a fancy paperweight. Unfortunately, it just keeps working: currently it’s on macOS Sonoma (soon to be updated to Sequoia), and thanks to OpenCore Legacy Patcher, I can keep it up to date for at least a year or two more – at least until Sequoia stops receiving security patches, and maybe longer if OCLP gets support for Tahoe. However, just because it’s not an ARM machine, Homebrew and nixpkgs have both stopped supporting my computer and hence not providing any more prebuilt binaries, giving me the great options of either: 1) compiling everything from source, and dealing with the headaches of that (huge time sink, broken libraries, and other fun stuff), 2) never upgrading anything, or 3) buying a new laptop. None of those options are great.
Now to be clear, I’m not blaming Homebrew, nixpkgs, or any other open source project. They are projects run by volunteers in their free time, and supporting older machines with their limited resources is not possible. Furthermore, they need Intel Mac runners to build software for Intel Macs, and those runners won’t be available anymore either. I am frustrated with the way Apple is handling this. They don’t provide any financial support to projects like Homebrew (which I am almost certain that Apple engineers themselves use), and they don’t give owners of Intel Macs any alternative, other than buying a new machine and throwing the old one away. They built a massive market on Intel Macs, and now they expect everyone to toss them and buy the new shiny thing. But of course, one cannot let environmental concerns get in the way of good business.
Thankfully, there’s an alternative. MacPorts is a package manager for macOS that has been around long before Homebrew, which means it also supports much older operating systems, back to OS X Leopard (but also up to the newest macOS at the time of writing, Golden Gate). As of October 2026, it reports a total of just over 42 thousand packages in the repository – not too far off the 46.5 thousand in Debian and derivative repos.
I installed MacPorts using the MacPorts Guide, installed the same packages I had installed through Homebrew, and cleared out the Homebrew installation using their uninstall script. First impressions, MacPorts seems way faster and seems to have quite a good collection of software. I also kind of prefer their interface for package management over Homebrew’s. In this post, I collected the common commands for various tasks in MacPorts.
A package is a ‘port’.
A port can have ‘variants’, like features/compile flags.
Prebuilt binaries are stored and automatically downloaded from packages.macports.org.
MacPorts stores data in /opt/local/.
An ‘active’ port is a port that’s actually present on disk and in use, while an ‘inactive’ port is stashed in a compressed tarball.
When upgrading a port, the previous version doesn’t get removed automatically; it only gets deactivated, so that you can easily go back in case of a broken upgrade.
port search something
This searches the name and description for “something”.
If you only want to search the port name, pass the --name flag.
port info portnameport variants portname# What does portname depend on?
port depends portname
# What's the full dependency tree of portname?
port rdepends portname
# What depends on portname?
port dependents portname# Install a port
sudo port install portname
# Install a port only if it's available as a prebuilt archive
sudo port -b install portname
# Install a port without variant1 and with variant2
sudo port install portname -variant1 +variant2Notes are like caveats in Homebrew, they are also automatically shown on installation.
port notes portnameport setrequested portnamesudo port activate portname @versionport installedport installed requestedport contents portnameInactive ports are installed, but stashed in a compressed tarball and not in use.
port installed inactiveport installed leavessudo port clean portnamesudo port uninstall inactiveReclaiming removes inactive ports and deletes intermediate installation files.
port reclaimWith the --follow-dependencies flag, it also removes any dependencies that become unused while this command runs.
sudo port uninstall --follow-dependencies leavesUpdate local ports tree from MacPorts repository, and upgrade MacPorts itself.
sudo port selfupdateOnly update the local MacPorts repo (e.g. Portfiles):
sudo port sync# All
port outdated
# Only manually installed
port outdated requestedsudo port upgrade outdatedport diagnose