切腹のイラスト

sudoでいい感じにHomebrewを使いたい

{
  date: "",
}

macOSのHomebrewを複数ユーザーで共有して使うとつらいので,brewコマンドにaliasを貼る。 しかし,特定のコマンドを特定のユーザーとして実行する情報が見つからなかったのでメモ。

sudoers

man sudoersSUDOERS FILE FORMATの項目にEBNFによる形式の定義と解説がある。

%stuff  ALL = (hogeuser) NOPASSWD: /opt/homebrew/bin/brew

各種シェルの設定

GNUなcoreutilsとかOpenJDKとかを使うなら追加で設定が必要。 しかしそれらはグローバルにすると色々アレなので後でユーザー単位で設定する。

とりあえずグローバルに設定すべきなのは以下のものだけ。

zsh

/etc/zshrcに追記する。

## Homebrew
eval `/opt/homebrew/bin/brew shellenv`
export HOMEBREW_NO_ANALYTICS=1
export HOMEBREW_NO_AUTO_UPDATE=1
alias brew="sudo -Hu hogeuser brew"

fish

/opt/homebrew/etc/fish/conf.d/brew.fishに書く。

eval (/opt/homebrew/bin/brew shellenv)
set -x HOMEBREW_NO_ANALYTICS 1
set -x HOMEBREW_NO_AUTO_UPDATE 1
alias brew="sudo -Hu hogeuser brew"

おまけ : 追加設定

とりあえず今の状態でもbrewコマンドは使えるはず。 僕はfishを使うので,おまけでその設定だけ。

if test -e /opt/homebrew/bin/brew
  set BREW_PREF (/opt/homebrew/bin/brew --prefix)
end
fish_add_path -P \
  $BREW_PREF/bin \
  $BREW_PREF/sbin \
  $BREW_PREF/opt/coreutils/libexec/gnubin