Лікар Brew каже: "Попередження: / usr / local / include не піддається написанню".


352

Лікар-пивовар каже:

Попередження: / usr / local / include не піддається запису. Це може статися, якщо ви "sudo make install" програмне забезпечення, яким не керує Homebrew.

Якщо brew намагається написати файл заголовка в цей каталог, встановлення не вдасться під час кроку посилання.

Ви, ймовірно, повинні chown/ usr / local / включати

Я пробував різні команди, щоб вирішити це, але я все ще застряг тут.

Я біжу домашньою мовою 10.8.2


1
Я отримав подібну помилку для "/ usr / local / lib" в Homebrew 0.9.4, що також було вирішено за допомогою рішення нижче.
JeremiahLee

Відповіді:


680

Взяти на себе право власності на нього та все, що в ньому.

Mac OS High Sierra або новіше: (введіть Кірк у коментарях нижче)

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

Попередні версії macos:

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

Потім зробіть інше

$ brew doctor

12
операція не дозволена?
topwik

68
Будь-яка перевага замість $ sudo chown -R `whoami` /usr/local/?
Лабу

2
@WillemLabu ще один вилковий процес? whoami - це ефективний ідентифікатор користувача, і, як каже сторінка man, є застарілим :) bash - це оболонка за замовчуванням на OSX, і десь USER встановлюється.
jrwren

7
Цікаво, чи змінити власність на / usr / local на користувача чистим рішенням. Хіба не було б краще додати $ USER до групи «колесо»? Або змінити групу / usr / local на групу адміністратора?
Майкл Лен

13
За даними Homebrew в Mac OS High Sierra chown /usr/localбільше не працює. Замість використанняsudo chown -R $(whoami) $(brew --prefix)/*
Кірк Хаммет

115

Те, що працювало для мене, теж було

sudo chmod g+w /usr/local
sudo chgrp staff /usr/local

20
Це єдиний розумний фікс, на самому ділі не зійшли взяти на себе відповідальність / USR / місцеві в розрахованому на багато користувачів зіву
Олександр Torstling

3
Потрібно отримати цього хлопця кілька голосів! ;) Це спрацювало чудово.
jrista

1
Це краще рішення ІМХО
jacurtis

5
Ну, не у Високій Сьєррі. "Неможливо змінити режим файлу на / usr / local: Операція не дозволена"
user980018

1
@ user980018 Я щойно наткнувся на те саме - ось вирішення, яке я використав
Кейсі Девідсон


37

Єдиним, хто працював на мене на Ель-Капітан:

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

5
chown: / usr / local: Операція не дозволена
AlxVallejo

1
@AlxVallejo робив це в / usr / local / bin працював на мене
marcotama

23

Якщо ви перебуваєте на Високій Сьєррі і стикаєтеся з цією проблемою, виконайте наведені нижче дії ( Примітка: / usr / local не може бути порушено у Високій Сьєррі ):

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

Потім спробуйте зв’язати заваром. У мене виникли подібні проблеми, і жодне з вищезгаданих рішень не працювало на Високій Сьєррі. Сподіваюся, що це комусь допоможе.


20

Для Високої Сьєрри:

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

Потім спробуйте свої команди для приготування.

Випуск № 3285


2
Не впевнений, чому це було знято, якщо ви раніше встановили заварку та модернізували до High Sierra, перевстановлення Homebrew виправляє проблему. Це найпростіший підхід
sam9046

Як не дивно, адже сценарій робить саме те, що пропонують інші відповіді.
Гонки легкості на орбіті

Це працювало для мене, але спочатку я видалив попереднє, використовуючи: ruby ​​-e "$ (curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall )"
abbas

12

Ви можете псевдонім команду виправити цю проблему у вашому .bash_profile та запустити її кожного разу, коли ви зіткнетеся з нею:

В кінці файлу ~/.bash_profileдодайте:

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

А тепер всередині свого терміналу ви можете запускати:

$ fix_brew

12

Це працювало для мене на macOS 10.12

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

У мене виникла проблема з оновленням домашньої мови з такою помилкою:

/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

8

Для деяких це буде:

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

де "lib" використовується на відміну від "bin" або "include" або "що-небудь ще"

У попередженні Homebrew "слід" пояснити, що конкретно не можна записати, а потім дати вам синтаксис команд для слідування, однак вам потрібно буде використовувати ":" на відміну від того, що застереження зазначає, що насправді не правильний синтаксис ??


Синтаксис у Попередженні трохи заплутаний. Я вважаю, що я надіслав електронною поштою головного учасника програми Homebrew, щоб запитати, чи не зміниться щось про нього, чекаючи відповіді, можливо, мовлення у попередженні зміниться у майбутніх оновленнях пивоваріння ..
Джонатан Джеймс,

Дякую! Це спрацювало після неабиякої кількості пошуків.
шлях


5

Така ж помилка в MacOS 10.13

/usr/local/includeі /usr/local/ /usr/libне були створені. Я вручну створив і brew linkнарешті працював.


3

Вам потрібно створити / usr / local / include і / usr / local / lib, якщо вони не існують:

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

3

Що працювало для мене, у той час як я маю більше на своєму комп’ютері 1 користувача.

Використання терміналу:

  • Біг brew doctor
    • Побачивши кілька /usr/local/...помилок, які не можна записати
  • Відключення захисту системи Mac від цілісності: https://apple.stackexchange.com/a/208481/55628
  • Виконайте наступне
  • sudo chown -R $(whoami) /usr/local/*
  • brew doctor && brew upgrade && brew doctor

Запуск Macbook Pro OSX High Sierra (версія 10.13.3.)

EDIT 1:

FYI - Будьте пораджені, це спричиняє проблеми із запуском MySQL на вашому MAC.

Щоб мати змогу запустити свій локальний сервер, мені довелося запустити:

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

Після цього ви можете запустити локальний сервер MySQL.


1
Відмінно! Дякую!
шмули

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

Це створить усі необхідні каталоги та надасть правильне право власності.

Після запуску цих команд перевірте: brew doctor

Це працює для Мохаве.


2

Вам потрібно отримати контроль над цілим, /usr/localщоб зробити це вам потрібно зробити рекурсивно chownпід/usr/local

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


2

Я просто хочу повторити скромний коментар sam9046 як альтернативне та потенційно набагато простіше рішення, яке спрацювало в моєму випадку: видаліть та встановіть домашню мову знову з нуля. Не потрібні команди sudo.

Ви також можете переглядати / змінювати сценарій видалення із цього посилання, якщо вам потрібно переконатися, що він не вплине на попередньо встановлені пакети. У моєму випадку це була лише моя домашня машина, тому я тільки почав заново.



2

Спочатку потрібно створити каталог:

sudo mkdir /usr/local/include

Друге:

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

1

У мене це трапилося в моїй організації після того, як всі наші користувачі були прив’язані до активного каталогу (фактично змінюючи UID з 50x на ######).

Тепер це просто випадок зміни власності на всі файли, де належало x на y.

Де 501 - мій старий числовий ідентифікатор користувача, який досі пов'язаний з усіма домашніми файлами.

Старий ідентифікатор користувача можна знайти за допомогою ll /usr/local/Cellar

Тепер оновіть право власності sudo find /usr/local -user 501 -exec chown -h $USER {} \;

Таким чином ми уникаємо зміни власності на файли, які не контролюються homebrew або належать іншому користувачеві системи.


1

Перейдіть у каталог / bin та введіть:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.