代码之家  ›  专栏  ›  技术社区  ›  RecencyEffect

打破与尼克斯+阴谋集团的依赖关系?

  •  2
  • RecencyEffect  · 技术社区  · 6 年前

    reflex-platform ,有一些额外的配置类似于 reflex-project-skeleton .

    现在我有一个包冲突,我无法解决。 我用的是和你一样的阴谋脚本 reflex-project-skeleton ,调用 nix-shell 以非交互模式与阴谋集团指挥。

    ./cabal new-build --allow-newer all
    

    我明白了

    these derivations will be built:
      /nix/store/d6ji516i7pry5l6gv18y6hpj9k1bvgg5-heist-1.0.1.0.drv
      /nix/store/zj1clks7mzq8gn91ahhwa3nvpi5rwra9-snap-1.0.0.2.drv
      /nix/store/mx861972jnjabn7yxyr3y3q1yhf25jfq-snaplet-acid-state-0.2.7.drv
      /nix/store/grhp4dhavmpi6bgns5a6vdzg8ny2bsf8-hoogle-local-0.1.drv
      /nix/store/y3sszsj58f6ad3r06540w0mlr1pncd59-ghc-8.0.2-with-packages.drv
    
    ...
    
    Configuring heist-1.0.1.0...
    Setup: Encountered missing dependencies:
    aeson >=0.6 && <1.2
    
    builder for '/nix/store/d6ji516i7pry5l6gv18y6hpj9k1bvgg5-heist-1.0.1.0.drv' failed with exit code 1
    cannot build derivation '/nix/store/y3sszsj58f6ad3r06540w0mlr1pncd59-ghc-8.0.2-with-packages.drv': 1 dependencies couldn't be built
    

    令人不快的包裹似乎是 snaplet-acid-state ,因此我尝试从nix shell内部安装它:

    cabal install snaplet-acid-state
    Resolving dependencies...
    cabal: Could not resolve dependencies:
    trying: snaplet-acid-state-0.2.7 (user goal)
    trying: base-4.9.1.0/installed-4.9... (dependency of snaplet-acid-state-0.2.7)
    next goal: mtl (dependency of snaplet-acid-state-0.2.7)
    rejecting: mtl-2.2.1/installed-BLK... (conflict: mtl =>
    transformers==0.5.2.0/installed-0.5..., snaplet-acid-state =>
    transformers>=0.3.0.0 && <0.5)
    trying: mtl-2.2.2
    next goal: transformers (dependency of snaplet-acid-state-0.2.7)
    rejecting: transformers-0.5.2.0/installed-0.5..., transformers-0.5.5.0,
    transformers-0.5.4.0, transformers-0.5.2.0, transformers-0.5.1.0,
    transformers-0.5.0.1, transformers-0.5.0.0 (conflict: snaplet-acid-state =>
    transformers>=0.3.0.0 && <0.5)
    rejecting: transformers-0.4.3.0, transformers-0.4.2.0 (conflict:
    base==4.9.1.0/installed-4.9..., transformers => base>=2 && <4.9)
    rejecting: transformers-0.4.1.0 (conflict: base==4.9.1.0/installed-4.9...,
    transformers => base>=2 && <4.8 || >=1.0 && <2)
    rejecting: transformers-0.3.0.0 (conflict: mtl => transformers>=0.4 && <0.6)
    rejecting: transformers-0.2.2.1, transformers-0.2.1.0, transformers-0.2.0.0,
    transformers-0.1.4.0, transformers-0.1.3.0, transformers-0.1.1.0,
    transformers-0.1.0.1, transformers-0.0.1.0, transformers-0.0.0.0,
    transformers-0.5.3.1, transformers-0.5.3.0, transformers-0.5.0.2 (conflict:
    snaplet-acid-state => transformers>=0.3.0.0 && <0.5)
    rejecting: transformers-0.4.0.0 (conflict: base==4.9.1.0/installed-4.9...,
    transformers => base>=2 && <4.8 || >=1.0 && <2)
    rejecting: transformers-0.2.2.0, transformers-0.1.0.0 (conflict:
    snaplet-acid-state => transformers>=0.3.0.0 && <0.5)
    After searching the rest of the dependency tree exhaustively, these were the
    goals I've had most trouble fulfilling: transformers, snap, base,
    snaplet-acid-state, mtl
    

    尝试在cabal文件中指定版本约束等,但没有效果。

    1 回复  |  直到 5 年前
        1
  •  4
  •   Robert Hensing Nguyen Hoang Hiep    6 年前

    这个怎么办 cabal2nix 基本上,依赖性求解器被迫只考虑Nixpkgs提供的包,或者在本例中是reflex platform+Nixpkgs。通过剥夺从多个版本中选择一个版本的自由,阴谋集团的依赖求解器被简化为一个依赖 检查器

    加布里埃尔·冈萨雷斯 a good explanation of version management with Nixpkgs' Haskell infrastructure . 您也可以退房 this thread callHackage callCabal2nix

    推荐文章