更新到 macOS Monterey 12.2 后 Heroku CLI 不工作
Heroku CLI not working after update to macOS Monterey 12.2
几天前,我将我的 macOS 从 Catalina 更新到 Monterey 12.2,但我无法再从命令行(使用 zsh)访问 Heroku。通常,从终端 运行ning heroku login
将在网络浏览器中打开 Heroku,登录后,我可以从 CLI 运行 后续 Heroku 命令。
这是我得到的输入和错误消息:
% heroku login
fatal error: runtime: bsdthread_register error
runtime stack:
runtime.throw(0x2d5619, 0x21)
/usr/local/go/src/runtime/panic.go:566 +0x95 fp=0x7ff7bfeff6d0 sp=0x7ff7bfeff6b0
runtime.goenvs()
/usr/local/go/src/runtime/os_darwin.go:88 +0xa0 fp=0x7ff7bfeff700 sp=0x7ff7bfeff6d0
runtime.schedinit()
/usr/local/go/src/runtime/proc.go:450 +0x9c fp=0x7ff7bfeff740 sp=0x7ff7bfeff700
runtime.rt0_go(0x7ff7bfeff778, 0x2, 0x7ff7bfeff778, 0x0, 0x1000, 0x2, 0x7ff7bfeff948, 0x7ff7bfeff978, 0x0, 0x7ff7bfeff97e, ...)
/usr/local/go/src/runtime/asm_amd64.s:145 +0x14f fp=0x7ff7bfeff748 sp=0x7ff7bfeff740
第一次在网上搜索这个错误,似乎我需要更新 Go,所以我下载了最新版本,并将其添加到我的路径中,如下所示:
% mkdir $HOME/go
% cd $HOME/go
% mkdir bin pkg src
并将以下行添加到我的 .zshrc 文件中:
export GOPATH=$HOME/go
PATH=$PATH:$GOPATH/bin
(然后我从主目录 运行 source .zshrc
)。
这似乎成功更新了 Go,因为 go version
returns go1.17.6 darwin/amd64
.
我再次 运行 heroku login
并得到完全相同的错误。任何 heroku 命令都会出现同样的错误。关于可能出错的任何线索?
我解决了这个问题,但我仍然不清楚为什么会出现该特定错误消息。这是我所做的:
我想我可能会在计算机上的 Heroku 错误日志中找到答案。我无法使用 heroku logs
命令,但我可以手动搜索。 Heroku 的网站说这些位于 ~/Library/Caches/heroku/error.log
on macOS。但是这个目录不存在。 ~/Library/Caches/
中没有 heroku
文件夹。我还有 Heroku - which heroku
正确返回路径 /usr/local/bin/heroku
.
此时我想知道我在更新 OS 之前用来清除存储 space 的 CleanMyMac X
软件是否可能已经删除了 Heroku 文件夹以及旧的错误日志,并且这可能会阻止程序打开?
解决方案:我根据 Heroku 网站上的说明卸载了 Heroku CLI:
% brew uninstall heroku
% rm -rf ~/.local/share/heroku ~/Library/Caches/heroku
然后 re-installed 和 brew tap heroku/brew && brew install heroku
安装失败,自制软件提示我更新一些命令行工具:
% softwareupdate --all --install --force
% sudo rm -rf /Library/Developer/CommandLineTools
% sudo xcode-select --install
这些更新后,我再次尝试,heroku 安装成功。从那以后,我已经能够毫无问题地使用 CLI 使用 Heroku 命令。
根据 Heroku 网站上的 troubleshooting tips,我检查了 heroku
指向哪个二进制文件,结果发现它是 Homebrew 之外的旧安装:
$ which heroku
/usr/local/heroku/bin/heroku # should be: /usr/local/bin/heroku
我删除了这个安装,然后重新启动了通过 Homebrew 安装的 heroku
终端:
$ rm -rf /usr/local/heroku
对我来说,heroku CLI 指向了错误的地方,所以简单地 运行 brew link --overwrite heroku
就解决了。我会遵循 Heroku 写的关于 Brew 问题的recommendation
几天前,我将我的 macOS 从 Catalina 更新到 Monterey 12.2,但我无法再从命令行(使用 zsh)访问 Heroku。通常,从终端 运行ning heroku login
将在网络浏览器中打开 Heroku,登录后,我可以从 CLI 运行 后续 Heroku 命令。
这是我得到的输入和错误消息:
% heroku login
fatal error: runtime: bsdthread_register error
runtime stack:
runtime.throw(0x2d5619, 0x21)
/usr/local/go/src/runtime/panic.go:566 +0x95 fp=0x7ff7bfeff6d0 sp=0x7ff7bfeff6b0
runtime.goenvs()
/usr/local/go/src/runtime/os_darwin.go:88 +0xa0 fp=0x7ff7bfeff700 sp=0x7ff7bfeff6d0
runtime.schedinit()
/usr/local/go/src/runtime/proc.go:450 +0x9c fp=0x7ff7bfeff740 sp=0x7ff7bfeff700
runtime.rt0_go(0x7ff7bfeff778, 0x2, 0x7ff7bfeff778, 0x0, 0x1000, 0x2, 0x7ff7bfeff948, 0x7ff7bfeff978, 0x0, 0x7ff7bfeff97e, ...)
/usr/local/go/src/runtime/asm_amd64.s:145 +0x14f fp=0x7ff7bfeff748 sp=0x7ff7bfeff740
第一次在网上搜索这个错误,似乎我需要更新 Go,所以我下载了最新版本,并将其添加到我的路径中,如下所示:
% mkdir $HOME/go
% cd $HOME/go
% mkdir bin pkg src
并将以下行添加到我的 .zshrc 文件中:
export GOPATH=$HOME/go
PATH=$PATH:$GOPATH/bin
(然后我从主目录 运行 source .zshrc
)。
这似乎成功更新了 Go,因为 go version
returns go1.17.6 darwin/amd64
.
我再次 运行 heroku login
并得到完全相同的错误。任何 heroku 命令都会出现同样的错误。关于可能出错的任何线索?
我解决了这个问题,但我仍然不清楚为什么会出现该特定错误消息。这是我所做的:
我想我可能会在计算机上的 Heroku 错误日志中找到答案。我无法使用 heroku logs
命令,但我可以手动搜索。 Heroku 的网站说这些位于 ~/Library/Caches/heroku/error.log
on macOS。但是这个目录不存在。 ~/Library/Caches/
中没有 heroku
文件夹。我还有 Heroku - which heroku
正确返回路径 /usr/local/bin/heroku
.
此时我想知道我在更新 OS 之前用来清除存储 space 的 CleanMyMac X
软件是否可能已经删除了 Heroku 文件夹以及旧的错误日志,并且这可能会阻止程序打开?
解决方案:我根据 Heroku 网站上的说明卸载了 Heroku CLI:
% brew uninstall heroku
% rm -rf ~/.local/share/heroku ~/Library/Caches/heroku
然后 re-installed 和 brew tap heroku/brew && brew install heroku
安装失败,自制软件提示我更新一些命令行工具:
% softwareupdate --all --install --force
% sudo rm -rf /Library/Developer/CommandLineTools
% sudo xcode-select --install
这些更新后,我再次尝试,heroku 安装成功。从那以后,我已经能够毫无问题地使用 CLI 使用 Heroku 命令。
根据 Heroku 网站上的 troubleshooting tips,我检查了 heroku
指向哪个二进制文件,结果发现它是 Homebrew 之外的旧安装:
$ which heroku
/usr/local/heroku/bin/heroku # should be: /usr/local/bin/heroku
我删除了这个安装,然后重新启动了通过 Homebrew 安装的 heroku
终端:
$ rm -rf /usr/local/heroku
对我来说,heroku CLI 指向了错误的地方,所以简单地 运行 brew link --overwrite heroku
就解决了。我会遵循 Heroku 写的关于 Brew 问题的recommendation