无法使用cabal 1.24.0.2/ghc 8.2.1在Ubuntu 16.10上安装leksah

时间:2017-08-06 04:46:14

标签: haskell cabal cabal-install leksah

我尝试使用cabal安装leksah作为我的开发环境,但我遇到了错误。

user@home:~$ ghci --version
The Glorious Glasgow Haskell Compilation System, version 8.2.1
user@home:~$ cabal --version
cabal-install version 1.24.0.2
compiled using version 1.24.2.0 of the Cabal library 
user@home:~$ stack --version
Version 1.3.2, Git revision 3f675146590da4f3edf768b89355f798229da2a5 (4395 commits) x86_64 hpack-0.15.0
关于在我的机器中安装haskell的其他详细信息如下 -

     package Demo
     import akka.actor._
     import akka.cluster.singleton.{ClusterSingletonManager, ClusterSingletonManagerSettings, ClusterSingletonProxy, ClusterSingletonProxySettings}
     import com.typesafe.config.ConfigFactory
     import scala.concurrent.duration._
     object MainObject1 extends App{
     DemoMain1.start(8888)

     }
     object DemoMain1 {
       val role = "test"
       val singletonname = "Ruuner"
       val mastername = "Master"
       def start(port: Int): ActorSystem = {
         val conf = ConfigFactory.parseString(
           s"""
     |akka.actor.provider = "akka.cluster.ClusterActorRefProvider"
     |
     |akka.remote.netty.tcp.port = $port
     |akka.remote.netty.tcp.hostname = 127.0.0.1
     |akka.cluster.roles = ["$role"]
     |akka.cluster.seed-nodes = ["akka.tcp://DemoMain1@127.0.0.1:8888"]

   """.stripMargin
)
val system = ActorSystem("DemoMain1", conf)
val settings = ClusterSingletonManagerSettings(system).withRole(role)
val manager = ClusterSingletonManager.props(Props[DemoMain1], PoisonPill, settings)
val actor=system.actorOf(manager, mastername)
system
       }

       class DemoMain1 extends Actor with Identification {
         import context._
         override def preStart(): Unit = {
           println(s"Master is created with id $id in $system")
           println(self.path.address.host)
          system.scheduler.scheduleOnce(100.seconds, self, 'exit)

         }

         override def receive : Receive={
  case 'exit => println("$id is exiting")
    context stop self
    //SupervisorStrategy.Restart


  case msg => println(s"messasge from $system is $msg  ")

      sender() ! 'how
         }
       }
     }

有任何解决这些错误的建议吗?

1 个答案:

答案 0 :(得分:2)

让我们直接了解依赖关系:

  • leksah的版本为0.15.2,已于18个月前发布。它取决于严格低于base的{​​{1}}包(另请参阅version bump commit)。
  • 4.9的版本为ghc。根据{{​​3}},8.2.1包的版本为base

您无法安装其他基本软件包 - 它本质上链接到ghc版本(release notes)。请注意,4.10.0.0see this post)的基础包的版本为ghc 8.0.1

所以要么

  • 安装8之前的haskell版本,带来一个较旧的基本软件包,或
  • 从其github源(release notes)或
  • 安装4.9.0.0
  • 与其他贡献者合作,或许可以发布一个leksah(或其他)只是碰撞版本(前提是它仍在使用)。

虽然看起来很奇怪 - 过去两周有提交,但install instructions页面提到他们正在计划0.15.1版本 - 这是半年前的事。

我有点想知道为什么0.16次要版本存在上限 - 目前download设置为基础ghc。因此当>=4.0.0.0 && <4.11再次碰撞ghc next包时,会出现同样的问题。因此,base几乎锁定了leksah发布周期。