Homebrew izinleri nasıl düzeltilir?


601

Homebrew'u şimdi 3 kez kaldırdım ve kurdum çünkü çoğu kurulumun sonunda bana izin vermediği için hiçbir şey yüklememe izin vermiyor gibi görünüyor.

Örnek olarak şu anda karşılaştığım libjpeg indirme senaryosunu yayınlayacağım.

Libjpeg'i kurmaya çalışıyorum:

$ 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' sonuçları

Error: Permission denied - /usr/local/opt/jpeg

İşte demlemek doktorumun okuduğu

$ 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

Bu izin sorunu, herhangi bir şeyde demlemek kullanımını imkansız hale getiriyor ve herhangi bir öneriyi gerçekten takdir ediyorum.

Yanıtlar:


955

chownKlasörü kullanarak sorunu çözebildim :

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

Ayrıca (büyük olasılıkla) aynı şeyi yapmanız gerekenler /Library/Caches/Homebrew:

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

Görünüşe göre daha sudoönce klasör iznimi değiştiren bir şekilde kullandım /usr/local, bundan sonra demlemeli tüm kurulumların başarılı olduğu kanıtlandı.

Bu cevap gitHub'ın homebrew sayı izleyicisinin izniyle


14
Bunun için teşekkürler. sudo chown -R $USER:admin /Library/Caches/Homebrewİzin sorunlarımdan kurtulmak için de koşmam gerekiyordu .
alexpls

64
/ usr / local'ın sahipliğini belirli bir kullanıcıya değiştirmek bir çözüm değildir. Tek bir kullanıcı sisteminiz varsa korkunç bir hack ve geçici bir çözümdür . Ama sonra sadece chown da olabilir -R / $ USER: $ USER
fijiaaron

17
@fijiaaron Peki daha iyi bir çözüm ne olurdu?
juil

47
chowning / usr / local: tamamen deli bir çözüm. Bunun aslında parti çizgisi olmadığını umuyorum.
John Clements

15
Bu çözümün çok kullanıcılı sistemleri (@fijiaaron, @JohnClements, @hmijail, @Alex) bertaraf edeceğinden şikayet edenler için - tam olarak grup izinleri tersine çevrildi. MacOS'ta, admingrup her yönetici kullanıcısıdır ( sudodiğer şeylerin yanı sıra her macOS kullanıcı hesabı kullanıcısıdır ), bu nedenle (@AndreaDeGaetano tarafından önerildiği gibi) chown -R …:adminile birlikte çalışarak chmod -R g+w /usr/localburada yanlış bir şey yapmazsınız ve sıfır sorun yaşarsınız. /usr/local/ kullanan diğer kullanıcılar brew.
Slipp D.Thompson

479

MacOS High Sierra kullanıcılar için Yeni komut o kadar mümkün olmadığından chownüzerinde/usr/local :

bash/zsh:

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

fish:

sudo chown -R (whoami) (brew --prefix)/*

Referans: High Sierra'da chown / usr / local yapılamıyor


Evet @Jeffpowrs macOS 10.13.2'de aynı sorunu yaşıyorum
andrewwong97

4
Balık kabuğunu kullanıyorum ve aşağıdakileri kullanmak zorunda kaldım:sudo chown -R (whoami) (brew --prefix)/*
Tarellel

2
Buna bağlı. Yapmaya çalıştığım şey için sudo mkdir /usr/local/Frameworks, bu cevapta görüldüğü gibi chown komutunu takip etmek zorunda kaldım .
Dan Burton

1
Teşekkürler. Bu günü kurtardı.
Aashutosh Rathi

2
TANRI SİZİ KENDİNİZ, BRO!
Mendigo dos Bytes

285

Benim yaptığım gibi buraya kimin geldiği için ilk seçenek olarak, bunun size ne önerdiğini izleyin:

brew doctor

Bu en güvenli yoldur ve diğer şeylerin yanı sıra şunları önerdi:

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

bu da izinler sorununu çözdü.

OP sadece bunu yaptı ama görünüşe göre yukarıdaki öneri alamadım; olabilir ve her zaman oradan başlamak daha iyidir ve ancak o zaman yardımcı olmadıysa önemsiz olmayan çözümler arayın.


4
Bu işlemin, 05/2017 tarihinden itibaren izinlerle karşılaşabileceğiniz herhangi bir sorunu giderdiğini doğruladı
Anton Babushkin

3
Ayrıca, bunun herhangi bir izin sorununu çözdüğünü ve daha sonra düğüm
sürümümü

2
demlemek doktor tüm sorunları bulamazsınız. Sahip olduğum sorun / usr / local / Frameworks mevcut değildi ve bunu yaratıp üzerinde sahiplik ayarı düzeltildi. demlemek kendisi bunu bir sorun olarak fark etmedi.
Joe W

2
Ben olsun chown: /usr/local: Operation not permitted5 Temmuz 2019 tarihi itibariyle çalışmıyor
tavalendo

1
Doktor ile ipucu belki de buradaki en iyi ipuçlarından biridir, çünkü her zaman farklı sorunları düzeltir (veya düzeltmeye yardımcı olur)!
ecth

82

OSX High Sierra kullanıyorsanız, /usr/localartık chown'd. Kullanabilirsiniz:

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


Teşekkürler. Beni kurtardı!
Matthias

3
$ (Demlemek --prefix) bana / usr / local verdiğini fark ettim ki High Sierra izinleri değiştiremediğimde ısrar etti ... ama demlemek benim örneğimde "/ usr / local / Frameworks" için izin istediğinden , "$ (Brew --prefix) / Frameworks" kullanabildim ve "brew link python @ 2" bundan sonra benim için iyi çalıştı.
alpheus

Birden fazla kullanıcısı olan tüm Mac kullanıcıları bunu kullanın!
Erik Nguyen

Teşekkürler OSX High Sierra'dayım ve görünüşe göre MAC OSX'in önceki sürümlerinde olduğu gibi / user / local'ı artık seçemiyoruz. Bu benim için çalıştı!
Jose Mhlanga

29

/usr/local/FrameworksKlasörüm yoktu , bu yüzden benim için düzeltti

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

İlk satır, homebrew (demlemek) için yeni bir Frameworks klasörü oluşturur. İkinci satır, bu klasöre yeterli olan geçerli kullanıcı izinlerinizi verir.

Kullanılan komutlar aşağıdaki gibidir:

mkdir - dizinler yap [ -p varsa hata yok, gerektiğinde üst dizinler yap]

chown - dosya sahibini ve grubunu değiştir [ -R dosyaları ve dizinleri özyinelemeli olarak çalıştırır]

whoami - etkili kullanıcı kimliği yazdır

OSX Yüksek Sierra'm var


27

Ben bu sorunu vardı .. Çalışan bir çözüm /usr/local yerine şu anki kullanıcıya sahipliğini değiştirmek için root:

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

Ama gerçekten bu uygun bir yol değil. Makineniz bir sunucu veya çok kullanıcılıysa.

Benim önerim yukarıdaki gibi sahipliğini değiştirmek ve Brew ile uygulamak istediğiniz her şeyi yapmak .. (güncelleme, yükleme ... vb) sonra sahipliğini geri kök olarak sıfırlamaktır:

  sudo chown -R root:admin /usr/local

Bu sorunu çözer ve sahipliği uygun kümede tutar.


4
hmm .. ve biz chown için "operasyon izin verilmiyor" olsun?
Ewoks

@ Mac OS'larda bu mu?
Maher Abuthraa

1
Evet, Sierra High: S
Ewoks


15

En çok oy alan cevaptan komut benim için çalışmıyor.

Çıktı var:

chown: / usr / {my_username} dmin: geçersiz kullanıcı adı

Bu komut iyi çalışıyor (/ usr / local için grup adminzaten vardı):

sudo chown -R $USER /usr/local

5
sudo chown -R "$USER":admin /usr/local
Alıntı

2
@skywinder Cevabınız benim için çalıştı. $ USER üzerinde tırnak kullanmak zorunda değildi.
Anna S

sudo chown -R "$ USER": $ USER adlı kullanıcıyı adınızla değiştirdiğiniz admin / usr / local.
lft93ryt

sonuçlandıError: Running Homebrew as root is extremely dangerous and no longer supported. As Homebrew does not drop privileges on installation you would be giving all build scripts full access to your system.
thesummersign

3
chown: /usr/local: Operation not permitted
Krishnadas PC

13

Henüz klasör izinleri ile uğraşmak istemiyordu, bu yüzden aşağıdakileri yaptım:

brew doctor
brew upgrade
brew cleanup

Daha sonra diğer demleme formülümü başarıyla yüklemeye devam edebildim.


1
Bu benim sorunlarım için iyi çalıştı. Zaten kendimi SUDOed izinleri vardı. \
Komsomol

12

Battaniyeden biraz daha hedefli bir yaklaşım chown -Ristiyorsanız, bufix-homebrew komut dosyasını yararlı bulabilirsiniz :

#!/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.

chmodKullanıcıya a yapmak yerine , admingruba (muhtemelen ait olduğunuz) /usr/localhomebrew'un kullandığı belirli dizinlere yazma erişimi sağlar . Ayrıca yapmadan önce tam olarak ne yapmak istediğini de söyler.


1
Bazı yollar biraz değişmiş gibi görünüyor, bu yüzden chgrp ve chmod birkaç dizin daha zorunda olabilirsiniz ama yine de bunu chown her şey kullanıcı yaklaşımınıza tercih!
ashirley

8

Benim durumumda / usr / local / Frameworks bile yoktu, bu yüzden yaptım:

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

Ve sonra her şey beklendiği gibi çalıştı.


1
Bu sorunumu düzeltti ve demlemek doktor tarafından bir sorun olarak algılanmadı.
Joe W

7

Bu önümdeki sorunu çözdü.

sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew
sudo chown -R "$USER":admin /usr/local

2
Bu sorunu çözer, ancak başarılı bir şekilde bağlandıktan sonra bu adımı geri alırım. Sadece güvenlik nedeniyle.
ora-600

7

Bu komutlarla ilgili sorunumu çözdüm:

sudo mkdir /usr/local/Cellar
sudo mkdir /usr/local/opt
sudo chown -R $(whoami) /usr/local/Cellar
sudo chown -R $(whoami) /usr/local/opt

1
Teşekkürler! Bu yardımcı oldu tek şey Mac OS 10.13.4Benim durumumda oluşturmak sudo mkdir /usr/local/Frameworks ve sudo chown -R $(whoami) /usr/local/Frameworkspython bağlamak mümkün!
A1m

6

Çok kullanıcılı bir Mac için bu benim için çalıştı:

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

5

Bu önerilerin tümü işe yarayabilir. Demlemek doktorun son sürümünde, daha iyi öneriler yapıldı.

İlk olarak - muhtemelen /usr/localkomut satırında çalıştırarak yapmış olduğunuz karışıklığı düzeltin :

sudo chown -R root:wheel /usr/local

Ardından, özellikle bu kullanıcı için olması gereken yolların sahipliğini alın:

sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin /usr/local/var /usr/local/Frameworks /usr/local/lib/pkgconfig /usr/local/share/locale

Çalıştırır sudo brew updateve daha sonra karşılaşacağınız tüm uyarıları ve hataları okursanız, tüm bu bilgiler kullanılabilir ...


/ Usr / local içindeki her şeyin sahipliğini köküne ayarlamak: tekerlek tehlikeli ve gereksizdir. İlgili yol / usr / local / Cellar
ben26941 28:16

1
zaten devam ettiyseniz ve geliştirme kullanıcılarınız için bunların sahipliğini aldığınız söylenmedikçe, bu izinlere dokunmanız gerekmez; ya da demlemenin zaten sudo'yu yönettiği durumda, sudo ile bir kurulum yaptı. demlemek kendini bu durumda bu düzeltme önerir - sudo karışıklık geride bırakarak çok daha az tehlikeli olduğunu düşünüyorum.
Max Dercum

1
Demleme tavsiyesine bir bağlantı verebilir misiniz?
ben26941

1
En iyi cevap. Başka bir Mac'ten bir Göç yaptıktan sonra işe yaradı.
BuffMcBigHuge

4

Benim için işe yaradı

brew doctor

Değişiklik izni komutları başka bir hatayla sonuçlandı

chown: /usr/local: Operation not permitted


3

Github'da / usr / local ve brew dizinlerine 'admin' grubunun üyesi olan herkes tarafından erişilebilen izinleri düzelten bir katil komut dosyası var.

https://gist.github.com/jaibeee/9a4ea6aa9d428bc77925

Bu, seçilen yanıttan daha iyi bir çözümdür, çünkü / usr / local / ___ dizinlerini $ USER olarak seçerseniz, o makinede homebrew'un diğer yönetici kullanıcılarını kırarsınız.

İşte bunu yayınladığım sırada betiğin cesaretleri:

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

2

MacOS Mojave'de, chown/ usr / local klasörüne de ( sudo chown -R "$USER":admin /usr/local) izin vermedim .

sudo chown -R "$USER":admin /usr/local/*benim için çalıştı, ancak içindeki her şeyin izinlerini değiştirdi yerel klasörde.

Umarım bu aynı sorunla başkalarına yardımcı olacaktır.


1

Aslında çok basit, şu komutu yürütün: brew doctor

Ve örneğin, benim durumumda, izin sorunlarını düzeltmek için ne yapacağınızı söyleyecektir:

Sorun buydu:

Warning: The following directories are not writable by your user:
/usr/local/share/man/man5
/usr/local/share/man/man7

Ve çözüm buydu:

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
cd /usr/local && sudo chown -R $(whoami) bin etc include lib sbin share var opt Cellar Frameworks

1

Benim durumumda, SaltStack'ı kaldırıp yeniden yüklerken sorun yaşıyorum.

Koşu sonrası:

ls -lah /usr/local/Cellar/salt/

Grup sahibinin "personel" olduğunu fark ettim. (BTW, macOS Mojave sürüm 10.14.3 kullanıyorum.) Personel grubu işyeri yapılandırmamla ilgili olabilir, ama gerçekten bilmiyorum. Ne olursa olsun, kendimi bir şeyleri daha fazla kırmamak için grubu korudum.

Sonra koştum:

sudo chown -R "$USER":staff /usr/local/Cellar/salt/

Bundan sonra, başarıyla bu komutla (kök olarak değil) kaldı:

brew uninstall --force salt

0

En son Homebrew'a sahip değilseniz: Bunu geçmişte Homebrew'u kök olarak çalıştırmaya zorlayarak "sabitledim", ancak Homebrew yürütülebilir dosyalarının mülkiyeti kök haline getirilerek yapılabilir. Bir noktada, bu özelliği kaldırdılar.

Kök olarak çalıştırılmaması gerektiğini söyleyen çok sayıda uyarı vereceklerini biliyorum, ama hadi, aksi halde düzgün çalışmaz.


0

Bu sayfadaki her şeyi denedim, bu çözümü kullandım:

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

Benim durumum OP ile benzerdi, ancak benim sorun özellikle demlemek fıçı ile sudo çalıştırmak ve daha sonra şifremi yanlış elde neden oldu. Bundan sonra, kurulumu engelleyen izinlerle takıldım.


0

Klasör çalıştırılırken Demleme izinleriyle ilgili hataları gidermek için

brew prune

Bu, sorunları çözecektir ve herhangi bir dizin seçmek zorunda değiliz.


1
bu artık işe yaramıyor, şimdi yapmanız gerekiyorbrew cleanup --prune-prefix
Sliq

0

Catalina'dayım ve şu hatayı aldım:

touch: /usr/local/Homebrew/.git/FETCH_HEAD: Permission denied
touch: /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/.git/FETCH_HEAD: Permission denied
fatal: Unable to create '/usr/local/Homebrew/.git/index.lock': Permission denied
fatal: Unable to create '/usr/local/Homebrew/.git/index.lock': Permission denied

Sadece Homebrewdizini seçmem gerekiyordu

sudo chown -R "$USER":admin /usr/local/Homebrew

0

Bu iki komutu kullandım ve sorunumu sakladım

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

sudo chown -R $(whoami) /usr/local/etc/bash_completion.d /usr/local/lib/python3.7/site-packages /usr/local/share/aclocal /usr/local/share/locale /usr/local/share/man/man7 /usr/local/share/man/man8 /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew/locks

-5

bu komutu da çalıştırmayı dene

sudo chmod + t / tmp

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.