web-dev-qa-db-ja.com

自作許可を修正するには?

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の使用を不可能にしているので、どんな提案でも本当に感謝します。

488
Saturnino

フォルダにchownを使用することで問題を解決できました。

Sudo chown -R "$USER":admin /usr/local

また、(おそらく)/Library/Caches/Homebrewでも同じことをする必要があります。

Sudo chown -R "$USER":admin /Library/Caches/Homebrew

どうやら私は以前からSudoを使って/usr/localに対する私のフォルダ許可を変更していましたが、これから先はbrewを使ったすべてのインストールが成功することが証明されました。

この回答は、 gitHubさんの自作イシュートラッカー の好意によりもたらされます - /

885
Saturnino

MacOS High Sierraのユーザー向けの新しいコマンドです。/usr/localchownは不可能です。

Sudo chown -R $(whoami) $(brew --prefix)/*

参照: https://github.com/Homebrew/brew/issues/3228

275
andrewwong97

私がやったように、ここに誰でも着地するための最初の選択肢として、これがあなたがすることを示唆するものは何でもに従ってください:

brew doctor

これは最も安全な方法です。とりわけ、次のことをお勧めします。

Sudo chown -R $(whoami) /usr/local

パーミッションの問題は解決しました。

OPはまさにそれをしました、しかし明らかに上記の提案を得ませんでした。あなたはそうかもしれません、そしてそれは常にそこから始めた方が良いでしょう。

236
Nycen

OSX High Sierraを使用している場合は、/usr/localchown'dにすることはできません。あなたが使用することができます:

Sudo chown -R $(whoami) $(brew --prefix)/*

56
Richard

私はこの問題を抱えていました..実用的な解決策はrootではなく/usr/localの所有権を現在のユーザーに変更することです:

  Sudo chown -R $(whoami):admin /usr/local

しかし、実際にはこれは適切な方法ではありません。主にあなたのマシンがサーバーかマルチユーザーか。

私の提案 は上記のように所有権を変更し、Brew ..(update、install ...など)で実装したいことをすべて実行してから所有権をrootに戻すことです。

  Sudo chown -R root:admin /usr/local

それは問題を解決し、所有権の設定を適切な設定に保つでしょう。

27
Maher Abuthraa

私は/user/local/Frameworksフォルダを持っていなかったので、これは私のためにそれを修正しました

Sudo mkdir -p /usr/local/Frameworks
Sudo chown -R $(whoami) /usr/local/Frameworks

1行目は、自作用の新しいFrameworksフォルダを作成します。 2行目は、そのフォルダに現在のユーザー権限を与えます。これで十分です。

OSX High Sierraがあります

15

トップ投票からのコマンド 答え /私にはうまくいかない。

それは出力を得ました:

chown:/ usr/{my_username} dmin:不正なユーザー名

このコマンドはうまく動作します(/ usr/localのグループは既にadminでした)。

Sudo chown -R $USER /usr/local
14
skywinder

ブランケット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の特定のディレクトリへの書き込みアクセス権を与えます。それはそれをする前にそれが何をしようとしているのかも正確に教えてくれます。

12
darco

私はまだフォルダのアクセス権をいじる必要はありませんでしたので、私は次のようにしました:

brew doctor
brew upgrade
brew cleanup

私はそれから私の他の醸造の方式を首尾よく取付け続けることができた。

11
Anthony To

私の場合は/ usr/local/Frameworksも存在しませんでした。

Sudo mkdir /usr/local/Frameworks
Sudo chown -R $(whoami) /usr/local/Frameworks

そして、すべてが期待通りに動作しました。

8

これで問題は解決しました。

Sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew
Sudo chown -R "$USER":admin /usr/local
7
Fardin

私はこれらのコマンドで私の問題を解決しました:

Sudo mkdir /usr/local/Cellar
Sudo mkdir /usr/local/opt
Sudo chown -R $(whoami) /usr/local/Cellar
Sudo chown -R $(whoami) /usr/local/opt
6
hardc0der

これらの提案はすべてうまくいく可能性があります。醸造医者の最新版では、しかしよりよい提案がなされた。

まず最初に - おそらく/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を実行し、次に発生する可能性のあるすべての警告とエラーを読んでいれば、この情報はすべて利用可能です。

5
Max Dercum

マルチユーザーMacの場合、これは私のために働きました:

Sudo chown -R $(whoami):admin $(brew --prefix)/*
3

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
3
TheProletariat

私にとっては、それは後に働いた

brew doctor

権限変更コマンドで別のエラーが発生しました

chown: /usr/local: Operation not permitted

2
Krishnadas PC

私の場合、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
1
devinbost
cd /usr/local && Sudo chown -R $(whoami) bin etc include lib sbin share var opt Cellar Frameworks
1
Girish Gupta

実はそれは本当に簡単です、このコマンドを実行してください: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
1
Arsalan Mehmood

最新のHomebrewを持っていないのなら、Homebrewをrootで走らせることでこれを "固定"した。これはHomebrew実行可能ファイルの所有権をrootに変更することによってのみ可能になった。ある時点で、彼らはこの機能を削除しました。

そして、彼らはそれがrootとして実行されるべきではないという多くの警告を与えるだろうことを知っています、しかしc'mon、そうでなければ正しく動作しません。

0
sudo

MacOS Mojaveでは、/ usr/localフォルダー(Sudo chown -R "$USER":admin /usr/local)をchownする権限もありませんでした。

Sudo chown -R "$USER":admin /usr/local/*は機能しましたが、すべてのアクセス権を変更しましたwithinローカルフォルダー。

これが同じ問題を抱えている他の人の助けになることを願っています。

0
poepje

私はこのページですべてを試しました、私はこの解決策を使いました:

brew uninstall --force brew-cask; brew untap $tap_name; brew update; brew cleanup; brew cask cleanup;

私の状況はOPと似ていましたが、私の問題は特にSudoをbrew caskで実行し、それから私のパスワードを間違ったものにすることによって引き起こされました。この後、私はインストールを妨げる許可で立ち往生しました。

0
Alpha G33k

フォルダ実行時のBrew権限に関するエラーを解決するには

brew Prune

これで問題は解決します。ディレクトリを変更する必要はありません。

0
Catto