Homebrewを3回アンインストールしてインストールしたのですが、ほとんどのインストールの最後にはアクセス許可が拒否されるので、インストールを許可しないように思われるためです。
例として、私が現在直面しているこのlibjpegダウンロードシナリオをポストします。
Libjpegをインストールしてみます。
$ brew install libjpeg
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/jpeg-8d.mountain_lion.bottle.1.tar.gz
Already downloaded: /Library/Caches/Homebrew/jpeg-8d.mountain_lion.bottle.1.tar.gz
==> Pouring jpeg-8d.mountain_lion.bottle.1.tar.gz
Warning: Could not link jpeg. Unlinking...
Error: The brew link step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link jpeg'
Error: Permission denied - /usr/local/opt/jpeg
'brew link jpeg'の結果は
Error: Permission denied - /usr/local/opt/jpeg
これは私の醸造医者が読むものです
$ brew doctor
Warning: "config" scripts exist outside your system or Homebrew directories.
./configure scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
/Library/Frameworks/Python.framework/Versions/2.7/bin/python-config
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2-config
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run brew link on these:
jpeg
この許可の問題は、brewの使用を不可能にしているので、どんな提案でも本当に感謝します。
フォルダにchown
を使用することで問題を解決できました。
Sudo chown -R "$USER":admin /usr/local
また、(おそらく)/Library/Caches/Homebrew
でも同じことをする必要があります。
Sudo chown -R "$USER":admin /Library/Caches/Homebrew
どうやら私は以前からSudo
を使って/usr/local
に対する私のフォルダ許可を変更していましたが、これから先はbrewを使ったすべてのインストールが成功することが証明されました。
この回答は、 gitHubさんの自作イシュートラッカー の好意によりもたらされます - /
MacOS High Sierraのユーザー向けの新しいコマンドです。/usr/local
のchown
は不可能です。
Sudo chown -R $(whoami) $(brew --prefix)/*
私がやったように、ここに誰でも着地するための最初の選択肢として、これがあなたがすることを示唆するものは何でもに従ってください:
brew doctor
これは最も安全な方法です。とりわけ、次のことをお勧めします。
Sudo chown -R $(whoami) /usr/local
パーミッションの問題は解決しました。
OPはまさにそれをしました、しかし明らかに上記の提案を得ませんでした。あなたはそうかもしれません、そしてそれは常にそこから始めた方が良いでしょう。
OSX High Sierraを使用している場合は、/usr/local
をchown
'dにすることはできません。あなたが使用することができます:
Sudo chown -R $(whoami) $(brew --prefix)/*
私はこの問題を抱えていました..実用的な解決策はroot
ではなく/usr/local
の所有権を現在のユーザーに変更することです:
Sudo chown -R $(whoami):admin /usr/local
しかし、実際にはこれは適切な方法ではありません。主にあなたのマシンがサーバーかマルチユーザーか。
私の提案 は上記のように所有権を変更し、Brew ..(update、install ...など)で実装したいことをすべて実行してから所有権をrootに戻すことです。
Sudo chown -R root:admin /usr/local
それは問題を解決し、所有権の設定を適切な設定に保つでしょう。
私は/user/local/Frameworks
フォルダを持っていなかったので、これは私のためにそれを修正しました
Sudo mkdir -p /usr/local/Frameworks
Sudo chown -R $(whoami) /usr/local/Frameworks
1行目は、自作用の新しいFrameworksフォルダを作成します。 2行目は、そのフォルダに現在のユーザー権限を与えます。これで十分です。
OSX High Sierraがあります
トップ投票からのコマンド 答え /私にはうまくいかない。
それは出力を得ました:
chown:/ usr/{my_username} dmin:不正なユーザー名
このコマンドはうまく動作します(/ usr/localのグループは既にadmin
でした)。
Sudo chown -R $USER /usr/local
ブランケットchown -R
よりも少しターゲットを絞ったアプローチをご希望の場合は、 このfix-homebrew
スクリプトが便利です。
#!/bin/sh
[ -e `which brew` ] || {
echo Homebrew doesn\'t appear to be installed.
exit -1
}
BREW_ROOT="`dirname $(dirname $(which brew))`"
BREW_GROUP=admin
BREW_DIRS=".git bin sbin Library Cellar share etc lib opt CONTRIBUTING.md README.md SUPPORTERS.md"
echo "This script will recursively update the group on the following paths"
echo "to the '${BREW_GROUP}' group and make them group writable:"
echo ""
for dir in $BREW_DIRS ; do {
[ -e "$BREW_ROOT/$dir" ] && echo " $BREW_ROOT/$dir "
} ; done
echo ""
echo "It will also stash (and clean) any changes that are currently in the homebrew repo, so that you have a fresh blank-slate."
echo ""
read -p 'Press any key to continue or CTRL-C to abort.'
echo "You may be asked below for your login password."
echo ""
# Non-recursively update the root brew path.
echo Updating "$BREW_ROOT" . . .
Sudo chgrp "$BREW_GROUP" "$BREW_ROOT"
Sudo chmod g+w "$BREW_ROOT"
# Recursively update the other paths.
for dir in $BREW_DIRS ; do {
[ -e "$BREW_ROOT/$dir" ] && (
echo Recursively updating "$BREW_ROOT/$dir" . . .
Sudo chmod -R g+w "$BREW_ROOT/$dir"
Sudo chgrp -R "$BREW_GROUP" "$BREW_ROOT/$dir"
)
} ; done
# Non-distructively move any git crud out of the way
echo Stashing changes in "$BREW_ROOT" . . .
cd $BREW_ROOT
git add .
git stash
git clean -d -f Library
echo Finished.
あなたのユーザにchmod
をする代わりに、(あなたがおそらく属している)admin
グループに、homebrewが使用する/usr/local
の特定のディレクトリへの書き込みアクセス権を与えます。それはそれをする前にそれが何をしようとしているのかも正確に教えてくれます。
私はまだフォルダのアクセス権をいじる必要はありませんでしたので、私は次のようにしました:
brew doctor
brew upgrade
brew cleanup
私はそれから私の他の醸造の方式を首尾よく取付け続けることができた。
私の場合は/ usr/local/Frameworksも存在しませんでした。
Sudo mkdir /usr/local/Frameworks
Sudo chown -R $(whoami) /usr/local/Frameworks
そして、すべてが期待通りに動作しました。
これで問題は解決しました。
Sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew
Sudo chown -R "$USER":admin /usr/local
私はこれらのコマンドで私の問題を解決しました:
Sudo mkdir /usr/local/Cellar
Sudo mkdir /usr/local/opt
Sudo chown -R $(whoami) /usr/local/Cellar
Sudo chown -R $(whoami) /usr/local/opt
これらの提案はすべてうまくいく可能性があります。醸造医者の最新版では、しかしよりよい提案がなされた。
まず最初に - おそらく/usr/local
からきた混乱をコマンドラインで実行して修正します。
Sudo chown -R root:wheel /usr/local
次に、このユーザー専用のパスの所有権を取得します。
Sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin /usr/local/var /usr/local/Frameworks /usr/local/lib/pkgconfig /usr/local/share/locale
Sudo brew update
を実行し、次に発生する可能性のあるすべての警告とエラーを読んでいれば、この情報はすべて利用可能です。
マルチユーザーMacの場合、これは私のために働きました:
Sudo chown -R $(whoami):admin $(brew --prefix)/*
Githubには、/ admin/localディレクトリとbrewディレクトリのパーマを「admin」グループのメンバーであれば誰でもアクセスできるように修正するキラースクリプトがあります。
https://Gist.github.com/jaibeee/9a4ea6aa9d428bc77925
/ usr/local/___ディレクトリを$ USERに変更すると、そのマシン上で自作の他の管理ユーザーをすべて停止させるので、これは選択した答えよりも優れた解決策です。
これが私がこれを投稿した時のスクリプトの内容です。
chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew
chgrp -R admin /opt/homebrew-cask
chmod -R g+w /opt/homebrew-cask
私にとっては、それは後に働いた
brew doctor
権限変更コマンドで別のエラーが発生しました
chown: /usr/local: Operation not permitted
私の場合、SaltStackの削除と再インストールに問題があります。
実行後:
ls -lah /usr/local/Cellar/salt/
私は、グループのオーナーが「スタッフ」であることに気づきました。 (ところで、私はmacOS Mojaveバージョン10.14.3を実行しています。)staffグループは私の職場の設定に関連しているかもしれませんが、私は本当に知りません。とにかく、私は自分自身がそれ以上何かを破ることを防ぐためにグループを保存しました。
私はそれから走った:
Sudo chown -R "$USER":staff /usr/local/Cellar/salt/
その後、私はこのコマンドで正常に削除することができました(rootではなく)。
brew uninstall --force salt
cd /usr/local && Sudo chown -R $(whoami) bin etc include lib sbin share var opt Cellar Frameworks
実はそれは本当に簡単です、このコマンドを実行してください:brew doctor
そして私の場合のように、パーミッションの問題を解決するために何をすべきかを教えてくれます。
これが問題でした。
Warning: The following directories are not writable by your user:
/usr/local/share/man/man5
/usr/local/share/man/man7
そしてこれが解決策でした:
You should change the ownership of these directories to your user.
Sudo chown -R $(whoami) /usr/local/share/man/man5 /usr/local/share/man/man7
最新のHomebrewを持っていないのなら、Homebrewをrootで走らせることでこれを "固定"した。これはHomebrew実行可能ファイルの所有権をrootに変更することによってのみ可能になった。ある時点で、彼らはこの機能を削除しました。
そして、彼らはそれがrootとして実行されるべきではないという多くの警告を与えるだろうことを知っています、しかしc'mon、そうでなければ正しく動作しません。
MacOS Mojaveでは、/ usr/localフォルダー(Sudo chown -R "$USER":admin /usr/local
)をchown
する権限もありませんでした。
Sudo chown -R "$USER":admin /usr/local/*
は機能しましたが、すべてのアクセス権を変更しましたwithinローカルフォルダー。
これが同じ問題を抱えている他の人の助けになることを願っています。
私はこのページですべてを試しました、私はこの解決策を使いました:
brew uninstall --force brew-cask; brew untap $tap_name; brew update; brew cleanup; brew cask cleanup;
私の状況はOPと似ていましたが、私の問題は特にSudoをbrew caskで実行し、それから私のパスワードを間違ったものにすることによって引き起こされました。この後、私はインストールを妨げる許可で立ち往生しました。
フォルダ実行時のBrew権限に関するエラーを解決するには
brew Prune
これで問題は解決します。ディレクトリを変更する必要はありません。