Created
March 7, 2013 07:17
-
-
Save Jonke/5106160 to your computer and use it in GitHub Desktop.
Hur man fixade till haskell mongodbdriver för windows när hackage hade en version som bara gick på linux
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
posterous | |
« Back to blog | |
Viewed 227 times | |
About Me | |
Haskell, Erlang, C, Ruby | |
Subscribe via RSS | |
MongoDB och Haskell | |
Vissa saker är så enkla att närman väl kommer på det så är det snarast pinsamt att tala om att man inte fattade det direkt. | |
Problemet är ju att när man sen glömmer bort det enkla så får man börja om från början så därför noterar jag det här. | |
Du envisas med att köra windows med ghc 6.10.4 och vill nu använda din mongoDB för sakens skull. | |
Du hittar ett packet på Hackage som är bindings för mongoDB, det är alfa och dessutom för ghc 6.12, detta avskräcker dock inte utan huvudstupa försöker du ändå använda det. | |
Snabbt försöker du köra cabal install mongoDB, hittar inget, nehe. | |
Updatera cabal då, cabal update ger att man bör uppdatera sin cabal. | |
Så då gör vi det då: cabal install cabal-install | |
Igen cabal update ser bättre ut. | |
Nu då: cabal install mongoDB, nu börjar det rassla för att (eftersom detta är en windows maskin) klaga på att nano-md5 inte kan installeras. | |
Så då provar vi med bara cabal install nano-md5 och nu får vi plötsligt vettiga felmeddelanden. | |
Vi saknar en massa crypto lib och md5.h saker, ha lätt åtgärdat. | |
Hämta developers files och extrahera ut i c:\openssl. | |
nu får vi köra cabal lite annorlunda cabal install nano-md5 --extra-include-dirs=C:\openssl\include --extra-lib-dirs=C:\openssl\lib | |
nu är nano-md5 inne så då återvänder vi till | |
cabal install mongoDB | |
och nu händer betydligt mer, ända till vi får det otroligt jobbiga | |
Database\MongoDB.hs:328:9: | |
Type constructor `Exception' used as a class | |
In the instance declaration for `Exception MongoDBInternalError' | |
hmm, detta har vi råkat ut för tidigare, hur var det nu?... pragma , language extension TypeSynomInstances osv .... (Exception mellan ghc versionerna är en snabb liten rackare) | |
Det jag tror händer här är att base-3 används och inte base-4 som har de nya Control.Exception sakerna | |
cabal install -v --constraint="base>=4" mongoDB | |
men det fungerar av någon anledning inte, fortfarande används base-3 | |
hmm, skam den som ger sig..... | |
cabal fetch mongoDB | |
cabal unpack mongoDB | |
cd mongoDB-0.3 | |
in med mongoDB.cabal i emacs och ändra kravet på base<5 till base >=4, spara | |
cabal configure | |
cabal build | |
cabal install | |
Jaha nu har vi det, fungerar det ? | |
Vi följer den tutorial som finns på http://github.com/srp/mongoDB/blob/master/tutorial.md | |
$ mongod | |
Start up a haskell repl: | |
$ ghci | |
> import Database.MongoDB> import Database.MongoDB.BSON | |
> con <- connect "127.0.0.1" [] | |
Om man nu får det där jobbiga | |
<command line>: user specified .o/.so/.DLL could not be loaded (addDLL: could n | |
t load DLL) | |
Så har man inte libeay32.dll (som jag dessutom kopierat och döpt till libcrypto.dll) i någon sökbar path. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment