Доморощенный: не удалось символическую ссылку, /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
Другие ответы верны, но они не отвечают, почему эта проблема может возникать, и как устранить эту коренную причину.
причина
Есть две возможные причины этой проблемы:
- Установка homebrew была произведена с пользователем, отличным от того, которого вы используете в данный момент. Доморощенный ожидает, что только пользователь, который установил это первоначально, когда-либо захочет использовать это.
- Вы установили некоторое программное обеспечение, которое пишет в /usr/local без использования brew. Это причина
brew doctor
предлагает, если вы запустите его.
Решение
Многопользовательский доморощенный
Если у вас есть несколько учетных записей пользователей, и вы хотите, чтобы более чем одна из них могла использовать brew, вам нужно выполнить несколько шагов, в противном случае вам придется постоянно менять владельца файловой структуры Homebrew каждый раз, когда вы переключаете пользователей, и это не очень хорошая идея.
Подробные инструкции можно найти в Интернете, но быстрый ответ таков:
Создайте группу с именем brew:
- Настройки открытой системы
- Нажмите Аккаунты
- Нажмите "+" (сначала разблокируйте при необходимости)
- Под New account выберите Group
- введите варево
- Нажмите Создать группу
- Выберите группу brew и добавьте в нее учетные записи пользователей, которых вы хотите использовать brew.
- измените владельца группы папок /usr/local:
sudo chgrp -R brew /usr/local
- измените разрешения для добавления записи в /usr/local как группу:
sudo chmod -R g+w /usr/local
- изменить группу каталогов доморощенного кэша:
sudo chgrp -R brew /Library/Caches/Homebrew
- изменить права доступа к каталогу кеша
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.
После выполнения этих шагов, 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>/
) и после этого шаг варки ссылка прошла успешно.