MongoDB 通过 Brew Services“未定义方法‘plist_startup’”

问题描述 投票:0回答:1

通过 Homebrew 服务启动 MongoDB 时出错

当我运行 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
还有其他人看到这个吗?

提前非常感谢!

ruby mongodb homebrew plist
1个回答
0
投票

启动脚本已更改

我不确定如何或为何,但启动脚本似乎必须更改。以下是我为让 MongoDB 重新启动并再次运行而采取的步骤,不过我建议先跳到尝试启动 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

我回去找到了

Homebrew-4.1.23.pkg
的安装程序包,当我无法弄清楚如何从脚本安装以前的版本时,我只是通过 GUI 安装了。

不幸的是,在我运行任何类型的

brew install ...
命令之前,我忘记设置这个变量:

export HOMEBREW_NO_AUTO_UPDATE=1;

....soooooo,是的。一旦我运行任何brew命令,它就会立即将我升级回我开始认为存在问题的位置。 您是否很高兴跳到最后而不是按照这些步骤操作?

替代方法

FWIW - 当需要重新安装 MongoDB 时,我遵循了与习惯不同的路径; 与我为系统设置编写的脚本不同。我使用了MongoDB文档中描述的方法:

brew install [email protected]

更改 MongoDB 启动脚本

在我的配置文件脚本中,我有一些用于管理诸如 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?

哦,好吧。现在一切都恢复正常了。

© www.soinside.com 2019 - 2024. All rights reserved.