私は2人のエンジニアの間で共有されているMacを持っています。両方とも別々のユーザーアカウントを持っています。両方ともbrew update
とbrew install...
を時々実行する必要があります。
/usr/local must be writable!
のようなエラーを発生させずにこれを設定するにはどうすればよいですか?
ええ、私はUserA
がbrewを使用するたびに/usr/local
のパーミッションを引き継ぐことができます(そしてUserB
と同じ)が、それは多くの不必要なトラブルのようです。
Hombrewはパッケージを/usr/local
にインストールします。インストールするパッケージの多くを壊さずにそれについてできることは何もありません。次のように、すべてのユーザーに読み取りおよび書き込み権限を追加します。
Sudo chmod -R +rw /usr/local
これはシステムフォルダであるため、すべてのユーザーが同じbrewインストールを共有することに注意してください。 1人のユーザーは削除他のユーザーがインストールしたパッケージなどを実行できます。したがって、問題を回避するために調整してください。
グループのアクセス許可をadminまたは両方のユーザーが属する別のグループに変更することもできます。
chgrp -R admin /usr/local
chmod -R g+w /usr/local
元のソース: https://Gist.github.com/jaibeee/9a4ea6aa9d428bc77925
UPDATE:
MacOS High Sierraでは、/usr/local
の所有者、グループ、または権限を変更できません。そのため、サブフォルダーのグループと権限を変更する必要があります。
chgrp -R admin /usr/local/*
chmod -R g+w /usr/local/*
[〜#〜] update [〜#〜]2018年9月、High Sierra 10.13.6
brew
へのアクセスが必要なシステム上のすべてのユーザーがadminグループに属していることを確認しますSudoコマンドを使用するにはアクセス/特権が必要です
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)
これは ser4815162342 の回答を編集したもので、そのままでは機能しませんでした。
brew-usergroup
という新しいグループを作成します。 brewを使用するすべてのユーザーをグループに追加します(ドイツのmacOSの添付のスクリーンショットのように)。ターミナルで、これを行います:
echo $(brew --prefix)
echo $(groups $(whoami))
Sudo dseditgroup -o edit -a $(whoami) -t user brew-usergroup
Sudo chgrp -R brew-usergroup $(brew --prefix)/*
Sudo chmod -R g+rwX $(brew --prefix)/*
ls -lah $(brew --prefix)
これは、(他の回答のように)brewフォルダーの権限を変更しないことに注意してください。brewフォルダーのサブフォルダー/ファイルを変更します。 brew install
はエラーなく正常に動作するようになりました。
上記は正常に機能しますが、新しいファイルにこれらのアクセス許可を自動的に継承させる場合は、継承されるACLを設定します(それ以外の場合は、ボトルを注ぐユーザーのみが削除できます)。ここでこれを行う方法のヒントが見つかりました: https://Gist.github.com/nelstrom/498864
root
を1回実行する(グループ「admin」のすべてのユーザーがアクセスできると仮定):
cd /usr/local
chmod -R +a "group:admin allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" *
chgrp -R admin *
chmod -R g+rwX *
ls -lae .
-e
on ls
はACLを示します。
アクセス許可またはSudoをハッキングしようとするすべての答えは間違っています。 Sudoを使用せず、ユーザーアカウント間で単一のbrewインストールを共有しないでください。
正しい答えは、マシン上で「通常」のbrewインストールを1つだけ使用し、他のすべてのユーザーにはbrewのローカルバージョンをインストールすることです。これを行うには、ユーザーが所有するディレクトリにtarballを展開し、PATHの先頭にそのbinディレクトリを含めます。または、2つのソースリポジトリのgitチェックアウトを実行することもできます。
Gitアプローチでは、 homebrew-core および brew が必要です。
これらを確認するためにユーザーのホームディレクトリを任意に選択します。
cd $ HOME; git clone [email protected]:Homebrew/homebrew-core.git; git clone [email protected]:Homebrew/brew.git
次に、新しいbrew binディレクトリを優先するようにPATHを変更します。
export PATH = $ HOME/brew/bin:$ PATH
これは新規インストールであるため、目的のbrewパッケージをすべて再度インストールする必要があります。
最善の解決策は、sudoersレコードを追加して、非特権ユーザー「joe」が管理ユーザーとして「brew」関連コマンドを実行できるようにすることです。
/etc/sudoers.d/joeに次の内容のファイルを作成します。
joe ALL=(administrator) NOPASSWD: /usr/local/bin/brew
その後、次のようにbrewを実行できます。
Sudo -Hu administrator brew install <smth>