2015-10-31 12 views
18

stack and stackage.orgの使い方を理解しようとしています。私が最初にインストールして使用したとき、stackage.orgはLTS-3.8(「リゾルバ」)にいました。それ以来、stackage.orgにはLTS-3.11があります。HaskellのスタックプログラムとリゾルバとLTSバージョンの理解

まず、このことが何であるかを確認したいと思います。 Stackageは、特定のLTSバージョン(例えば3.8)に対して、パッケージが一緒に動作することが確認されたパッケージのリポジトリです。したがって、LTS-3.8のパッケージは連携して動作し、LTS-3.11のパッケージも一緒に動作します。 ...

を上の移動、私はstack new projectnameを実行すると、スタックは私に語った:

Checking against build plan lts-3.8 
Selected resolver: lts-3.8 

このプロジェクトはLTS-3.8の下で検証したパッケージのみとバージョンを使用するように設定されていることを意味するのでしょうか?

新しいプロジェクトを開始し、新しいプロジェクトで最新のLTSバージョンを使用したい場合は、デフォルトでそれを行うようにスタックにどのように伝える必要がありますか?

新しいLTSバージョンを使用するように古いプロジェクトを「アップグレード」したいのですが?

答えて

14

これは、プロジェクトがLTS-3.8で検証されたパッケージとバージョンのみを使用するように設定されていることを意味しますか?

正確に。 (LTS 3.8セットに含まれていないパッケージが必要な場合はのextra-depsセクションで指定することができます。スタックはLackスナップショットや他のプロジェクトに影響を与えずに、Hackageからそれらを取得しプロジェクトごとにインストールします。

新しいプロジェクトを開始して、新しいプロジェクトで最新のLTSバージョンを使用したい場合は、デフォルトでこれを行うにはどうすればよいですか?

stack new projectname --resolver=lts-3.11を使用して、新しいプロジェクトのリゾルバを設定します。スタックはデフォルトのLTSスナップショットを使用していますので、最新のLTSを持つプロジェクトを作成したら、新しいプロジェクトに従います。

新しいLTSバージョンを使用するように古いプロジェクトを「アップグレードする」場合はどうなりますか?

stack.yamlファイルのresolverフィールドを変更します。この変更は、次にプロジェクトをビルドするときに有効になります。

関連する問題