Meta tags:
description= Documentation for the missing package manager for macOS (or Linux).;
Headings (most frequently used words):
why, homebrew, do, how, is, formula, does, my, brew, upgrade, the, default, of, formulae, apps, you, can, it, frequently, update, from, when, or, install, stuff, get, don, run, command, to, in, installation, prefix, on, linuxbrew, what, pull, request, make, was, position, documentation, faq, asked, questions, there, glossary, terms, around, local, packages, stop, certain, being, updated, uninstall, keep, old, versions, upgrading, also, bunch, other, where, downloaded, mac, find, utilities, more, after, developer, contribute, compile, everything, should, location, opt, apple, silicon, home, linux, say, sudo, bad, ownership, and, permissions, used, by, isn, particular, documented, haven, merged, edit, myself, new, someone, else, deleted, disabled, poor, name, too, generic, chosen, keg, only, mean, specify, different, configure, arguments, for, aren, some, included, during, rewrite, rust, faster, cask, lose, their, dock, launchpad, permission, settings,
Text of the page (most frequently used words):
the (108), homebrew (77), brew (57), and (52), you (48), formula (46), for (32), #upgrade (32), why (29), that (28), can (25), #default (22), install (20), with (19), this (19), formulae (18), user (17), when (16), are (16), does (16), installed (16), prefix (16), will (15), update (15), cask (15), only (15), not (15), software (15), run (14), how (14), version (13), was (13), use (12), app (12), macos (12), versions (12), command (11), have (11), all (11), your (11), from (10), also (9), edit (9), core (9), sudo (9), uninstall (8), some (8), bottles (8), but (8), local (8), installation (8), linuxbrew (8), running (7), path (7), work (7), built (7), used (7), everything (7), packages (7), has (6), permissions (6), apps (6), which (6), their (6), source (6), more (6), files (6), don (6), want (6), latest (6), try (6), disable (6), set (6), what (6), other (6), get (6), then (6), may (6), find (6), see (6), old (5), new (5), any (5), ruby (5), using (5), faster (5), than (5), rust (5), back (5), make (5), upgraded (5), casks (5), should (5), support (5), doesn (5), there (5), too (5), pull (5), request (5), note (5), binary (5), linux (5), stuff (5), opt (5), developer (5), where (4), being (4), without (4), position (4), tap (4), bottle (4), about (4), time (4), switch (4), still (4), our (4), many (4), upgrading (4), every (4), after (4), keg (4), modify (4), build (4), means (4), chosen (4), disabled (4), read (4), available (4), multi (4), ownership (4), instead (4), stop (4), entirely (4), home (4), apple (4), silicon (4), auto (4), frequently (4), cleanup (4), outdated (4), place (3), otherwise (3), reinstall (3), strategy (3), metadata (3), dock (3), launchpad (3), around (3), these (3), updater (3), permission (3), certain (3), deleted (3), rewrite (3), would (3), mean (3), behaviour (3), another (3), frontend (3), runs (3), cache (3), included (3), users (3), force (3), developers (3), such (3), were (3), currently (3), automatically (3), isn (3), updates (3), most (3), itself (3), while (3), aren (3), need (3), into (3), first (3), copy (3), else (3), probably (3), shell (3), changes (3), they (3), keep (3), merged (3), documentation (3), documented (3), designed (3), single (3), executed (3), binaries (3), group (3), root (3), system (3), trust (3), something (3), usr (3), allow (3), pre (3), foo (3), launchctl (3), depends (3), remove (3), automatic (3), export (3), specific (3), updated (3), upgrades (2), two (2), contents (2), including (2), been (2), granted (2), however (2), starting (2), allowed (2), case (2), disk (2), access (2), lose (2), settings (2), cellar (2), tabs (2), links (2), postinstall (2), help (2), api (2), fetch (2), semantics (2), operation (2), actually (2), far (2), skipped (2), against (2), did (2), win (2), fetching (2), especially (2), greedy (2), because (2), way (2), track (2), provide (2), url (2), solution (2), prevent (2), own (2), control (2), pin (2), fix (2), both (2), out (2), lower (2), could (2), cause (2), likely (2), during (2), specify (2), different (2), configure (2), arguments (2), link (2), tool (2), info (2), beer (2), popular (2), poor (2), name (2), generic (2), issues (2), repository (2), someone (2), part (2), learn (2), writing (2), cookbook (2), yes (2), easy (2), already (2), just (2), open (2), like (2), debug (2), editor (2), create (2), repositories (2), upstream (2), before (2), homebrew_no_install_from_api (2), modifications (2), environment (2), yourself (2), myself (2), bump (2), haven (2), man (2), particular (2), primarily (2), well (2), configurations (2), directories (2), subdirectories (2), current (2), important (2), chown (2), textmate (2), sandbox (2), understand (2), say (2), bad (2), installations (2), supported (2), location (2), bottled (2), compile (2), contribute (2), stable (2), homebrew_no_auto_update (2), mac (2), utilities (2), downloaded (2), bunch (2), bar (2), pinned (2), locking (2), formula_or_cask (2), package (2), list (2), glossary (2), terms (2), faq (2), asked (2), questions (2), defaults, necessary, possible, strategies, uninstalling, reinstalling, one, replacing, removes, internal, appears, content, replacement, works, treating, ventura, application, terminal, either, management, full, suffice, thinks, intent, reimplementing, layout, caveats, fallback, logic, language, little, gain, matters, performance, happening, useful, network, sooner, backed, earlier, trimming, overhead, simple, paths, duplicating, second, people, care, representative, comparisons, real, file, resolves, pours, writes, preserves, existing, looked, delegated, delegating, defeats, point, benchmarked, zero, delegation, cold, narrow, operations, batches, warm, archive, spend, tried, refer, section, details, manual, page, via, reference, specifically, excluded, helps, ask, versioned, releases, include, download, let, anything, behave, same, manually, since, self, add, detect, older, homebrew_no_upgrade_auto_updates_casks, appdir, auto_updates, true, extract, compare, deciding, complicated, break, parts, methodology, interpolate, values, definite, maintainability, universal, inconsistent, versioning, schemes, bundles, meant, strings, types, automated, closed, trying, guesswork, few, ideas, problem, uses, its, mechanisms, happens, knowledge, causing, sync, through, record, downgrade, conflicts, tandem, mechanism, aware, lot, notice, think, directly, dependencies, though, unexpected, shadowing, configuration, linked, tools, instructions, creator, mxcl, wasn, concerned, theme, didn, consider, project, prove, max, realised, late, today, google, hit, related, deprecated, explanation, had, indicated, widely, analytics, unresolved, log, checkout, pull_request_number, ensure, please, above, installs, encounter, drops, debugging, undo, made, revert, state, reset, editing, must, ignore, submit, personally, bonus, merge, date, personal, wait, clone, complete, show, maintainer, feedback, addressed, tests, passing, comment, sometimes, miss, requests, plenty, them, meantime, rebase, easily, external, privileges, who, launched, managed, owning, typically, installing, replace, within, execute, 0755, rwx, forced, staff, admin, previous, question, regarding, wget, applications, write, almost, wider, measures, supply, chain, security, ever, course, megabyte, makefile, often, better, syntax, high, risk, upload, indeed, seen, scripts, even, specified, refuses, dangerous, anyway, avoid, owned, allowing, precompiled, rather, shared, role, accounts, unsupported, environments, tiers, rosetta, coexist, favour, pick, peril, intel, known, building, takes, long, prone, failure, aim, options, passed, example, trigger, although, machine, generated, option, invoked, except, under, following, conditions, provides, referred, https, github, com, contribution, guidelines, behavior, tags, frequency, homebrew_auto_update_secs, homebrew_update_to_tag, off, commit, tag, main, commands, hour, hours, enables, mode, gui, rebooting, sets, config, bin, usually, library, caches, arbitrary, mixing, matching, turn, needs, combination, test, consequence, given, seemingly, unrelated, needed, openssl, python, careful, destructive, past, continue, attempt, newest, knows, surprising, homebrew_no_cleanup_formulae, homebrew_no_install_cleanup, uninstalls, each, periodically, performs, additional, days, script, outside, required, desired, unpin, again, tradeoffs, alternatives, newer, until, choose, updating, now, kegs, definitions, terminology,
Text of the page (random words):
a when upgrading why does brew upgrade formula or brew install formula also upgrade a bunch of other stuff where does stuff get downloaded my mac app s don t find homebrew utilities why does homebrew update more frequently after i run a developer command how do i contribute to homebrew why do you compile everything why should i install homebrew in the default location why is the default installation prefix opt homebrew on apple silicon why is the default installation prefix home linuxbrew linuxbrew on linux why does homebrew say sudo is bad what is the default ownership and permissions used by homebrew why isn t a particular command documented why haven t you merged my pull request can i edit formulae myself can i make new formulae how do i get a formula from someone else s pull request why was a formula deleted or disabled homebrew is a poor name it s too generic why was it chosen what does keg only mean how can i specify different configure arguments for a formula why aren t some apps included during brew upgrade why don t you rewrite homebrew in rust to make it faster why do my cask apps lose their dock position launchpad position permission settings when i run brew upgrade is there a glossary of terms around the formula cookbook has a list of homebrew terminology how do i update my local packages first update all package definitions formulae and homebrew itself brew update you can now list which of your installed packages kegs are outdated with brew outdated upgrade everything with brew upgrade or upgrade a specific formula with brew upgrade formula how do i stop certain formulae from being updated to stop something from being updated upgraded brew pin formula_or_cask if you also do not want homebrew to automatically learn about newer versions until you choose to disable auto updating entirely export homebrew_no_auto_update 1 for the tradeoffs and alternatives see locking installed formulae at specific versions to allow that package to update again brew unpin formula_or_cask 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 see locking installed formulae at specific versions instead pinned casks are skipped by brew upgrade but an app s own updater may still update it outside homebrew how do i uninstall homebrew to uninstall homebrew run the uninstall script from the homebrew install repository how do i keep old versions of a formula when upgrading homebrew automatically uninstalls old versions of each formula that is upgraded with brew upgrade and periodically performs additional cleanup every 30 days to disable automatic brew cleanup export homebrew_no_install_cleanup 1 to disable automatic brew cleanup only for formulae foo and bar export homebrew_no_cleanup_formulae foo bar 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 formula be careful as this is a destructive operation why does brew upgrade formula or brew install formula 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 especially if something important like python or openssl also needed an upgrade where does stuff get downloaded brew cache which is usually library caches homebrew my mac app s don t find homebrew utilities gui apps on macos don t have homebrew s prefix in their path by default you can fix this by running sudo launchctl config user path brew prefix bin path and then rebooting as documented in man launchctl note that this sets the launchctl path for all users why does homebrew update more frequently after i run a developer command running a developer command e g brew edit brew create enables homebrew s developer mode this means homebrew may auto run brew update before some commands every hour instead of every 24 hours updates track the latest commit on main instead of the latest stable tag to switch back to the default behavior run brew developer off if you only want to switch back to stable tags set homebrew_update_to_tag 1 in your shell environment to control auto update frequency use homebrew_auto_update_secs to disable auto updates entirely set homebrew_no_auto_update 1 how do i contribute to homebrew read our contribution guidelines why do you compile everything homebrew provides pre built binary packages for many formulae these 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 the build from source option is invoked no bottle is available for the machine s currently running os version bottles for macos are generated only for supported macos versions homebrew is installed to a prefix other than the default although some bottles support this formula options were passed to the install command for example brew install formula will try to find a bottled binary but brew install with foo formula will trigger a source build we aim to bottle everything why should i install homebrew in the default location homebrew s pre built binary packages known as bottles of many formulae 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 failure and is not supported the default prefix is opt homebrew for macos on apple silicon usr local for macos on intel and home linuxbrew linuxbrew for linux do yourself a favour and install to the default prefix so that you can use our pre built binary packages 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 to avoid writing to system owned directories after installation while still allowing most precompiled binaries bottles to be used homebrew is designed for single user installations rather than shared role accounts see support tiers for unsupported multi user environments 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 the sandbox is part of homebrew s wider software supply chain security measures did you chown root applications textmate app probably not so is it that important to chown root wget note homebrew is primarily designed for single user use and does not work well in multi user configurations what is the default ownership and permissions used by homebrew first see previous question regarding sudo ownership on macos all subdirectories and files use a forced default of admin user group instead of lower default user group staff and the current user that executed the installation ownership on linux all subdirectories and files default to the current user and the user group that executed the installation by default permissions for homebrew managed directories and files are 0755 u rwx g rx o rx on both macos and linux this means that only the owning user typically the installing user can modify or replace files within the homebrew prefix while all users are allowed to read and execute installed binaries when a homebrew installed binary is executed it runs with the privileges of the user who launched it note homebrew is primarily designed for single user use and does not work well in multi user configurations why isn t a particular command documented if it s not in man brew it s probably an external command with documentation available using help why haven t you merged my pull request if all maintainer feedback has been addressed and all tests are passing bump it with a bump comment sometimes we miss requests and there are plenty of them in the meantime rebase your pull request so that it can be more easily merged can i edit formulae myself yes it s easy if brew tap doesn t show homebrew core set yourself up to edit a local copy set homebrew_no_install_from_api 1 in your shell environment run brew tap force homebrew core and wait for the clone to complete then run brew edit formula to open the formula in editor you don t have to submit modifications back to homebrew core just edit the formula to what you personally need and brew install formula 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 note that if you are editing a core formula or cask you must set homebrew_no_install_from_api 1 before using brew install or brew update otherwise they will ignore your local changes and default to the api to undo all changes you have made to any of homebrew s repositories run brew update reset it will revert to the upstream state on all homebrew s repositories can i make new formulae yes it s easy if you already have a local copy of homebrew core see above just use the brew create command homebrew will then open the formula in editor so you can edit it but it probably already installs try it brew install formula if you encounter any issues run the command with the debug switch like so brew install debug formula 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 how do i get a formula from someone else s pull request ensure you have a local copy of homebrew core then brew update brew install gh cd brew repository homebrew core gh pr checkout pull_request_number why was a formula deleted or disabled use brew log formula to find out likely because it had unresolved issues and or our analytics indicated it was not widely used for disabled and deprecated formulae running brew info formula will also provide an explanation homebrew is a poor name it s too generic why was it chosen homebrew s creator mxcl wasn t 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 for including it in your path by running brew info formula you can modify a tool s build configuration to find keg only dependencies or you can link in the formula if you need to with brew link formula though this can cause unexpected behaviour if you are shadowing macos software how can i specify different configure arguments for a formula brew edit formula and edit the formula directly currently there is no other way to do this why aren t some apps included during brew 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 when software uses its built in mechanisms to upgrade itself it happens without homebrew cask s knowledge causing both versions get out of sync if you were to then upgrade through homebrew cask while we have a lower version of 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 brew pin cask can prevent homebrew from upgrading a cask but it does not disable an app s own updater most software on homebrew cask is closed source so trying to control that for every app would be guesswork try to extract the installed software s version and compare it to the cask deciding what to do at that time it d be a complicated solution that would break other parts of our methodology such as using versions to interpolate url values a definite win for maintainability this 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 anything installed with homebrew cask should behave the same as if it were installed manually but since we also want to support software that doesn t self upgrade we add auto_updates true to casks for software that does when homebrew can detect that the version currently installed in the user s appdir is older than the latest version in the tap brew upgrade will try to upgrade these casks automatically to disable this default behaviour set homebrew_no_upgrade_auto_updates_casks 1 casks which use version latest are also excluded because we have no way to track their installed version it helps to ask the developers of such software to provide versioned releases i e include 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 cask or use the greedy switch brew upgrade greedy refer to the upgrade section of the brew manual page for more details why don t you rewrite homebrew in rust to make it faster we tried we built brew rs a rust frontend and benchmarked it against ruby with zero delegation back to ruby and cold cache i o included rust did win some narrow operations it was faster at fetching batches of bottles especially with a warm archive cache but fetching is not where users spend their time for brew install the operation people actually care about ruby was faster on representative comparisons a re...
|