Доморощенный: не удалось символическую ссылку, /usr/local/bin не доступен для записи

При установке tig, HomeBrew отображает следующие проблемы при установке зависимости:

Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/a2x
/usr/local/bin is not writable.

You can try again using:
  brew link asciidoc

13 ответов

Решение

После ответа Алекса я смог решить эту проблему; Кажется, это проблема не только для устанавливаемых пакетов, но и для homebrew папки.

sudo chown -R `whoami`:admin /usr/local/bin

Для некоторых пакетов вам также может понадобиться /usr/local/share или же /usr/local/opt:

sudo chown -R `whoami`:admin /usr/local/share
sudo chown -R `whoami`:admin /usr/local/opt

Вместо запуска какой-либо конкретной команды, я бы порекомендовал запустить brew doctor и принимать все предупреждения серьезно. Могут возникнуть другие проблемы, с которыми вы можете застрять, и которые не могут быть отражены в этом вопросе.

Кроме того, поскольку brew обновляется со временем, определенные команды могут или не могут оставаться в силе. brew doctorТем не менее, убедитесь, что вы получите актуальную информацию по устранению неполадок.

Для тех, кто ищет /usr/local/sbin не записывается ошибка:

ОБНОВЛЕНИЕ: это может быть /usr/local/someOtherFolderName например /usr/local/include, Вам просто нужно создать эту папку с:

  • sudo mkdir someOtherFolderName

Сначала создайте sbin папка, обратите внимание, что это требует sudo привилегии

  • cd /usr/local

  • sudo mkdir sbin

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

  • brew link yourPackageName

Другие ответы верны, но они не отвечают, почему эта проблема может возникать, и как устранить эту коренную причину.

причина

Есть две возможные причины этой проблемы:

  1. Установка homebrew была произведена с пользователем, отличным от того, которого вы используете в данный момент. Доморощенный ожидает, что только пользователь, который установил это первоначально, когда-либо захочет использовать это.
  2. Вы установили некоторое программное обеспечение, которое пишет в /usr/local без использования brew. Это причина brew doctor предлагает, если вы запустите его.

Решение

Многопользовательский доморощенный

Если у вас есть несколько учетных записей пользователей, и вы хотите, чтобы более чем одна из них могла использовать brew, вам нужно выполнить несколько шагов, в противном случае вам придется постоянно менять владельца файловой структуры Homebrew каждый раз, когда вы переключаете пользователей, и это не очень хорошая идея.

Подробные инструкции можно найти в Интернете, но быстрый ответ таков:

  1. Создайте группу с именем brew:

    1. Настройки открытой системы
    2. Нажмите Аккаунты
    3. Нажмите "+" (сначала разблокируйте при необходимости)
    4. Под New account выберите Group
    5. введите варево
    6. Нажмите Создать группу
  2. Выберите группу brew и добавьте в нее учетные записи пользователей, которых вы хотите использовать brew.
  3. измените владельца группы папок /usr/local: sudo chgrp -R brew /usr/local
  4. измените разрешения для добавления записи в /usr/local как группу: sudo chmod -R g+w /usr/local
  5. изменить группу каталогов доморощенного кэша: sudo chgrp -R brew /Library/Caches/Homebrew
  6. изменить права доступа к каталогу кеша sudo chmod -R g+w /Library/Caches/Homebrew

Однопользовательский доморощенный

Если вы не пытаетесь использовать более одного пользователя с Homebrew, то решение, предоставленное другими ответами, основано на предложениях brew doctor вероятно достаточно:

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

sudo chown -R $(whoami) /Library/Caches/Homebrew

верификация

После этих шагов brew doctor должен сообщать об успехе любому пользователю в группе brew, предполагая, что вы вышли из системы и снова вошли, чтобы применить новые членства в группах (если вы прошли многопользовательский маршрут). Если вы только что исправили вещи для однопользовательского доморощенного дела, то выход из системы и повторный вход не должны быть необходимыми, поскольку ни одно из членов вашей группы не изменилось.

Я нашел для моей конкретной установки следующие команды работали

brew doctor

И тогда это показало мне, где были мои ошибки, а затем эта немного отличающаяся команда от комментария выше.

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

Я нашел ту же проблему, мы можем решить в три этапа:

Шаг 1

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

Шаг 2

brew doctor

Шаг 3

brew prune

Если у вас все еще есть проблемы со связыванием, скажем, для mysql, просто пиши

brew link mysql

Это будет работать

Для тех, кто сталкивался с этой проблемой (предоставленной через 4 года после создания этого поста) во время работы с Mac OS High Sierra - описанные здесь шаги решили проблему для меня. По сути просто излагаются удаление и переустановка Brew.

https://medium.com/@mrkdsgn/brew-error-on-macos-high-sierra-check-you-have-permission-to-write-to-usr-local-e8bd1c6a22d4

После выполнения этих шагов, brew link работал как шарм!

Для меня решение было запустить brew update,

Итак, сделайте это в первую очередь.

Это может быть нормальной практикой для людей, знакомых с домашним пивом, но я не из тех людей.

Изменить: я обнаружил, что мне нужно обновить, запустив brew doctor как предполагает ответ @kinnth на этот же вопрос.

Общий процесс устранения неполадок может выглядеть следующим образом: 1. запустить brew update 2. если это не помогает бежать brew doctor и следуйте его указаниям 3. если это не поможет проверить переполнение стека

Это потому, что текущему пользователю не разрешено писать по этому пути. Таким образом, для изменения прав на чтение / запись вы можете использовать 1. терминал или 2. Графическое окно "Информация".

1. Использование терминала

Google, как использовать команды chmod / chown (сменить режим / сменить владельца) из терминала

2. Использование графического "Получить информацию"

Вы можете щелкнуть правой кнопкой мыши по папке / файлу, для которого вы хотите изменить права доступа, а затем открыть Получить информацию, которая покажет вам окно, подобное приведенному ниже, в нижней части которого вы можете легко изменить права доступа: введите описание изображения здесь

Не забудьте изменить разрешение обратно на "только чтение" после вашей временной работы, если это возможно

При выполнении узла brew link Кроме того, у меня появились следующие проблемы:

Ошибка: не удалось включить символическую ссылку / узел / usr / local / include.

Ссылка /usr/local/Cellar/node/9.3.0... Ошибка: в доступе отказано @ dir_s_mkdir - / usr / local / lib

Чтобы решить вышесказанное, просто перейдите в / usr / local / и проверьте наличие папок "include" и "lib", если эти папки недоступны, просто создайте их вручную.

И снова запустите узел установки brew

Для пользователей Антивируса Sophos я нашел следующее:

/questions/44875157/problemyi-s-pravami-dostupa-s-usrlocalbin-i-usrlocalshare/44875173#44875173

https://community.sophos.com/products/free-antivirus-tools-for-desktops/f/17/t/10029

Короче говоря, Sophos меняет разрешения определенных каталогов / usr / local. Sophos исправил это, и исправление включено в версию 9.4.1.

Моя проблема была

Error: Could not symlink share/man/man7/ABORT.7
/usr/local/share/man/man7 is not writable.

chown не помогло, но я последовал за бегом brew doctor советы и это предупреждение помогло мне:

Warning: Broken symlinks were found. Remove them with `brew prune`:
/usr/local/share/man/man3/* 

После brew prune все работало нормально!

Если вы перейдете в папку в Finder, щелкните правой кнопкой мыши и выберите "Получить информацию", вы можете перейти в раздел "Общий доступ и разрешения" для папки и разрешить "Чтение и запись" "всем".

Это то, что я делаю, чтобы символические ссылки проходили с этой ошибкой. Кроме того, Brew, кажется, сбрасывает права на папку, как будто вы ничего не изменили

Для тех, кто не знаком:

sudo chown -R YOUR_COMPUTER_USER_NAME PATH_OF_FILE

Если у вас уже есть каталог в /usr/local для устанавливаемого пакета вы можете попробовать удалить этот каталог.

В моем случае я ранее установил пакет, который пытался установить без использования brew, а затем удалил его. Там был каталог /usr/local/<my_package>/ осталось от этой предыдущей установки. Я удалил эту папку (sudo rm -rf /usr/local/<my_package>/) и после этого шаг варки ссылка прошла успешно.

Другие вопросы по тегам