-
Notifications
You must be signed in to change notification settings - Fork 5
homebrew and linuxbrew formula Notes
- General homebrew usage
- Troubleshooting brew
- Installing homebrew or Linuxbrew
- Generating a list of installed packages
- Homebrew Cask Installation
- Setup a multi user brew environment on macOS
- Working with Python 2 or 3
- Build time options / parameters
- Working with homebrew casks
- Homebrew Cask
- Working with Python 2.x / 3.x
- Build time options / parameters
- Working with Homebrew or Linuxbrew formula
- Useful Links
- TODOs
To generate a list of files asosciated with a homebrew formula
brew ls -v [NAME_OF_FORMULA]Homebrew / Linuxbrew provides analytics for monitoring Homebrew usage out of the box
To status if Homebrew analytics is enabled
brew analyticsTo disable Homebrew Linuxbrew analytics
brew analytics offTo remove soure tarballs and downloaded .DMGs for homebrew and cask
brew cleanup
brew cask cleanup...will remove downloaded tarballs and image files stored within the below directory on macOS.
$HOME/Library/Caches/HomebrewTo print the location / directory where homebrew is storing tarballs for downloaded / installed apps.
brew --cacheThe above command should print the output of the location of the tarballs, ie.
/home/$USER/.cache/HomebrewTo show outdated formula for homebrew
brew outdated
brew cask outdated --greedyA lot of formula installed with
caskupdate themeselves, but can also be updated with the--greedyflag.
brew cask upgrade --greedyTo print a list of taps sourced for homebrew usage
brew tapTo print a pretty π list of installed Homebrew formula and their dependencies in a graphical format
brew deps --tree --installedTo (re)compile a program from source, ie. Vim
brew -v reinstall --build-from-source vimMore information for working with taps
for reasons unbenounced to me, brew does not install the latest version of Xcode cli tools (CLT) and apple app store or apple softwareupdate cli tools do not install the latest version of the Xcode CLT(s) either. to get around this 1. remove the old version of xcode cli tools as described in the ouput of brew then download the xcode clt dmg, and issue should be resolved. for a complete troubleshooting session, see the homebrew discussion thread i started
Hyper specific to a particular use case of mine, I had an old install of hombrew, and always got a warning about -proto related packages that was super annoying, just for the fact of filling up the screen with warning messages. Apparently linuxbrew has undergone some changes that old installs have to be manually upgraded to stop the warning messages from being printed to STDOUT standard out. learn more
If a brew service has yellow status text then more than likely the service has started but brew does not know what is wrong with the service.
brew services list
brew services stop [MR_FANCY_SERVICE]
brew services start [MR_FANCY_SERVICE]To post a log to gist.github.com
brew gist-logs [FORMULA_NAME]To manually view, install and test logs accompanied with a brew formula
cd ~/Library/Logs/Homebrew/[FORMULA]On a box with linuxbrew install and test logs are located in
~/.cache/Homebrew/Logs/[FORMULA]
- TODO Complete instructions on installing Linuxbrew on Raspbian
brew bundleTo overwrite an existing Brewfile
brew bundle --force dumpTo install Homebrew-Cask via Homebrew
brew tap caskroom/caskHomebrew-Cask has recently been migrated to the Homebrew umbrella on github, ie.
Homebrew/homebrew-caskwhereas the "main" formula are located atHomebrew/homebrew-coreon github.
Homebrew-Cask Versions Installation
To install the above mentioned repo
brew tap caskroom/versionsTo install a cask from caskroom/versions/hyper-canary
brew cask install hyper-canaryGitHub > macOS Security with casks
βοΈ See this stackoverflow answer for using access control lists on macOS for setting up a multi user brew environment, seems to be the least problematic solution I've come across so far.
- Determine the path of the brew prefix, ie. the path that will be used to store files related to working with homebrew
- Check that all users on the system who need access to
breware in the admin group - Optional Add a user to the admin group if a user needs access to brew
Will require access / privileges to use the sudo command
- Set the brew prefix path to be recursively owned by the admin group
- Set the brew prefix path to be recursively writable by all users who are in the admin group
- Verify the permissions of the brew prefix
- brew
/usr/bin/env bash
echo $(brew --prefix)
echo $(groups whoami)
sudo dseditgroup -o edit -a $(whoami) -t user admin
sudo chgrp -R admin $(brew --prefix)
sudo chmod -R g+rwX $(brew --prefix)
ls -lah $(brew --prefix)When working with a "multi-user" brew environment user_a can not remove / uninstall formula installed by user_b, ie. despite setting a umask for user_a and user_b the Cellar directory will not be group writeable and brew also uses lock files to prevent user_b from removing a formula isntalled by user_a. That said, with the above setup, both users can install and remove their own formula and run programs installed from either user.
Homebrew can create lock files in a Locks directory within the brew --prefix path. These lock files are Formula_name.brewing and can be removed. That said, make sure all users who use brew have read and write access to the Locks directory.
After installing python via homebrew and is properly configured in the
PATH
python -m pip install --upgrade setuptoolspython -m pip install --upgrade pip
β οΈ When using the--userflag withpipon macOS packages, ie.virtualenvwill be placed in `$HOME/Library/Python/[major.minor]/bin/
Homebrew can install concurrent Pythons on the local system.
Homebrew separates its pythons by creating separate binaries, ie. python 2.x is located at
/usr/local/opt/python/libexec/bin/pythonand python 3.x is located at
/usr/local/bin/python3Both pythons use separate pip package managers to manage python dependencies, ie. python 2.x uses
/usr/local/opt/python/libexec/bin/pipand python 3.x uses
/usr/local/bin/pip3Homebrew documentation - Python
To show build time options for a homebrew formula
brew info [mr_fancy_pants_formula]brew info weechat
To search for a brew formula from a cask, ie. kodi
brew search kodiOutput:
brew search kodi 0 < 14:24:28
==> Searching local taps...
==> Searching taps on GitHub...
caskroom/cask/kodi caskroom/versions/kodi-development
==> Searching blacklisted, migrated and deleted formulae...Then to install kodi
brew cask install kodiTo edit a formula, make sure the $EDITOR environment variable is set to your favorite text editor, ie. in the fish shell,
set -x EDITOR /path/to/your/favorite/editor
set -xis fish shell specific, and will not with BASH
Ex
set -x EDITOR /home/linuxbrew/.linuxbrew/bin/nvimThen one can edit the formula of choosing with the below command,
brew edit <name_of_formula.rb>Ex
brew edit weechat.rbTo list all installed packages with homebrew π»
brew list
brew cask listTo get the SHA 256 hash of a file and put the hash in a clipboard on macOS
shasum -a 256 <name_of_file> | awk '{printf $1}' | pbcopy- Official - search for formula
-
How to Create and Maintain a Tap
-
Formula Cookbook for developers
-
Python for Formula Authors
- A deep dive π into homebrew dependencies
-
add entries to table of contents for this .md file - figure out which binaries belong to which packages, ie. which package installed
locate
If you find any of this info helpful on your journey π click that π βοΈ star button. It sure makes me feel warm and fuzzy π» on the inside.
-
Linux and macOS Operation Notes
- β macOS Op Notes
- π§ Linux Op Notes
- Vim & Neovim Notes
- git Notes
- π fish shell Notes
- ECMAScript Tooling
- π₯§ Raspberry Pi Notes
- asdf version manager Notes
- Bind9 Notes
- Creating a custom motd on Debian Jessie
- ECMAScript Tooling
- Email client Notes
- Email Server Setup Notes Postfix & Dovecot
- Emoji side quest
- fish shell Notes
- π₯ π€ git it got it good Notes
- git Notes
- Graphics and Image Processing Notes
- GUI text editor Notes
- π»π§ Homebrew and Linuxbrew formula Notes
- Linux and macOS Administration Notes
- Linux and macOS Troubleshooting Notes
- MacBook Pro Late 2013 Notes
- Vim & Neovim Notes
- Video Production Notes
- Python Notes
- radare Notes
- Raspberry Pi Notes
- Terminal Emulators
- Tmux Notes
- Web Browser Notes
- Weechat Notes
- Microsoft Windows Notes