Homebrew is an open-source package manager for macOS that offers an easy way to install software and tolls through the command line. If you are a coder, developer, Terminal lover, or more tech-savvy than an average Mac user, you can use Homebrew to simplify software installation on your Mac. Homebrew Cask installs macOS apps, fonts and plugins and other non-open source software. $ brew install -cask firefox Making a cask is as simple as creating a formula.
Today I’d like to announce Homebrew 2.0.0. The most significant changes since 1.9.0 are official support for Linux and Windows 10 (with Windows Subsystem for Linux),
brew cleanup
running automatically, no more options in Homebrew/homebrew-core, and removal of support for OS X Mountain Lion (10.8) and older.Major changes and deprecations since 1.9.0:
- Homebrew officially supports Linux and Windows 10 with Windows Subsystem for Linux (WSL). Homebrew on Linux was previously called “Linuxbrew”. You can install it in your home directory, so it does not require
sudo
, and use it to install software that your host distribution’s package manager does not provide. Homebrew on Linux uses its own repository for formulae: Homebrew/linuxbrew-core brew cleanup
is run periodically (every 30 days) and triggers for individual formula cleanup on reinstall, install or upgrade. You can opt-out of this behaviour by setting theHOMEBREW_NO_INSTALL_CLEANUP
variable. This addresses a long-standing complaint where users were surprised by how much disk space Homebrew used if they did not runbrew cleanup
.- Homebrew does not run on OS X Mountain Lion (10.8) and below. For 10.4 - 10.6 support, see Tigerbrew. This has allowed us to remove large amounts of legacy code.
- Homebrew does not migrate old, pre-1.0.0 installations from the Homebrew/legacy-homebrew (formerly Homebrew/homebrew repository. This has allowed us to delete legacy code that dealt with migrations from old versions.
- Homebrew does not have any formulae with options in Homebrew/homebrew-core. Options will still be supported and encouraged by third-party taps. This change allows us to better focus on delivering binary packages rather than options. Formulae with options had to be built from source, could not be tested on our CI system and provided a disproportionate support burden on our volunteer maintainers.
Other changes since 1.9.0 I’d like to highlight are the following:
- Homebrew uses a proper option parser to generate the
man brew
and--help
. Also, Homebrew no longer silently ignores invalid options to formulae or commands. This change will provide better feedback to users and allow making our argument handling more simple and robust. brew install
does not try tolink
formulae that already have a cask with the same name installed. This change avoids link errors in these cases.- Analytics data is now available for Cask installs on formulae.brew.sh.
Also, if you’ve not tuned in since 1.0.0, here are the major changes since then:
- Rubocop-supporting editors (e.g. VS Code, Atom) can get inline
brew audit
information when editing formulae in taps. This improves the contribution experience. - A
brew tap-new
command is available for creating a new tap with aREADME
and preconfigured Azure Pipelines configuration (which seems to provide the most reliable and performant macOS CI for OSS at the time of writing). This eases the creation of taps (third-party repositories). brew update-reset
resets all repositories and taps to their upstream versions. This is useful when debugginggit
issues.brew link
state is preserved afterbrew install
andbrew upgrade
(including for keg-only formulae) but unfortunately not thebrew unlink
state due to a lack of state. This should allow many keg-only formulae to be used as if they are normal formulae.- Homebrew filters all user environment variables. This reduces errors when formulae are built from source and allows the removal of many workarounds for niche issues.
brew postgresql-upgrade-database
upgrades PostgreSQL database data between major versions. This simplifies upgrades between PostgreSQL versions which previously required a semi-manual process and old version of PostgreSQL to be kept around.- The
python
formula was upgraded to Python 3.x andpython@2
formula was added for installing Python 2.7. We initially did not comply with PEP 394 and this was a mistake. We madebrew install python
andbrew install python@2
PEP 394 compliant and will not change this again until PEP 394 has changed. This allows us to migrate more of our ecosystem to Python 3. - We deprecated and archived all the Homebrew organisation taps and created new and versioned formulae in Homebrew/homebrew-core. We encourage more niche formulae and formula options to be supported in taps outside the Homebrew organisation. This allows us to focus on providing high-quality formulae that work consistently rather than a long-tail of broken, unsupported, ignored formulae.
- Homebrew Formulae is a site providing formulae data, anonymous aggregate analytics data and a JSON API querying these. This allows you to quickly query Homebrew information without access to macOS or Homebrew.
- In July 2018 a security researcher identified a GitHub personal access token leak from Homebrew’s Jenkins. Within a few hours the credentials had been revoked and sanitised. No packages were compromised and no action was required by users due to this incident. We are currently attempting to migrate away from Jenkins to a suitable hosted CI provider.
- When a bottle isn’t available for your version of macOS we will use a bottle from an older version instead. This will make life much more pleasant on new macOS releases before our bottling has completed (or when formulae fail to build).
brew upgrade
automatically reinstalls or upgrades formulae with broken linkage. This avoids broken formulae when building from source or using optional behaviour after upgrades.brew info
displays analytics data. This is the way that Homebrew maintainers query analytics data so we are using the same data as the community. This will hopefully ease concerns about our collection of analytics data.- Homebrew Cask’s downloads are quarantined. This provides the same level of security when downloading these tools manually.
- Homebrew/homebrew-core requires all formulae to be open source by the OSI definition. This allows you to be confident that any
brew install
(although notbrew cask install
) from Homebrew/homebrew-core is open source software. brew link --force
will not link software already provided by macOS but instead output the instructions on how to do so. This avoids strange compilation errors and encourages users to use the system mechanisms for adjusting theirPATH
.
Finally: Macbook air el capitan update.
- Many Homebrew maintainers will be attending FOSDEM 2019 (say hello!) and meeting afterwards on 4th February to discuss the future governance of Homebrew.
- Homebrew still accepts donations through Patreon. If you can afford it, please consider donating. If you’d rather not use Patreon (our preferred donation method), check out the other ways to donate in our README.
Thanks to all our hard-working maintainers, contributors, sponsors and supporters for getting us this far. Enjoy using Homebrew!
Easily check which versions of mac OS, iOS, iPadOS, or watchOS are compatible with your Mac model or iDevice. Guide includes OS X 10.8.x to macOS 11.0.x.
.2 NVME SSD Convert Adapter Screwdriver Set for MacBook Compatible Models MacBook Air 11 “A1465 & MacBook Air 13” A1466 (Mid 2013-2017), MacBook Pro (Retina) 13 “ A1502 & 15' A1398 (Late 2013 - Mid 2015), Mac Pro ME253 MD878 Please Note - Require Mac OS 10.13 High Sierra or Late.
![Can a 2015 macbook air run catalina Can a 2015 macbook air run catalina](/uploads/1/3/8/4/138414009/273417704.jpg)
- Installing
- macOS troubleshooting
GitLab Runner can be installed and updated on macOS.
Installing
There are two methods for installing GitLab Runner on macOS:
- Manual installation. This method is officially supported and recommended by GitLab.
- Homebrew installation. Install with Homebrew as an alternative to manual installation.
Manual installation (official)
For documentation on GitLab Runner 9 and earlier, visit this documentation.
- Download the binary for your system:You can download a binary for every available version as described inBleeding Edge - download any other tagged release.
- Give it permissions to execute:
The rest of the commands should execute as the user who will run the runners.
- When you build iOS or macOS applications on macOS, use the shell executor.The build and tests run as the identity of the logged-in user, directly on the build host.It does not run in a container. This is less secure than using container executors. For more information, see thesecurity implications documentationfor additional detail on what to keep in mind in this scenario.
- Install GitLab Runner as a service and start it:
GitLab Runner is installed and will be run after a system reboot.
Homebrew installation (alternative)
A Homebrew formula is available to install GitLab.
To install GitLab Runner using Homebrew:
- Install GitLab Runner.
- Install GitLab Runner as a service and start it.
GitLab Runner is installed and running.
Limitations on macOS
The service needs to be installed from a Terminal window logged inas your current user. Only then will you be able to manage the service.
Currently, the only proven way for it to work in macOS is by running the service in user-mode.
Since the service will be running only when the user is logged in, you shouldenable auto-login on your macOS machine.
The service will be launched as a
LaunchAgent
. By using LaunchAgents
,the builds will be able to perform UI interactions, making it possible to run andtest in the iOS simulator.It’s worth noting that macOS also has
LaunchDaemons
, services runningcompletely in background. LaunchDaemons
are run on system startup, but theydon’t have the same access to UI interactions as LaunchAgents
. You can try torun the Runner’s service as a LaunchDaemon
, but this mode of operation is notcurrently supported.You can verify that GitLab Runner created the service configuration file afterexecuting the
install
command, by checking the~/Library/LaunchAgents/gitlab-runner.plist
file.If Homebrew was used to install
git
, it may have added a /usr/local/etc/gitconfig
filecontaining:This tells Git to cache user credentials in the keychain, which may not be what you wantand can cause fetches to hang. You can remove the line from the system
gitconfig
with:![Homebrew osgeo Homebrew osgeo](/uploads/1/3/8/4/138414009/199481518.png)
Alternatively, you can just disable
credential.helper
for the GitLab user:You can check the status of the
credential.helper
with:Manual update
- Stop the service:
- Download the binary to replace the GitLab Runner executable:You can download a binary for every available version as described inBleeding Edge - download any other tagged release.
- Give it permissions to execute:
- Start the service:
Make sure that you read the FAQ section which describessome of the most common problems with GitLab Runner.
Upgrade the service file
In order to upgrade the
LaunchAgent
configuration, you need to uninstall andinstall the service:Using codesign with the GitLab Runner Service
If you installed
gitlab-runner
on macOS with homebrew and your build callscodesign
, you may need to set <key>SessionCreate</key><true/>
to haveaccess to the user keychains. In the following example we run the builds as the gitlab
user and want access to the signing certificates installed by that user for codesigning:macOS troubleshooting
![Homebrew osxfuse Homebrew osxfuse](/uploads/1/3/8/4/138414009/195592736.jpg)
The following relate to troubleshooting on macOS.
'launchctl' failed: exit status 112, Could not find domain for
This message may occur when you try to install GitLab Runner on macOS. Make surethat you manage GitLab Runner service from the GUI Terminal application, notthe SSH connection.
Failed to authorize rights (0x1) with status: -60007.
If GitLab Runner is stuck on the above message when using macOS, there are twocauses to why this happens:
- Make sure that your user can perform UI interactions:The first command enables access to developer tools for your user.The second command allows the user who is member of the developer group todo UI interactions, e.g., run the iOS simulator.
- Make sure that your GitLab Runner service doesn’t use
SessionCreate = true
.Previously, when running GitLab Runner as a service, we were creatingLaunchAgents
withSessionCreate
. At that point (Mavericks), this wasthe only solution to make Code Signing work. That changed recently withOS X El Capitan which introduced a lot of new security features thataltered this behavior.Since GitLab Runner 1.1, when creating aLaunchAgent
, we don’t setSessionCreate
. However, in order to upgrade, you need to manuallyreinstall theLaunchAgent
script:Then you can verify that~/Library/LaunchAgents/gitlab-runner.plist
hasSessionCreate
set tofalse
.
fatal: unable to access 'https://path:3000/user/repo.git/': Failed to connect to path port 3000: Operation timed out
error in the job
If one of the jobs fails with this error, make sure the runner can connect to your GitLab instance. The connection could be blocked by things like:
- firewalls
- proxies
- permissions
- routing configurations
Help & feedback
Docs
Edit this pageto fix an error or add an improvement in a merge request.Create an issueto suggest an improvement to this page.
Show and post commentsto review and give feedback about this page.
Product
Create an issueif there's something you don't like about this feature.Propose functionalityby submitting a feature request.
Join First Lookto help shape new features.
Feature availability and product trials
View pricingto see all GitLab tiers and features, or to upgrade.Try GitLab for freewith access to all features for 30 days.
Get Help
If you didn't find what you were looking for,search the docs.
If you want help with something specific and could use community support,post on the GitLab forum.
Homebrew Of The Month Club
For problems setting up or using this feature (depending on your GitLabsubscription).