Mac os brew update all packages

How to update a list of applications with brew?

I want to create a script to force update brew applications that are outdated.

I tried something like that, but it’s not working:

I am a beginner in bash, I think what I’m searching is easy, but i need help.

2 Answers 2

2021 update

During 2020 the sub-commands of the cask command were gradually integrated into the core of Homebrew and were deprecated. The core commands now operate on both formulae and casks. To limit their scope to only formulae or casks add the —formula or —cask option to the command line.

The cask command has been completely removed from Homebrew in version 2.6.0 , released in December 2020.

There is a unified flow now for both formulae and casks:

The first command ( brew update ) gets from the Homebrew servers the information about the most recent versions of the available formulae and casks.

The second command ( brew outdated ) lists the outdated installed formulae and casks. Add —formulae or —casks to the command line to limit the command scope to formulae or casks. Add —greedy to the command line to include in its output the casks that are marked as «auto-updateable».

The third command ( brew upgrade ) upgrades the packages listed by brew outdated . It also supports the options listed above for brew outdated and operates accordingly.

The original answer and the 2018 update are kept for historical reasons.

2018 update

In the meantime, the brew cask upgrade command has been implemented and can be used instead of brew cask reinstall in the script provided in the original answer.

It also works without arguments and upgrades all the casks displayed by brew cask outdated . It can replace the for block in the script that now becomes:

Additional info

Sometimes, brew cask outdated does not list all the outdated casks. This is by design. Some casks mark themselves as auto-updateable while others use the keyword latest as their version. These two categories of casks are not listed by brew cask outdated . To list them one have to add the —greedy option in the command line of brew cask outdated :

This command includes in its output the casks mentioned above. Those having latest as their version cannot be checked and are always listed, those marked as auto-updateable are checked and listed only if they are outdated indeed.

The command brew cask upgrade also accepts the —greedy option (internally it uses brew cask outdated to find the list of packages to upgrade). Using it ensures your system is up to date with the additional cost of reinstalling some applications that are not outdated.

The original answer (July 2017)

You are mixing brew commands with brew cask commands and it doesn’t work this way.

Homebrew Cask is a component of Homebrew that allows management of graphical applications. It started as an extension of the original Homebrew; it is now an integrated command of brew . The Homebrew itself manages only command line applications.

Upgrading command line programs

Upgrading all outdated programs installed with brew (command line programs) is easy:

The brew update and brew outdated steps are optional. brew upgrade internally calls brew update if the last update happened too much time in the past. brew outdated only lists the outdated installed programs; it is useful if you do the upgrade manually and you don’t want to upgrade everything. In this case you can pick the programs you want to upgrade and run brew upgrade

Читайте также:  Команды windows для работы с файловой системой

for each program you want to update. Replace

with the package name displayed by brew outdated .

Upgrading graphical programs

Upgrading all outdated graphical programs is not that straightforward at the moment. The process is slightly different than the above.

The first step is to run brew update . It updates Homebrew code and the taps (a tap is a repository of programs managed by Homebrew). Homebrew Cask provides the sub-command brew cask update but it is just an alias of brew update . You can use any of them; brew update is preferred because it is shorter.

The second step is to run brew cask outdated . This command shows the list of outdated programs managed by Cask, together with the installed version and the new version. The option —quiet tells it to show only the package names, without versions. You’ll need this for automation on the third step.

The next paragraphs are deprecated since 2018, when the command brew cask upgrade has been implemented. The new flow is described in the section «2018 update» above.

Unfortunately there is no brew cask upgrade command at this moment (it is planned but not implemented yet). brew upgrade doesn’t know how to handle the programs installed by brew cask either.

brew cask reinstall can be used instead of the missing brew cask upgrade . Unlike brew upgrade , that upgrades all the outdated packages, brew cask reinstall requires the name of one and only one package. This requires looping through the list returned by brew cask outdated .

A short shell script that upgrades all outdated programs installed using Homebrew Cask can look like this:

Drawbacks

There are programs that require administrator rights to install drivers or other system components. Some of them ask for your password or for various confirmations using a graphical dialog box. brew cask itself sometimes asks for your password in the command line.

All these make upgrading the outdated programs automatically not always possible.

You may think that all these can be circumvented using sudo . However, the Homebrew developers know better and they programed the brew command to display a message and exit when it is executed as root (and this is the right way to do it.)

Источник

Homebrew Documentation

Is there a glossary of terms around?

All your terminology needs can be found here.

How do I update my local packages?

First update the formulae and Homebrew itself:

You can now find out what is outdated with:

Upgrade everything with:

Or upgrade a specific formula with:

How do I stop certain formulae from being updated?

To stop something from being updated/upgraded:

To allow that formulae to update again:

Note that pinned, outdated formulae that another formula depends on need to be upgraded when required, as we do not allow formulae to be built against outdated versions. If this is not desired, you can instead brew extract to maintain your own copy of the formula in a tap.

How do I uninstall Homebrew?

How can I keep old versions of a formula when upgrading?

Homebrew automatically uninstalls old versions of a formula after that formula is upgraded with brew upgrade , and periodically performs additional cleanup every 30 days.

To disable automatic brew cleanup :

When automatic brew cleanup is disabled, if you uninstall a formula, it will only remove the latest version you have installed. It will not remove all versions of the formula that you may have installed in the past. Homebrew will continue to attempt to install the newest version it knows about when you run brew upgrade . This can be surprising.

In this case, to remove a formula entirely, you may run brew uninstall —force . Be careful as this is a destructive operation.

Why does brew upgrade or brew install also upgrade a bunch of other stuff?

Homebrew doesn’t support arbitrary mixing and matching of formula versions, so everything a formula depends on, and everything that depends on it in turn, needs to be upgraded to the latest version as that’s the only combination of formulae we test. As a consequence any given upgrade or install command can upgrade many other (seemingly unrelated) formulae, if something important like python or openssl also needed an upgrade.

Where does stuff get downloaded?

Which is usually:

My Mac .app s don’t find Homebrew utilities!

GUI apps on macOS don’t have Homebrew’s prefix in their PATH by default. If you’re on Mountain Lion or later, you can fix this by running sudo launchctl config user path «$(brew —prefix)/bin:$» and then rebooting, as documented in man launchctl . Note that this sets the launchctl PATH for all users. For earlier versions of macOS, see this page.

Читайте также:  Atom python mac os

How do I contribute to Homebrew?

Why do you compile everything?

Homebrew provides pre-compiled versions for many formulae. These pre-compiled versions are referred to as bottles and are available at https://github.com/Homebrew/homebrew-core/packages.

If available, bottled binaries will be used by default except under the following conditions:

  • Options were passed to the install command, i.e. brew install will use a bottled version of the formula, but brew install —enable-bar will trigger a source build.
  • The —build-from-source option is invoked.
  • The machine is not running a supported version of macOS as all bottled builds are generated only for supported macOS versions.
  • Homebrew is installed to a prefix other than the default (although some bottles support this).

We aim to bottle everything.

How do I get a formula from someone else’s branch?

Why should I install Homebrew in the default location?

Homebrew’s pre-built binary packages (known as bottles) of many packages can only be used if you install in the default installation prefix, otherwise they have to be built from source. Building from source takes a long time, is prone to fail, and is not supported. Do yourself a favour and install to the default prefix so that you can use our pre-built binary packages. The default prefix is /usr/local for macOS on Intel, /opt/homebrew for macOS on Apple Silicon/ARM, and /home/linuxbrew/.linuxbrew for Linux. Pick another prefix at your peril!

Why is the default installation prefix /opt/homebrew on Apple Silicon?

The prefix /opt/homebrew was chosen to allow installations in /opt/homebrew for Apple Silicon and /usr/local for Rosetta 2 to coexist and use bottles.

Why is the default installation prefix /home/linuxbrew/.linuxbrew on Linux?

The prefix /home/linuxbrew/.linuxbrew was chosen so that users without admin access can ask an admin to create a linuxbrew role account and still benefit from precompiled binaries. If you do not yourself have admin privileges, consider asking your admin staff to create a linuxbrew role account for you with home directory /home/linuxbrew .

Why does Homebrew say sudo is bad?

tl;dr Sudo is dangerous, and you installed TextMate.app without sudo anyway.

Homebrew refuses to work using sudo.

You should only ever sudo a tool you trust. Of course, you can trust Homebrew 😉 But do you trust the multi-megabyte Makefile that Homebrew runs? Developers often understand C++ far better than they understand make syntax. It’s too high a risk to sudo such stuff. It could modify (or upload) any files on your system. And indeed, we’ve seen some build scripts try to modify /usr even when the prefix was specified as something else entirely.

We use the macOS sandbox to stop this but this doesn’t work when run as the root user (which also has read and write access to almost everything on the system).

Did you chown root /Applications/TextMate.app ? Probably not. So is it that important to chown root wget ?

If you need to run Homebrew in a multi-user environment, consider creating a separate user account especially for use of Homebrew.

Why isn’t a particular command documented?

If it’s not in man brew , it’s probably an external command. These are documented here.

Why haven’t you merged my pull request?

If it’s been a while, bump it with a “bump” comment. Sometimes we miss requests and there are plenty of them. Maybe we were thinking on something. It will encourage consideration. In the meantime if you could rebase the pull request so that it can be cherry-picked more easily we will love you for a long time.

Can I edit formulae myself?

Yes! It’s easy! Just brew edit . You don’t have to submit modifications back to homebrew/core , just edit the formula as you personally need it and brew install . As a bonus brew update will merge your changes with upstream so you can still keep the formula up-to-date with your personal modifications!

Can I make new formulae?

Yes! It’s easy! Just brew create URL . Homebrew will then open the formula in EDITOR so you can edit it, but it probably already installs; try it: brew install . If you encounter any issues, run the command with the —debug switch like so: brew install —debug , which drops you into a debugging shell.

If you want your new formula to be part of homebrew/core or want to learn more about writing formulae, then please read the Formula Cookbook.

Читайте также:  Ошибка при запуске приложения 0x80070490 windows 10

Why was a formula deleted or disabled?

Use brew log to find out! Likely because it had unresolved issues and/or our analytics identified it was not widely used.

For disabled and deprecated formulae, running brew info will also provide an explanation.

Homebrew is a poor name, it’s too generic, why was it chosen?

Homebrew’s creator @mxcl was too concerned with the beer theme and didn’t consider that the project may actually prove popular. By the time Max realised that it was popular, it was too late. However, today, the first Google hit for “homebrew” is not beer related 😉

What does “keg-only” mean?

It means the formula is installed only into the Cellar and is not linked into the default prefix. This means most tools will not find it. You can see why a formula was installed as keg-only, and instructions to include it in your PATH , by running brew info .

You can still link in the formula if you need to with brew link , though this can cause unexpected behaviour if you are shadowing macOS software.

How can I specify different configure arguments for a formula?

brew edit and edit the formula. Currently there is no other way to do this.

The app can’t be opened because it is from an unidentified developer

Chances are that certain apps will give you a popup message like this:

This is a security feature from Apple. The single most important thing to know is that you can allow individual apps to be exempt from that feature. This allows the app to run while the rest of the system remains under protection.

Always leave system-wide protection enabled, and disable it only for specific apps as needed.

If you are sure you want to trust the app, you can disable protection for that app by right-clicking its icon and choosing Open :

Finally, click the Open button if you want macOS to permanently allow the app to run on this Mac. Don’t do this unless you’re sure you trust the app.

Alternatively, you may provide the —no-quarantine flag at install time to not add this feature to a specific app.

Why some apps aren’t included in upgrade

After running brew upgrade , you may notice some casks you think should be upgrading, aren’t.

As you’re likely aware, a lot of macOS software can upgrade itself:

That could cause conflicts when used in tandem with Homebrew Cask’s upgrade mechanism.

If you upgrade software through it’s built-in mechanism, that happens without Homebrew Cask’s knowledge so both versions get out of sync. If you then upgraded through Homebrew Cask and we have a lower version on the software on record, you’d get a downgrade.

There are a few ideas to fix this problem:

  • Try to prevent the software’s automated updates. That won’t be a universal solution and may cause it to break. Most software on Homebrew Cask is closed-source, so we’d be guessing. This is also why pinning casks to a version isn’t available.
  • Try to extract the installed software’s version and compare it to the cask, deciding what to do at that time. That’s a complicated solution that breaks other parts of our methodology, such as using versions to interpolate in url s (a definite win for maintainability). That solution also isn’t universal, as many software developers are inconsistent in their versioning schemes (and app bundles are meant to have two version strings) and it doesn’t work for all types of software we support.

So we let software be. Installing it with Homebrew Cask should make it behave the same as if you had installed it manually. But we also want to support software that does not auto-upgrade, so we add auto_updates true to casks of software that can do it, which excludes them from brew upgrade .

Casks which use version :latest are also excluded, because we have no way to track the version they’re in. It helps to ask the developers of such software to provide versioned releases (i.e. have the version in the path of the download url ).

If you still want to force software to be upgraded via Homebrew Cask, you can:

  • Reference it specifically in the upgrade command: brew upgrade .
  • Use the —greedy flag: brew upgrade —greedy .

Refer to the upgrade section of the brew manual page by running man -P ‘less —pattern «^ <3>upgrade»‘ brew .

Источник

Оцените статью