特定のHaskellパッケージのversion >= x.y
を確認するにはconfigureにどのように伝えることができますか?私はconfigure
について多くを知らない./configureでhaskellパッケージのバージョンを確認する方法?
答えて
cabalvchk用途:たとえばhttp://hackage.haskell.org/package/cabalvchk-0.2
、パーセクのバージョンであることを確認するために> = 0.4、あなたが発行することができます:バージョン制約が満たされた場合に
$ cabalvchk parsec '>= 0.4'
をリターンコードはゼロになりますそうでない場合は0ではない。バージョン制約は、キャバルが理解できるものであればどれでもかまいません。オプションの第3パラメータは、冗長出力を要求するために空白でなくてもよい。
おかげで、。特定のコマンドを実行するように要求することはできますか?もしそうなら、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を使っていますが、私は '' version = 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の世界での大きな議論の1つであり、議論の一般的な勝者はあなたがそれをしてはいけないと言っている側です。ハスケルの具体的な特徴は何ですか?それをテストしてください。簡単な例(haskellとは無関係)では、あなたのプログラムがinotifyを使用しているので、configuryが利用可能かどうかテストしたいとします。カーネルのバージョンが> 2.6.13であるかどうかだけでテストできますが、Joeがinotify機能でパッチを当てた2.4.xxバージョンでプログラムをビルドしようとすると、あなたのプログラムはそうではないことに本当に苛立ちます作業。
Haskell> x.yが利用可能かどうかは気にしません。代わりに、あなたがx.yで導入されたことを望むHaskellの特定の機能があります。その機能のテスト。
- 1. cefsharpのバージョンを確認する方法
- 2. スパークのバージョン確認方法
- 3. Androidライブラリのパッケージ名とバージョンの確認
- 4. Haskell実行ファイルのライブラリ依存バージョンを確認する
- 5. Java JDKのバージョンとSDKのバージョンを確認する方法は?
- 6. configureを使ってパッケージをビルドする - アップデートされたバージョンのlibs/headersでロープする方法
- 7. URLはNugetのパッケージの最新バージョンを確認する
- 8. PHPのリチウム(li3)バージョンの確認方法
- 9. linux X11バージョンの確認方法は?
- 10. Android OSバージョンの確認方法
- 11. iOSでRSAのバージョンを確認する方法は?
- 12. MATLABでMATLAB Coderのバージョンを確認する方法は?
- 13. ubuntuでtheanoのバージョンを確認する方法
- 14. NSUserDefaultsでアプリの最新バージョンを確認する方法
- 15. WindowsでUSBポートのバージョンを確認する方法は?
- 16. レポートサーバーでSQL Serverのバージョンを確認する方法
- 17. Windows上でMeteor.jsのバージョンを確認する方法
- 18. Linuxでjavaビットのバージョンを確認する方法は?
- 19. Windows 7klでOpenGLのバージョンを確認する方法
- 20. VS2017でdotnet cliのバージョンを確認する方法は?
- 21. OpenSUSEでlxmlのバージョンを確認する方法
- 22. インストールされているパンダのバージョンを確認する方法
- 23. インストールされているwebpackのバージョンを確認する方法
- 24. オブジェクトが所属する.bplパッケージを確認する方法
- 25. バージョンを確認するMacパッケージインストーラを強制する方法は?
- 26. Crystal Reportのrptファイルのバージョンを確認する方法は?
- 27. 依存プロジェクトのバージョンを確認する最善の方法
- 28. 複数のバージョンのdeployementを確認する方法
- 29. ウィンドウ上のOpenMPのバージョンを確認する方法
- 30. CRANのRパッケージの履歴のバージョン数を確認
新しい依存関係を導入する必要がある場合でも、これは本当にクールです。 –
ありがとう!長期的に私はカバールツールの人々にこの機能性をカバールに直接追加して依存関係を減らすことを要請することができますが、この追加の依存性はあなたの即時のニーズに必要となります。 –