Лікар 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.