29

stack と stackage.org の使用方法を理解しようとしています。最初にインストールして使用したとき、stackage.org は LTS-3.8 (「リゾルバー」) でした。それ以来、stackage.org は現在 LTS-3.11 を持っています。

まず、これが何を意味するのかを確認したいと思います。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 バージョンを使用するために古いプロジェクトを「アップグレード」したい場合はどうなりますか?

4

1 に答える 1

31

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

丁度。(また、LTS 3.8 セットに含まれていないパッケージが必要な場合は、.stack のextra-depsセクションで指定できますstack.yaml。stack は Hackage からそれらを取得し、LTS スナップショットや他のプロジェクトに影響を与えることなく、プロジェクト用に個別にインストールします。)

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

egstack new projectname --resolver=lts-3.11を使用して、新しいプロジェクトのリゾルバーを設定します。stack は、既に使用している最新の LTS スナップショットにデフォルト設定されるため、最新の LTS を使用したプロジェクトを作成すると、将来の新しいプロジェクトがそれに続きます。

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

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

于 2015-10-31T02:23:12.613 に答える