zsh compinit: сообщение об ошибке в незащищенных каталогах на Mac после установки Homebrew - PullRequest
1 голос
/ 06 марта 2019

После установки Homebrew и Homebrew-Cask на моем Mac (в качестве администратора с идентификатором пользователя 'admin', работающим в MacOS 10.12.6) я получаю сообщение об ошибке

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?

каждый раз, когда запускаю zsh,Вложив эту проблему в compaudit, я обнаружил упомянутое несколько небезопасных каталогов, большинство из которых связаны с Homebrew - например, /usr/local/share/zsh/site-functions.Этот каталог и его записи имеют права доступа 0755, которые должны быть в порядке, но - например, запись

/usr/local/share/zsh/site-functions/_brew

, которая является символической ссылкой на файл в Homebrew, который определяет дополнения для zsh, имеет владельца админ .Я предполагаю, что zsh хочет видеть здесь пользователя root .

Если бы это был Linux, я бы просто изменил владельца этих файлов на root , а точнееЯ бы сделал всю установку как root в первую очередь.Однако в MacOS 10.12 они даже «администраторы» не могут получить полный контроль над системой, и хотя я могу войти в систему как администратор, я даже не знаю пароль root.

Есть ли разумное решение этой проблемы?Или мы можем как-то научить zsh compinit никогда не задавать этот раздражающий вопрос и либо принимать небезопасные каталоги, либо пропускать их?Или лучше войти в систему как администратор и просто удалить оскорбительные символические ссылки из site-functions?Я могу жить с системой завершения, которая не знает, как обрабатывать brew команд.

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Я обнаружил, что сообщение об ошибке было сгенерировано вызовом compinit в моем .zshrc, и что его можно отключить, передав опцию -i, т.е.

 compinit -i

Хотя это решает проблему, аргумент, приведенный Ортомалой Локни о том, что Homebrew должен быть установлен с использованием привилегий пользователя, также стоит учитывать - только то, что Homebrew не позволяет мне это делать; но это тема для отдельной темы.

0 голосов
/ 09 марта 2019

Вы не должны устанавливать Homebrew с помощью sudo.Согласно FAQ по Homebrew :

Homebrew предназначен для работы без использования sudo .Вы можете решить использовать его, но мы настоятельно рекомендуем не делать этого .Если вы использовали sudo и столкнулись с ошибкой, это, вероятно, является причиной.Пожалуйста, не отправляйте отчет об ошибке, если вы не можете воспроизвести его после переустановки Homebrew с нуля без использования sudo.

Решение состоит в том, чтобы переустановить Homebrew без sudo, но пользователь должен быть администратором компьютера, так какВы можете увидеть в скрипт установки :

elsif !`dsmemberutil checkmembership -U "#{ENV["USER"]}" -G admin`.include?("user is a member")
  abort "This script requires the user #{ENV["USER"]} to be an Administrator."
...