私はローカルの両方を生成Haskellのプロジェクト、執筆していますスタックを使用して、グローバルに使用するためにローカルに作成されたHaskellモジュールをインストールするにはどうすればよいですか?
- バイナリ実行ファイルを、そして私がしたい
- いくつかの新しいHaskellのモジュールは、私の他、Haskellのもと、実行可能ファイルへのアクセス可能。
後:
stack build
stack install
私はそれを見つけることだ:
- バイナリ実行(#1を、上記)は、任意のディレクトリから、うまく動作します。
- しかし、新しいHaskellモジュール(上記の#2)は、私がプロジェクトディレクトリ内から実行しているときにのみ見つかります! (すなわち、上記の#1以外の実行ファイルについて)
どこからでも新しいモジュールを見つける必要があります。 これをどうすれば実現できますか?
[この質問はほんの数時間前です](https://stackoverflow.com/questions/47989939/is-there-a-declarative-way-to-specify-packages-to-be-installed- global-projeへ)、そこに好きなようにスタックの代わりにCabal-installを使うことをお勧めします。モジュールをグローバルにインストールすることについて心配する必要はありません。 – leftaroundabout
ご意見ありがとうございます。はい、「cabal install」は私の問題を解決しました。しかし、今では2つの別々の、並行した、大部分の冗長なHaskellインストールがハードドライブスペースを噛み砕いてしまいました。それはひどく無駄で不要なようです。私が作り出しているバイナリ実行可能ファイルは、どんなディレクトリからでもうまく動作できるので、特に怒っています。新しいHaskellモジュールを私のシステムのどこからでも(インポートしてから)見つける方法を知っていることを意味します。ですから、なぜ私はこれらの新しいモジュールを他のHaskell実行可能ファイルにも利用できないのですか? – dbanas
これは絶対に不要なので、私はラップトップに_only_ Cabal-installを、TravisにはStackだけを使用しています。 - 実行ファイルがインポートされたモジュールを見つける方法は、コンパイラがソースファイルに対してどのようにそれらを見つけるかとは非常に異なります。実際には、静的にリンクすると、すべてのものが既にバイナリに含まれているため、必要なものはありません。動的にリンクすると、特定のハッシュされたダイナミックライブラリファイルへのハードコードされたパスを検索しますが、これはバージョンリゾルバとリンカが以前の作業を完了したためにのみ機能します。 – leftaroundabout