当我运行 MongoDB 时,我通常手动启动它(即它不是我的登录启动项的一部分),并且我擅长在关闭之前停止服务。
我最近重新启动了笔记本电脑并在运行时收到错误:
brew services run mongodb/brew/mongodb-community
Error: undefined method `plist_startup' for #<Formula mongodb-community (stable) /usr/local/Homebrew/Library/Taps/mongodb/homebrew-brew/Formula/mongodb-community.rb>
我不完全确定发生了什么。我尚未安装任何重大更新或对我的环境进行任何修改。
我完全卸载了 MongoDB,然后再次安装:
# Uninstall each component of mongodb-community...
brew uninstall mongodb/brew/mongodb-community
brew uninstall mongodb/brew/mongodb-database-tools
brew uninstall mongosh
# Reinstall all of the above...
brew install mongodb/brew/mongodb-community
mongodb --version
db version v7.0.2
Build Info: {
"version": "7.0.2",
"gitVersion": "02b3c655e1302209ef046da6ba3ef6749dd0b62a",
"modules": [],
"allocator": "system",
"environment": {
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
说实话,有时在深夜,我会处于自动驾驶状态。我可能在某些时候运行过
brew upgrade
,也可能没有运行过。我会调查一下是否发生过这种情况。与此同时,当我在 Homebrew 中获取 MongoDB 日志时,我什至没有看到会对我产生影响的提交:
brew log mongodb/brew/mongodb-community
# Yields...
commit f33a59b6642f6a9f47f84b390dd71c386998cce6
Author: Zack Winter <[email protected]>
Date: Wed Oct 4 23:24:26 2023 +0000
Update paths with mr script
commit 7f3db6dbe9231300cc61645c68686a970b575f1f
Author: Zack Winter <[email protected]>
Date: Tue Oct 3 20:00:06 2023 +0000
SERVER-80537 update formulas for 7.0.1 release
commit 5055c34131148681885ea2241abccfc603596295
Author: Alexander Neben <[email protected]>
Date: Fri Aug 18 10:54:02 2023 -0700
提前非常感谢!
我不确定如何或为何,但启动脚本似乎必须更改。以下是我为让 MongoDB 重新启动并再次运行而采取的步骤,不过我建议先跳到尝试启动 MongoDB 的替代方案。
我首先尝试通过 Homebrew 强制重新安装 MongoDB。当然,我的努力没有结果:
brew reinstall mongodb/brew/mongodb-community
这很烦人,因为它基本上会与曾经安装的任何东西断开连接。如果您想像往常一样进行更新,则必须再次重新安装所有内容。制作列表并运行批量安装很容易:
brew leaves
但是,请小心:这并不包括您所有的木桶。我忘记列清单并在这个假期检查了两次。如果你想要一个包装精美的 Homebrew,请务必运行它:
brew list --cask #add the "-1" to the end if you want a vertical list.
我回去找到了
Homebrew-4.1.23.pkg
的安装程序包,当我无法弄清楚如何从脚本安装以前的版本时,我只是通过 GUI 安装了。
不幸的是,在我运行任何类型的
brew install ...
命令之前,我忘记设置这个变量:
export HOMEBREW_NO_AUTO_UPDATE=1;
....soooooo,是的。一旦我运行任何brew命令,它就会立即将我升级回我开始认为存在问题的位置。 您是否很高兴跳到最后而不是按照这些步骤操作?
FWIW - 当需要重新安装 MongoDB 时,我遵循了与习惯不同的路径; 与我为系统设置编写的脚本不同。我使用了MongoDB文档中描述的方法:
brew install [email protected]
在我的配置文件脚本中,我有一些用于管理诸如 MongoDB 的启动/停止之类的功能。例如,我的
run
MongoDB 脚本如下所示:
function mongo-run {
pid=$(ps -A | grep '[mon]god' | awk '{printf "%d", $1}');
if [[ -z $pid ]];then
brew services run mongodb/brew/mongodb-community;
else
printf "
${txtblu}Mongo is already running with process ID ${bldblu}$pid${txtrst}\n";
fi
}
......我所做的就是改变成这样:
function mongo-run {
pid=$(ps -A | grep '[mon]god' | awk '{printf "%d", $1}');
if [[ -z $pid ]];then
brew services run mongodb-community;
else
printf "
${txtblu}Mongo is already running with process ID ${bldblu}$pid${txtrst}\n";
fi
}
如果你错过了:
# This...
brew services run mongodb/brew/mongodb-community;
# changed to this...
brew services run mongodb-community;
Pretty ridiculous, right?
哦,好吧。现在一切都恢复正常了。