Archivio

Posts Tagged ‘plist’

Ports Mongodb bloccato dopo l’aggiornamento a OS X Mavericks

ottobre 23, 2013 Lascia un commento

Dopo l’aggiornamento a Mac OS X Mavericks il mio server mongodb non parte più.

mongodb-logo-1024x768

Il motivo è semplicemente che l’aggiornamento ha rimosso l’utente _mongo necessario allo start…

Oct 23 11:17:11 mymacbookpro ManagedClient[1497]: FAILURE: Job com.apple.ManagedClient.enrollagent is not loaded in launchd.

Oct 23 11:17:18 mymacbookpro sudo[1500]:     root : unknown user: _mongo

Questa la soluzione veloce (ma sporca): cambiare l’utente con cui far girare mongodb con il proprio utente. Certo non son cose da fare in produzione…

Apri Terminal e digita:

$ sudo vi /Library/LaunchDaemons/org.macports.mongodb.plist

Cambia l’utente usato per lo start (_mongo) nel tuo utente:

<?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.macports.mongodb</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/bin/daemondo</string>
<string>--label=mongodb</string>
<string>--start-cmd</string>
<string>sudo</string>
<string>-u</string>
<string>_mongo</string>
<string>/opt/local/bin/mongod</string>
<string>--dbpath</string>
<string>/opt/local/var/db/mongodb</string>
<string>--logpath</string>
<string>/opt/local/var/log/mongodb/mongodb.log</string>
<string>--logappend</string>
<string>;</string>
<string>--pid=exec</string>
</array>
<key>Debug</key><true/>
<key>Disabled</key><true/>
<key>KeepAlive</key><true/>
</dict>
</plist>

Poi esegui:

sudo chown -R freedev: /opt/local/var/db/mongodb/

sudo chown -R freedev: /opt/local/var/log/mongodb/

sudo port unload mongodb

sudo port load mongodb

E come dicevano alcuni mie colleghi sistemisti: “PROOVAAA ORAAA?”.

Se invece non sei soddisfatto dalle soluzioni quick and dirty, una soluzione più pulita è creare un nuovo utente per mongodb, questi sono i passi che ho usato (ma potrebbero cambiare su un altro mac): 

Crea l’utente:

sudo dscl . -create /Users/_mongo

sudo dscl . -create /Users/_mongo UserShell /var/empty

Ora dovresti assegnare un id univoco all’utente _mongo. Qui ho scelto l’id precedentemente usato dall’utente che esisteva prima dell’aggiornamento.

sudo dscl . -create /Users/_mongo UniqueID 507

Poi hai bisogno di aggiungere _mongo al gruppo admin, in modo da permettere a mongodb di mettersi in listen sulla sua porta:

sudo dscl . -append /Groups/admin GroupMembership _mongo

D’altra parte il gruppo _mongo esisteva ancora, cosi’ l’ho riusato:

sudo dscl . list /groups PrimaryGroupID  | grep mongo

_mongo                           504

Ora possiamo associare di nuovo l’id all’utente appena creato:

sudo dscl . -create /Users/_mongo PrimaryGroupID 504

E per finire, sistemiamo le permission del filesystem giusto per essere sicuro che sia tutto ok:

sudo chown -R _mongo: /opt/local/var/db/mongodb/

sudo chown -R _mongo: /opt/local/var/log/mongodb/

Have fun!