brew-outdated
List outdated Homebrew packages
TLDR
List all outdated casks and formulae
List only outdated formulae
List only outdated casks
SYNOPSIS
brew outdated [options]
PARAMETERS
-q, --quiet
Lists only the names of outdated formulae, suppressing version information.
-v, --verbose
Shows detailed versions of outdated formulae, including installed and latest available versions.
--json[=v1|v2]
Outputs outdated formulae in a JSON format. Currently, only v1 is fully supported and is the default.
--cask
Checks for outdated casks in addition to formulae.
--formula, --formulae
Checks for outdated formulae only, ignoring casks.
--no-fetch
Prevents brew outdated from running brew update before checking for outdated packages. This uses the locally cached package definitions.
--fetch-HEAD
Considers HEAD builds (development versions) as outdated if a newer HEAD commit is available. Relevant for formulae installed with --HEAD.
--greedy
Considers casks that would be upgraded by brew upgrade --greedy as outdated. This applies to casks that might not have a direct version number, or whose update check behavior differs.
--pinned
Shows pinned formulae (those explicitly prevented from upgrading) that are nonetheless not up-to-date according to the latest definitions.
DESCRIPTION
The brew outdated command identifies installed Homebrew formulae and casks that have newer versions available in their respective taps. It's a crucial tool for maintaining an up-to-date software environment managed by Homebrew on a Linux system (often referred to as Homebrew on Linux or historically Linuxbrew).
When executed, it typically performs a brew update first to fetch the latest package definitions from the Homebrew repositories. After updating, it compares the installed versions of your software with the latest available versions. If a discrepancy is found, indicating a newer version exists, the package is listed as 'outdated'. This command does not upgrade packages; it only reports which ones are candidates for upgrade. Users can then use brew upgrade to bring these packages to their latest versions.
It supports various options to filter the output, such as only showing formulae or casks, providing verbose version information, or outputting in JSON format for programmatic use.
CAVEATS
The brew outdated command relies entirely on a functioning Homebrew installation on Linux.
It requires an active internet connection (unless --no-fetch is used) to perform brew update and fetch the latest package information.
The accuracy of its output depends on the timeliness of Homebrew's taps; if a tap is not updated promptly with new software versions, then brew outdated will not report those packages as outdated.
<I>FORMULAE VS. CASKS</I>
In Homebrew, 'formulae' refer to command-line tools and libraries compiled from source, while 'casks' refer to binary applications (often GUI applications) distributed as pre-compiled packages. By default, brew outdated primarily checks formulae, but the --cask option allows it to check installed casks as well, expanding its utility for managing a wider range of software.
<I>PINNING PACKAGES</I>
Homebrew allows users to 'pin' a formula, preventing it from being upgraded during a regular brew upgrade operation. Even if a package is pinned, it can still be reported as outdated by brew outdated (especially with the --pinned option), indicating that a newer version exists but will not be installed unless the pin is removed or the upgrade is forced.
HISTORY
Homebrew originated as a popular package manager for macOS in 2009. Due to its ease of use and extensive package repository, a port for Linux environments, known as Linuxbrew, was developed independently. It provided a similar experience for managing packages on Linux without root privileges, installing software into the user's home directory. In 2019, the Linuxbrew project officially merged back into the main Homebrew repository, becoming 'Homebrew on Linux'. The brew outdated command, like most Homebrew commands, has been a core part of the system since its early days, essential for users to keep track of available software updates.