Benötigen Sie Hilfe beim Verwenden des Homebrew-Befehls "Dienste"?

9

Ich habe MongoDB kürzlich mit Homebrew installiert. In einigen Artikeln im Internet wird empfohlen, Mongo mit dem folgenden Befehl zu starten:

brew services start mongo

Wenn ich diesen Befehl verwende, wird folgende Meldung angezeigt:

Error: Unknown command: services

Ich habe versucht, online nach diesem Problem zu suchen. Aber bisher kein Glück. Was könnte hier das Problem sein? Ich habe Homebrew so installiert, wie es auf der Website angegeben ist. Warum funktioniert diese Funktion bei mir nicht?

Die Manpage enthält keine Informationen zum Befehl 'services'.

Ganz7
quelle

Antworten:

8

services war ein "versteckter" Befehl in Homebrew. Es gab eine Reihe von ihnen, die in derbrew helpAusgabenicht vorhanden waren. Es ist, wie undokumentierte Befehle normalerweise tun, im offiziellen Repository verschwunden und wurde zu einem " externen Befehl ", der in einem anderen Add-On-Repository verwaltet wird (in diesem Fall ein Kern, wie es so einfach ist).

Sie können es in Ihrem Homebrew-Setup installieren, indem Sie Folgendes ausführen:

> curl -o /usr/local/bin/brew-services.rb https://gist.githubusercontent.com/lwe/766293/raw/75a7907004bbff0eb3b072d1d951be2cfe7e5020/brew-services.rb
> chmod +x /usr/local/bin/brew-services.rb
> brew services help
usage: [sudo] brew services [--help] <command> [<formula>]

Small wrapper around `launchctl` for supported formulas, commands available:
   cleanup Get rid of stale services and unused plists
   list    List all services managed by `brew services`
   restart Gracefully restart selected service
   start   Start selected service
   stop    Stop selected service

Options, sudo and paths:

  sudo   When run as root, operates on /Library/LaunchDaemons (run at boot!)
  Run at boot:  /Library/LaunchDaemons
  Run at login: /Users/ian/Library/LaunchAgents

Alternativ können Sie überspringen servicesund einfach eine Plist-Datei dafür erstellen. Erstellen Sie beispielsweise ~/Library/LaunchAgents/org.mongodb.mongod.plistmit:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>org.mongodb.mongod</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/Cellar/mongodb/2.6.4/bin/mongod</string>
    <string>run</string>
    <string>--config</string>
    <string>/usr/local/Cellar/mongodb/2.6.4/mongod.conf</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>KeepAlive</key>
  <false/>
  <key>UserName</key>
  <string>{your_username}</string>
  <key>WorkingDirectory</key>
  <string>/usr/local</string>
  <key>StandardErrorPath</key>
  <string>/usr/local/var/log/mongodb/output.log</string>
  <key>StandardOutPath</key>
  <string>/usr/local/var/log/mongodb/output.log</string>
</dict>
</plist>

Ändern {your_username}Sie einfach Ihren tatsächlichen Benutzernamen und führen Sie Folgendes aus:

launchctl load ~/Library/LaunchAgents/org.mongodb.mongod.plist 

um die plist bei launchd zu registrieren. Sie können MongoDB jetzt starten und stoppen mit:

launchctl start org.mongodb.mongod
launchctl stop org.mongodb.mongod

Beachten Sie, dass die obige Plist-Lösung dieser hervorragenden Stapelüberlauf-Antwort entnommen wurde .

Ian C.
quelle
2

Es ist jetzt extern:

brew tap homebrew/services

brew services install, brew services installjetzt arbeite.

kbrock
quelle