我想安装和使用 Happstack,而应该花 10 分钟的时间,整天都在困扰着我。首先,我不得不与 Cabal 搏斗,最终将其淘汰,并安装了一个新副本,并对其进行了更新:
# I use Fedora 16...
yum remove cabal-install
...
yum install cabal-install
...
cabal update
...
# I was told that a new version was available.
cabal install cabal-install
...
cabal install happstack-server
这些命令都没有失败(或者至少他们没有给人留下他们失败的印象。)
现在安装它后,我决定尝试构建Crashcourse 指南中的第一个简单示例。
我把它写成:
-- server.hs
module Main where
import Happstack.Server (nullConf, simpleHTTp, toResponse, ok)
main :: IO()
main = simpleHTTP nullConf $ ok "Hello World!"
当我尝试使用以下命令行使用 GHC 编译它时:
ghc --make -threaded server.hs -o server
我收到以下错误:
server.hs:3:8:
Could not find module `Happstack.Server':
Use -v to see a list of the files searched for.
并使用建议的-v
选项给出:
Glasgow Haskell Compiler, Version 7.0.4, for Haskell 98, stage 2 booted by GHC version 7.0.4
Using binary package database: /usr/lib/ghc-7.0.4/package.conf.d/package.cache
wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-6bf7b03ebc9c668817e4379b6796c0c2
wired-in package integer-gmp mapped to integer-gmp-0.2.0.3-4c5ab8b517f0b5d4ecf2153d5dfb7f41
wired-in package base mapped to base-4.3.1.0-4582a5bc64f22f03f6d960b4f15c981f
wired-in package rts mapped to builtin_rts
wired-in package template-haskell mapped to template-haskell-2.5.0.0-958de6d18727479331372229849ac6b8
wired-in package dph-seq not found.
wired-in package dph-par not found.
Hsc static flags: -static
*** Deleting temp files:
Deleting:
*** Deleting temp dirs:
Deleting:
ghc: no input files
老实说,我很难解释这一点。无论如何,我决定是时候谷歌了(再次!)这让我想到了这个类似的问题(顺便说一句,这很混乱而且不是很有用......),它建议尝试在 GHCi 中加载模块。
我试了一下,令我惊讶的是,这行得通:
> :m Happstack.Server
> simpleHTTP nullConf $ ok "Hello World!"
>
> ...MODULE LOADING INFORMATION HERE...
还有这个:
> :l server
> main
两者都按应有的方式运行和运行。
所以简而言之,这很奇怪,Cabal 很麻烦,而且我对基本的 Haskell 工具集还没有太多经验。
有人对如何解决这个问题有任何想法吗?提前致谢!:)