Как исправить ошибки символической ссылки Brew, если Brew считает, что ссылка уже существует? - PullRequest
0 голосов
/ 02 октября 2018

Пожалуйста, помогите понять, что происходит - или требуется ли какое-либо действие.Я просмотрел множество постов, посвященных brew, node, symlink, неустановленным и переустановленным узлам, npm, yarn, попытался brew cleanup.Когда brew doctor выдал эти предупреждения -

 Warning: Broken symlinks were found. Remove them with `brew prune`:
      /usr/local/lib/node_modules/npm/node_modules/.bin/JSONStream
      /usr/local/lib/node_modules/npm/node_modules/.bin/errno
      /usr/local/lib/node_modules/npm/node_modules/.bin/is-ci
      /usr/local/lib/node_modules/npm/node_modules/.bin/node-gyp
      /usr/local/lib/node_modules/npm/node_modules/.bin/opener
      /usr/local/lib/node_modules/npm/node_modules/.bin/qrcode-terminal
      /usr/local/lib/node_modules/npm/node_modules/.bin/rc
      /usr/local/lib/node_modules/npm/node_modules/.bin/semver
      /usr/local/lib/node_modules/npm/node_modules/.bin/sshpk-conv
      /usr/local/lib/node_modules/npm/node_modules/.bin/sshpk-sign
      /usr/local/lib/node_modules/npm/node_modules/.bin/sshpk-verify
      /usr/local/lib/node_modules/npm/node_modules/.bin/uuid
      /usr/local/lib/node_modules/npm/node_modules/.bin/which

Когда я попытался brew prune, я получил:

newmbp$ brew link node
Warning: Already linked: /usr/local/Cellar/node/10.11.0

Я заметил, что файлы (которые будут связаны или не связаны) находятся вотдельные папки, но изо всех сил пытался понять последствия наличия файлов в /usr/local/Cellar против /usr/local/lib

Ускоряющим фактором, который привел ко всему этому, было время от времени неистово работающий вентилятор на моем ноутбукечасто во время работы MAMP.

1 Ответ

0 голосов
/ 28 ноября 2018

brew prune удалил сломанные символические ссылки, поэтому проблема должна быть устранена.

Тот факт, что brew link node жалуется, не имеет к этому никакого отношения;это совершенно другая команда.Это даже не ошибка, а предупреждение: «Вы попросили меня связать node, но он уже связан», так что все в порядке.


Homebrew устанавливает свои файлы в /usr/local/Cellar.С другой стороны, /usr/local/lib является общим каталогом, обычно используемым для библиотек.Чтобы программное обеспечение могло найти установленные библиотеки Homebrew, оно вставило в них символические ссылки.

Например, предположим, у вас есть формула foo версии 1.2.3, которая устанавливает библиотеку bar.После запуска brew install foo вы должны получить что-то вроде этого:

# the library files
/usr/local/Cellar/foo/1.2.3/lib/bar
# a symlink to the library files from /usr/local/lib
/usr/local/lib/bar -> /usr/local/Cellar/foo/1.2.3/lib/bar

Если вы brew uninstall foo, он удалит как библиотечные файлы, так и символическую ссылку.

Этими символическими ссылками Homebrew можно управлять с помощьюbrew unlink <formula> (удалить их) и brew link <formula> (добавить их).brew install работает brew link для вас, так что вам не нужно.Вот почему вы получаете предупреждение: ваши символические ссылки на Node уже существуют.

brew doctor выполняет различные проверки, включая check_for_broken_symlinks.Этот файл ищет каталоги, такие как /usr/local/var или /usr/local/lib, для поиска битых символических ссылок.Разорванная символическая ссылка - это символическая ссылка, цель которой не существует, часто потому, что она была удалена.

Здесь важно понять, что Homebrew просматривает все символические ссылки, а не толькоэто создано.Сломанные символические ссылки могут вызывать проблемы, поэтому Homebrew предупреждает вас о них, но если все работает нормально, вы можете игнорировать предупреждение.

...