Почему homebrew просит меня добавить опцию --force при связывании формулы только для кег? - PullRequest
0 голосов
/ 25 июня 2018

После запуска

brew install yarn

В моей системе установлена ​​нижняя версия node:

$ node -v
v10.5.0

потому что node является зависимостью yarn (поправьте меня, если я ошибаюсь, пожалуйста, скажите мне, если я тоже прав)

Но это вызывает проблему с yarn (проблема, с которой я сталкиваюсь - this ), поэтому я хочу использовать старую версию node, чтобы мое приложение работало сейчас. Согласно это , я сделал это:

$ brew install node@8
$ brew unlink node
$ brew link node@8

Но $ brew link node@8 дает мне следующее:

Warning: node@8 is keg-only and must be linked with --force
Note that doing so can interfere with building software.

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/node@8/bin:$PATH"' >> ~/.zshrc

Я использовал rvm, ruby ​​можно переключать, просто используя rvm use ruby-version-here, поэтому я думаю, что brew link formula будет работать, но зачем это нужно?

Я понимаю, что brew только для бочонка означает, что он находится только в подвале и не связан с / usr / local / bin / или / usr / local / lib /, но не является ли brew ссылкой, помогающей нам связать его, зачем это нужно опция --force, что она делает, она чувствует себя опасно.

brew help link говорит:

Если передано --force (или -f), Homebrew разрешит формулу только для кег быть связанным.

Почему мы должны быть осторожны, чтобы связать их? Мы что-нибудь сломаем?

Я хочу использовать node@8 вместо node (the latest version), как правильно это сделать? Должен ли я просто работать с параметром force, как предложено brew?

Обновление 1: Когда я продолжаю искать и выяснять причину, я вижу это , но я не понимаю этого полностью. Кажется, что нужно удалить какой-то файл при ссылке на новую версию формулы. Но я думал, что связывание будет просто заменить ссылку где-то, может быть, просто заменить один файл? Зачем создавать конкретную опцию --force для ссылки на новую формулу только для кег? Я подозреваю, что есть что-то особенное в природе формул только кег. Кто-нибудь понимает почему?

Примечание: Это и Это объясняет, что означает только кеги

1 Ответ

0 голосов
/ 25 июня 2018

Во-первых, да node является зависимостью yarn, вы можете проверить это с помощью:

brew deps yarn

Тогда опция --force может быть не так хорошо названа, но она делает то, что сказанона странице man:

Если передано --force (или -f), Homebrew разрешит связывать формулы только для кег.

Это простокак работает Homebrew, не нужно бояться.

== РЕДАКТИРОВАТЬ

В предыдущей версии Homebrew документация была намного понятнее:

Если передано --force, Homebrew удалит файлы, которые уже существуют в префиксе при связывании.

Если передано --dry-run или -n, Homebrew перечислит все файлы, которые будут удалены brew link --force, но на самом деле не будет ссылаться или удалять какие-либо файлы.

== РЕДАКТИРОВАТЬ (2)

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

...