回答
使用cabalvchk:http://hackage.haskell.org/package/cabalvchk-0.2
例如,驗證秒差距的版本爲> = 0.4,你可以發出:
$ cabalvchk parsec '>= 0.4'
返回代碼將是零,如果版本滿足約束條件否則不爲零。版本約束可以是cabal理解的任何東西。可選的第三個參數可以是非空白的以請求詳細輸出。
我不知道很多關於configure
;你能讓它運行一個特定的命令嗎?如果是這樣,那麼ghc-pkg latest
應該幫助你。例如,下面是爲zlib
包在我的機器上運行:
% ghc-pkg latest zlib
zlib-0.5.3.1
% ghc-pkg latest --global zlib
zlib-0.5.3.1
% ghc-pkg latest --user zlib
ghc-pkg: cannot find package zlib
zsh: exit 1 ghc-pkg latest --user zlib
的--global
應該用於整個系統的安裝,並沒有任何標誌在所有的用戶特定的設備。 --user
標誌只應在您想檢查用戶是否具有本地安裝包(可能會覆蓋全局包)時使用。
除非您有理由不這樣做,否則我建議開溝configure
以支持cabal
。對於cabal
,該解決方案在這裏是先cabal init
在項目的目錄,然後檢查是否有在.cabal
文件這樣一行時創建的:
build-depends: zlib >= 0.5
的cabal
工具鏈是Haskell的項目標準(因爲它自動化和簡化許多事情,包括依賴追逐)。如果還有其他依賴關係,您還可以請求cabal
調用configure
。如果您想了解更多關於此的信息,請另外打個問題。
感謝您的回答。我已經使用ghc-pkg,但我不知道說'我需要版本> = x.y'。使用'configure'的原因是haskell腳本是主要用python編寫的更大程序的一部分,所有的依賴關係已經通過configure進行管理。 –
使用ghc-pkg list
,您可以按照升序獲取軟件包的已安裝版本列表。您應該希望能夠通過此列表篩選尋找匹配項。 (我不知道怎麼做,configure
,對不起)。
$ ghc-pkg list yesod
/home/ahammar/.haskell/lib/ghc-7.0.2/package.conf.d
/home/ahammar/.ghc/x86_64-linux-7.0.2/package.conf.d
yesod-0.8.2.1
yesod-0.9.1
yesod-0.9.2.2
嘗試這樣:
# Find ghc-pkg, so we can do version checks
AC_ARG_VAR([GHC_PKG], [Path to ghc-pkg])
AC_PATH_PROG([GHC_PKG], [ghc-pkg])
AS_IF([test -z "$GHC_PKG"], [AC_MSG_ERROR([Cannot find ghc-pkg.])])
# Check that the package actually exists
AC_MSG_CHECKING([for Haskell package foo])
AS_IF([$GHC_PKG latest foo > /dev/null 2>&1],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_ERROR([Cannot find foo])])
# Check its version
AC_MSG_CHECKING([if foo is new enough])
foo_ver=`$GHC_PKG latest foo | sed 's/^foo-//'`
# At this point you have the version of foo and the minimum version you want.
# The rest of the test is pretty easy to write, use cut and test to compare the
# version numbers. If it's new enough, AC_MSG_RESULT([yes]).
# If not, AC_MSG_RESULT([no]) and AC_MSG_ERROR([foo is not new enough.])
也許更好的問題是:你應該?檢查特定的版本號是autoconf世界的重要參數之一,辯論的總冠軍是說你永遠不應該這樣做的一面。你需要什麼Haskell特性?測試一下。作爲一個簡單的例子(與haskell無關),假設你的程序使用inotify,所以你想讓configury測試它是否可用。你可以測試內核版本是否大於2.6.13,但是當Joe試圖在他的2.4.xx版本上構建你的程序時,他已經修復了inotify的能力,他會非常煩惱你的程序不會工作。
你不關心Haskell> x.y是否可用。相反,Haskell的某些特定功能需要在x.y中引入;測試該功能。
- 1. Haskell軟件包版本
- 2. Nix shell:如何列出已安裝的Haskell軟件包版本
- 3. 如何強制Mac軟件包安裝程序檢查版本?
- 4. Linux軟件安裝 - 覆蓋./configure中的庫版本
- 5. 安裝前檢查可用的pip軟件包版本
- 6. 檢查已安裝版本的R軟件包並更新舊版本
- 7. 如何知道舊Fedora版本的最新軟件包版本
- 8. 如何查找與特定庫版本對應的軟件包
- 9. 如何查看堆棧安裝的軟件包版本?
- 10. r檢查軟件包版本是否大於x.y.z
- 11. Serverspec不正確檢查軟件包版本
- 12. Pinning R軟件包版本
- 13. Node.js - NPM軟件包版本
- 14. 預測軟件包版本
- 15. 如何安裝d3js Haskell軟件包?
- 16. spacemacs中的回滾軟件包版本
- 17. 版本控制中的Oracle軟件包?
- 18. python軟件包:如何依賴最新版本的單獨軟件包
- 19. 如何確保我的Haskell軟件包與LTS Haskell相匹配?
- 20. 如何查找Haskell名稱的包,版本和文檔
- 21. haskell軟件包:base與haskel98
- 22. 在package.json中設置軟件包版本
- 23. nixpkgs中的haskell軟件包在哪裏?
- 24. 獨立版本庫中的Java軟件包比其他版本
- 25. 如何在Yocto -older版本中使用最新的軟件包版本?
- 26. 如何在Ansible中定義要安裝的軟件包版本
- 27. 如何查找在Ubuntu中降級的軟件包的早期版本?
- 28. 如何查找SSIS 2008 R2軟件包中使用的.NET框架版本?
- 29. Indermediate sub-patch Node.js軟件包的版本
- 30. 確定特定軟件包的版本
這確實很酷,即使它意味着我必須引入新的依賴關係。 –
謝謝!從長遠來看,我可以請求cabal工具人員直接將此功能添加到cabal中,這樣可以減少依賴性,但是這種額外的依賴性對於您的直接需求是必需的。 –