2015-11-25 105 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'中默認顯示已安裝軟件包的版本號。 –