Удалить Protobuf конкурентно - PullRequest
0 голосов
/ 20 ноября 2018

Кажется, что brew не удалось полностью удалить protobuf:

brew uninstall protobuf --force
brew uninstall protobuf@3.1 --force

brew info protobuf
protobuf: stable 3.6.1 (bottled), HEAD
Protocol buffers (Google's data interchange format)
https://github.com/protocolbuffers/protobuf/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/protobuf.rb
==> Dependencies
Build: autoconf ✘, automake ✘, libtool ✔
Recommended: python@2 ✔
Optional: python ✘
==> Options
--with-python
    Build with python support
--without-python@2
    Build without python2 support
--HEAD
    Install HEAD version
==> Caveats
Editor support and examples have been installed to:
  /usr/local/Cellar/protobuf/3.6.1/share/doc/protobuf
==> Analytics
install: 20,550 (30 days), 75,916 (90 days), 307,704 (365 days)
install_on_request: 10,362 (30 days), 36,197 (90 days), 141,839 (365 days)
build_error: 0 (30 days)

brew uninstall protobuf
Error: No such keg: /usr/local/Cellar/protobuf

protoc
-bash: /usr/local/opt/protobuf@3.1/bin/protoc: No such file or directory

Как правильно полностью удалить его?

1 Ответ

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

Это не вина Homebrew: это Bash '.

Когда вы набираете protoc, Bash ищет исполняемый файл в вашем PATH.В вашем случае это /usr/local/opt/protobuf@3.1/bin/protoc.Тем не менее, он делает это только в первый раз: он кэширует свои результаты для сеанса.

Вы удалили protobuf, и поэтому Homebrew удалил файл /usr/local/opt/protobuf@3.1/bin/protoc;но вы не очистили кэш Bash, поэтому он все еще думает, что этот файл существует.

Решение состоит в том, чтобы либо запустить новый сеанс оболочки, либо заставить Bash очистить кэш с помощью hash -r.


Иллюстрация:

$ touch /tmp/hi
$ chmod u+x /tmp/hi
$ export PATH="/tmp:$PATH"

$ which hi
/tmp/hi
$ hi  # <-- executes /tmp/hi and cache hi=/tmp/hi

$ rm /tmp/hi
$ hi  # <-- still executes /tmp/hi because of the cache
bash: /tmp/hi: No such file or directory

$ hash -r # clear the cache
$ hi
hi: command not found
...