2015-11-25 169 views
8

每个人都应该认为这是一个常见问题,但我一直没能找到一个回答这个简单的问题:我有哪些软件包版本?

我在我的GHC安装哪个版本的某个软件包?

背景

我想学习Haskell中,为了做到这一点,我通过Real World Haskell我的方式。我现在已经达到了chapter 11,其中包括QuickCheck。

不幸的是,自该书于2009年出版以来,QuickCheck发生了变化,它似乎已经过各种修订。每当我寻找一种新的做事方式时,作为书中指示的替代方式,新方法有时也不起作用。 2012年可能描述了“新方式”,但之后QuickCheck再次发生了变化。最终,我必须弄清楚如何从文档或源代码中使用QuickCheck,但是知道我应该调查哪个版本会非常有帮助。

我还没有达到我对Cabal等的了解,所以我的问题是基于纯粹的无知。希望有一个简单的答案。

我在Windows上使用GHC,显然,QuickCheck已经捆绑到我的安装中。我已经有QuickCheck,但我不知道哪个版本。

+0

这可能有所帮助:http://stackoverflow.com/questions/2892586/how-can-my-haskell-program-or-library-find-its-version-number –

+3

\ * sigh \ *,另一个用于[列表](http://stackoverflow.com/a/23733494/1139697)。 – Zeta

+2

@ shree.pat18对于已安装的库(以及像大多数库一样,不公开它的'Paths_ *'模块),这似乎没有用处。 –

回答

6

使用cabal info

您可以使用cabal info <packagename>获取有关包的信息,包括当前安装的版本:

 
$ cabal info QuickCheck 
* QuickCheck  (library) 
    Synopsis:  Automatic testing of Haskell programs 
    Versions available: 1.1.0.0, 1.2.0.0, 1.2.0.1, 2.6, 2.7.4, 2.7.5, 2.7.6, 
         2.8, 2.8.1 (and 24 others) 
    Versions installed: 2.8.1 
    Homepage:  https://github.com/nick8325/quickcheck 
    Bug reports: mailto:[email protected] 
    Description: QuickCheck is a library for random testing of program 
        properties. 

        The programmer provides a specification of the program, in 
        the form of properties which functions should satisfy, and 
        ... 

因此,所有你需要做的就是grep的“安装的版本”:

$ cabal info QuickCheck | grep "Versions installed" 
Versions installed: 2.8.1 

在Windows上,您可以使用findstr:

$ cabal info QuickCheck | findstr /C:"Versions installed" 
Versions installed: 2.8.1 

备注:如果您还没有安装<packagename>,但仍想了解一些相关信息,您可能需要先登录cabal update

使用ghc-pkg

如果您没有安装cabal做,你仍然可以使用GHC的包管理器,ghc-pkg

$ ghc-pkg list QuickCheck 
C:\Program Files\MinGHC-7.8.4\ghc-7.8.4\lib\package.conf.d: 
    QuickCheck-2.8.1 

但是,请注意ghc-pkg不会承认阴谋沙箱:

$ cabal sandbox init 
$ cabal install QuickCheck 
$ ghc-pkg list QuickCheck 
C:\Program Files\MinGHC-7.8.4\ghc-7.8.4\lib\package.conf.d: 
    (no packages) 

在这种情况下,您需要使用ghc-pkg -f .\.cabal-sandbox\<platform>-packages.conf.dcabal exec

$ ghc-pkg -f .\.cabal-sandbox\x86_64-windows-ghc-7.8.4-packages.conf.d list QuickCheck 
.\.cabal-sandbox\x86_64-windows-ghc-7.8.4-packages.conf.d: 
    QuickCheck-2.8.1 

$ cabal exec -- ghc-pkg list QuickCheck 
.\.cabal-sandbox\x86_64-windows-ghc-7.8.4-packages.conf.d: 
    QuickCheck-2.8.1 

但是,因为你已经在使用cabal,你可以简单地使用cabal info

+2

或者,如果你不想通过'cabal'(并且正在使用'ghc'),你可以在'ghc-pkg list QuickCheck'中默认显示已安装软件包的版本号。 –