Le docteur Brew dit: "Attention: / usr / local / include n'est pas accessible en écriture."

352

Le docteur Brew dit:

Avertissement: / usr / local / include n'est pas accessible en écriture. Cela peut se produire si vous "sudo make install" un logiciel qui n'est pas géré par Homebrew.

Si une infusion tente d'écrire un fichier d'en-tête dans ce répertoire, l'installation échouera pendant l'étape de liaison.

Vous devriez probablement chown/ usr / local / include

J'ai essayé différentes commandes pour résoudre ce problème, mais je suis toujours bloqué ici.

J'utilise homebrew sur 10.8.2

gaggina
la source
1
J'ai obtenu une erreur similaire pour "/ usr / local / lib" dans Homebrew 0.9.4 qui a également été résolue avec la solution ci-dessous.
JeremiahLee

Réponses:

680

Prenez-en possession et tout ce qu'il contient.

Mac OS High Sierra ou plus récent: (ty à Kirk dans les commentaires ci-dessous)

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

Versions précédentes de macos:

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

Alors faites un autre

$ brew doctor
jrwren
la source
13
Opération non autorisée?
topwik
68
Un avantage au lieu de $ sudo chown -R `whoami` /usr/local/?
Labu
2
@WillemLabu une fourche de processus en moins? whoami est un identifiant utilisateur efficace et comme l'indique la page de manuel est obsolète :) bash est le shell par défaut sur OSX et quelque part USER est en cours de configuration.
jrwren
7
Je me demande si changer la propriété de / usr / local pour un utilisateur est une solution propre. Ne serait-il pas préférable d'ajouter $ USER au groupe «roue»? Ou changer le groupe de / usr / local en groupe admin?
Michael Lehn
13
Selon Homebrew dans Mac OS, le chown High Sierra /usr/localne fonctionne plus. Utilisez plutôtsudo chown -R $(whoami) $(brew --prefix)/*
Kirk Hammett
115

Ce qui a fonctionné pour moi aussi

sudo chmod g+w /usr/local
sudo chgrp staff /usr/local
Durul Dalkanat
la source
20
C'est le seul correctif sensé, pas vraiment sensé pour s'approprier / usr / local dans un système d'
exploitation
3
Besoin de faire voter ce gars! ;) Cela a très bien fonctionné.
jrista
1
Ceci est la meilleure solution à
mon humble avis
5
Pas à High Sierra. "Impossible de changer le mode de fichier sur / usr / local: opération non autorisée"
user980018
1
@ user980018 Je suis juste tombé sur la même chose - voici la solution de contournement que j'ai utilisée
Casey Davidson
38

Ce qui a fonctionné pour moi était

$ sudo chown -R yourname:admin /usr/local/bin
Ana Isabel
la source
37

Le seul qui a travaillé pour moi sur El Capitan était:

sudo chown -R $(whoami) /usr/local
Rauque
la source
5
chown: / usr / local: opération non autorisée
AlxVallejo
1
@AlxVallejo le faisant sur / usr / local / bin a fonctionné pour moi
marcotama
23

Si vous êtes sur High Sierra et rencontrez ce problème, suivez les étapes ci-dessous ( Remarque: / usr / local ne peut pas être affiché dans High Sierra ):

sudo mkdir /usr/local/include
sudo chown -R $(whoami) $(brew --prefix)/*

Essayez ensuite de créer un lien avec le lien de brassage. Je rencontrais un problème similaire et aucune des solutions ci-dessus ne fonctionnait pour High Sierra. J'espère que cela aide quelqu'un.

Pro
la source
21

Pour High Sierra:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Ensuite, essayez vos commandes d'infusion.

Numéro 3285

Mahi
la source
2
Vous ne savez pas pourquoi cela a été rétrogradé, si vous aviez précédemment installé et mis à niveau brew vers High Sierra, la réinstallation de Homebrew résout le problème. C'est l'approche la plus simple
sam9046
Ironiquement, c'est parce que le script fait exactement ce que les autres réponses suggèrent.
Courses de légèreté en orbite
Cela a fonctionné pour moi, mais j'ai d'abord désinstallé la précédente en utilisant: ruby ​​-e "$ (curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall )"
abbas
12

Vous pouvez alias la commande pour résoudre ce problème dans votre .bash_profile et l'exécuter à chaque fois que vous le rencontrez:

À la fin du fichier ~/.bash_profile, ajoutez:

alias fix_brew='sudo chown -R $USER /usr/local/'

Et maintenant, dans votre terminal, vous pouvez exécuter:

$ fix_brew
karlingen
la source
12

Cela a fonctionné pour moi sur macOS 10.12

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

J'ai eu le problème de mise à jour de homebrew avec l'erreur suivante:

/usr/local is not writable. You should change the ownership
and permissions of /usr/local back to your user account:
  sudo chown -R $(whoami) /usr/local
Max
la source
8

Pour certains, ce sera:

sudo chown -R JonJames:admin /usr/local/lib

où "lib" est utilisé par opposition à "bin" ou "include" ou "quoi que ce soit d'autre"

L' avertissement Homebrew "devrait" expliquer ce qui n'est pas spécifiquement accessible en écriture et vous donner ensuite une syntaxe de commande à suivre, mais vous devrez utiliser le ":" par opposition à ce que l'avertissement mentionne qui n'est en fait pas une syntaxe correcte ??

Jonathan James
la source
La syntaxe dans l'Avertissement est un peu déroutant je crois, j'ai envoyé un e-mail au principal contributeur de Homebrew pour lui demander s'il allait changer quoi que ce soit à ce sujet, en attendant une réponse, peut-être que le verbiage de l'Avertissement changera dans les futures mises à jour de brew ..
Jonathan James
Merci! Cela a fonctionné après une bonne quantité de recherches.
thiswayup
7

Travaille pour moi

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

$ cd /usr/local/Library && git stash && git clean -d -f
Alexander Salas Bastidas
la source
5

Même erreur sur MacOS 10.13

/usr/local/includeet /usr/local/ /usr/libn'ont pas été créés. J'ai créé manuellement et brew linkfinalement travaillé.

Miguel
la source
3

Vous devez créer / usr / local / include et / usr / local / lib s'ils n'existent pas:

$ sudo mkdir -p /usr/local/include
$ sudo chown -R $USER:admin /usr/local/include
Waldencoder
la source
3

Ce qui a fonctionné pour moi, tout en ayant plus d'un utilisateur sur mon ordinateur.

Utilisation du terminal:

  • Fonctionnement brew doctor
    • Voir plusieurs /usr/local/...n'est pas une erreur d'écriture
  • Désactivation de la protection de l'intégrité du système de Mac: https://apple.stackexchange.com/a/208481/55628
  • Exécutez ce qui suit
  • sudo chown -R $(whoami) /usr/local/*
  • brew doctor && brew upgrade && brew doctor

Exécution de Macbook Pro OSX High Sierra (version 10.13.3.)

EDIT 1:

FYI - Veuillez noter que cela provoque un problème avec l'exécution de MySQL sur votre MAC.

Pour pouvoir démarrer mon serveur local, j'ai dû exécuter:

sudo chown -R mysql:mysql /usr/local/mysql/data

Après avoir exécuté ceci, vous pouvez démarrer votre serveur MySQL local.

JayRizzo
la source
1
Excellent! Je vous remercie!
shmuli
3
sudo mkdir -p /usr/local/include /usr/local/lib /usr/local/sbin

sudo chown -R $(whoami) /usr/local/include /usr/local/lib /usr/local/sbin

Cela créera tous les répertoires requis et lui donnera la propriété correcte.

Après avoir exécuté ces commandes, vérifiez avec: brew doctor

Cela fonctionne pour Mojave.

Sven
la source
2

Vous devez prendre le contrôle de l'ensemble /usr/localpour le faire, vous devez faire un récursif chownsous/usr/local

sudo chown -R YOUR_USERNAME:admin /usr/local/

ajouter des points-virgules
la source
2

Je veux juste faire écho au modeste commentaire de sam9046 comme solution alternative et potentiellement beaucoup plus facile qui a fonctionné dans mon cas: désinstaller et installer homebrew à partir de zéro. Aucune commande sudo requise.

Vous pouvez également parcourir / modifier le script de désinstallation à partir de ce lien ci-dessus si vous devez vous assurer qu'il n'affectera pas vos packages précédemment installés. Dans mon cas, c'était juste ma machine à la maison, donc je viens de recommencer.

adamkski
la source
2

Vous devez d'abord créer le répertoire:

sudo mkdir /usr/local/include

Seconde:

sudo chown -R $(whoami) $(brew --prefix)/*
gugapc
la source
1

J'ai eu cela se produire dans mon organisation après que tous nos utilisateurs étaient liés à Active Directory (en changeant effectivement l'UID de 50x à ######).

Maintenant, il s'agit simplement de changer la propriété de tous les fichiers appartenant à x en y.

Où 501 est mon ancien identifiant numérique qui est toujours associé à tous les fichiers homebrew.

L'ancien identifiant utilisateur peut être trouvé à l'aide de ll /usr/local/Cellar

Maintenant, mettez à jour la propriété sudo find /usr/local -user 501 -exec chown -h $USER {} \;

De cette façon, nous évitons de changer la propriété des fichiers qui ne sont pas contrôlés par homebrew ou appartiennent à un autre utilisateur du système.

Tarun
la source
1

Allez dans le répertoire / bin et tapez:

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

Yusuf
la source