問題タブ [haskell-stack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - Amazon Linux でスタックを使用して Haskell プログラムを静的にリンクし、AWS Lambda で使用する
AWS Lambda で実行するために、EC2 インスタンスで静的にリンクされた「hello world」Haskell プログラムを構築しようとしています。
「単純な」stack.yamlへの私の唯一の変更は次のとおりです。
最初に次のエラーが発生しました。
私が最初に試みたのは、gmp-devel をインストールすることでした。
しかし、それは問題ではないようです。
次に、glibc-static と gmp-static をインストールしましたが、表示されるエラーは次のとおりです。
しかし、同じ「stack build」コマンドをもう一度実行すると、エラーなしで完了します。
security - Stack は、依存関係が改ざんされていないことを確認できますか?
Cabal の問題の 1 つは、Hackage からパッケージを取得することです。これについては以前に説明したように、悪意のあるコードが侵入する方法が多数あります。
Stack は状況を改善しますか? また、それに対して何らかの予防措置を講じますか? 特定のプロジェクト用に外部からダウンロードされたすべてのコードが検証されていることを確認することは可能ですか?
これには追加の依存関係が含まれます。宣言されているものがある場合、たとえば、ダウンロードされたパッケージの予想されるハッシュを提供するために、スタックにそれらを検証させることは可能ですか?
haskell - Haskell スタックと C ライブラリ
これはおそらくこの投稿の複製です。しかし、それが得た唯一の答えは私にはうまくいかないようです. 私はLinux Ubuntu Trustyを使用しています。
/usr/local/lib (LD_LIBRARY_PATH に含まれています) に独自の C ライブラリ libMyLib.so があります。
この C ライブラリへの haskell バインディングを通常の方法で書きました。Main.hs :
このプログラムを ghci でテストし、ライブラリとそれを見つけることができるディレクトリを渡しますghci /usr/local/lib/ -lMyLib
。問題なく動作します。
今、独立してスタックの使用を開始しようとしています。このガイドに従って、重要なプログラムの例をいくつか構築することができました。
ただし、上記の FFI Main.hs プログラムをスタックビルドできません。これは、C ライブラリが見つからないというエラーが表示されるためです。
初挑戦 :
me@user:~/myProject$ stack build
2 回目の試行の前に、次を追加しました:
- extra-lib-dirs: [/usr/local/lib]
stack.yaml ファイルに追加しました。
- extra-include-dirs: [/usr/local/lib]
stack.yaml ファイルに追加されました (ただし、おそらく必要ありません)。-実行可能ファイルまたはライブラリのラベルの下にあるプロジェクトの cabal ファイルに
追加されました (私も同じ結果を試しました)。 extra-libraries: lMyLib
extra-libraries: libMyLib.so
2回目の試行:
me@user:~/myProject$ stack build
これで、必要な C ライブラリがわかりました。これは、適切な余分なライブラリ ディレクトリが追加されている間 (エラー メッセージの最後を参照)、それについて不平を言ったからです。コメント(you may need the "-dev" version)
がここに関連しているかどうかはわかりません。
私の質問:ここで立ち往生しています。stack build
Cライブラリを見つけるために、yamlまたはcabalファイル、または他の場所に対して他に行うべきことはありますか?
haskell - Haskell スタックと C ライブラリ II
これはこの投稿のフォローアップです(残念ながら)。
にある独自の C ライブラリ への FFI 呼び出しがいくつかstack build
あるプロジェクトを試みています(これは に含まれています)。 Main.hs
libMyLib.so
/usr/local/lib
LD_LIBRARY_PATH
stack
コマンドを使用してGHCi (外部) で実行するとghci /usr/local/lib/ -lMyLib
、すべて正常に動作します。
ただし、実行時stack build
に、リンク関連の問題があります。
関連する cabal ファイルのエクストラは次のとおりです。
実行すると、 が正しいディレクトリ ( ) を指しているstack exec env
ことが示されます。このディレクトリをファイルに追加したことを確認するためです ( )。LD_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/local/lib
.yaml
extra-lib-dirs: [/usr/local/lib]
私はさまざまな GCC コンパイル オプションを試しました。たとえば、 ... の-pthread
代わりに、ファイル パラメーターを介して、または( ) を介して直接実行しましたが、役に立ちませんでした。-threaded
.cabal
stack build
stack build --ghc-options="-foo..."
私の質問:他にどこを見るべきですか? 問題の原因 (明らかなリンクの問題) を見つけるには、どのようなテストを実行すればよいですか?
== 編集 ==
インストールされた同じ C ライブラリの 2 つのバージョンがあり、1 つは別の C ライブラリに依存していますlibOther.so
。私が最終的にそれに気づいたとき、私はそれを cabal ファイルに追加し、それはうまくいきました:
haskell - Yesod の「stack build」の問題
Ubuntu Trusty x86_64 で実行されるクリーンな (新しい) VPS サーバーで、新しい Yesod ベースのプロジェクトをスタックビルドしようとしています。
質問に問題がある場合、メモリ情報は次のとおりです。
スタック プロジェクトの cabal ファイルの一部を次に示します。
依存関係には yesod 以外のパッケージがあり、依存関係に yesodstack build
を追加しないと、さまざまなパッケージが正常にダウンロードされ、すべて正常に見えます - もちろん、yesod も必要なためビルドを完了できません。
ただし、依存関係のリストに yesod を追加すると、Progress: 0/96Killed
エラー メッセージが表示されます。依存関係リストに他のパッケージが存在するかどうかは問題ではないようです。のダンプは次のstack build --verbose
とおり です。
me@user:~/proj-web01$ stack build --verbose
これらの出力メッセージには、最後に何が起こるかの手がかりを提供するものは何も表示されProgress: 0/96Killed
ず、警告も何も表示されません... Webで同様の問題を検索しましたが、何も見つかりませんでした。
私の質問:何を探すべきですか、他にどこを見ればよいですか? 問題の原因がどこにあるのかを知るために行うべきテストはありますか? ありがとう。
==編集==
実際、この問題は再現がはるかに簡単です。
他の小さいパッケージのインストールは問題なく動作します (例: stack install csv
...)
Sibi のアドバイスに従って、VPS のスワップ領域を増やそうとしましたが、ユーザー レベルでは許可されていないようです ( U&L ディスカッション)。この制限には裏技がありますが、 yesodをインストールしようとしても何も変わらないようです。
haskell - ディレクトリ構造 Yesod とスタック
次のような通常のディレクトリ構造を持つ単純な Yesod プロジェクトがあります。
Main.hs
通常、プログラムはapp
ディレクトリ の下にあるスタックでこのプロジェクトをビルドしようとしています。
すべての Yesod 構造をapp
dir の下に配置しようとしました ( app
dir は.
上記です)。
プロジェクトの cabal ファイルは次のようになります。
しようとするとstack build
、次のエラー メッセージが表示されます。
widgetFileNoReload
app/templates
ディレクトリにある「default-layout」ファイルの場所がわかりません。
私の質問: cabal ファイルを別の方法で作成する必要がありますか、それともテンプレート、Handler... フォルダーを別の場所 (src など) に配置する必要がありますか? スタックを使用する場合、最も自然なディレクトリ構造は何ですか? または、通常の Yesod ディレクトリ構造に合わせてスタック パラメータ (cabal および yaml ファイル) を設定する方法を教えてください。
haskell - haskell-stack 取得 TlsExceptionHostPort エラー
しばらくの間、vagrant を介して Debian 8.2 内で stack/ghc を実行しています。今朝:
を削除しても同じエラーが残ります~/.stack
。私は何かを台無しにしましたか?
haskell - GHCJS コンパイラで新しい Stack プロジェクトを作成しようとするとエラーが発生する
http://docs.haskellstack.org/en/stable/ghcjs.htmlの指示に従って、GHCJS をコンパイラとして NixOS に新しい Stack プロジェクトをセットアップしようとしています。
stack.yaml ファイルに次のコード行を含めました (タブ スペースで問題が発生するため、すべて 1 行で記述します)。
実行したときに次のエラーメッセージを取得しましたstack setup
setup-info
さらに、スタックがフィールドについて不平を言っていたため、フィールドを削除しようとしましたが、stack.yaml
ファイルは次のようになりました。
stack setup コマンドで次の出力が生成されます。
なぜこれが起こるのか誰にも分かりますか?
haskell - スタックでの HSpec の使用
私は次のアーキテクチャを持っています:
私の .cabal ファイルには次のものが含まれています
しかし、私がするとき
HSpec がテスト int MessageSpec.hs を見つけられません。
0.0002 秒で終了 0 例、0 失敗
Spec.hs は正しい入力です: {-# OPTIONS_GHC -F -pgmF hspec-discover #-}
私のMessageSpecモジュールは公開しています:モジュールMessageSpec(メイン、スペック)。
すべてのテストを実行するスタック プロジェクトを作成する方法を見つけるのを手伝ってくれませんか。
ありがとうございました、
haskell - スタック セットアップ 7.10.3 は 7.10.2 のみをインストールします
stack setup 7.10.3
誰かがインストールする理由を説明できます7.10.2
か?
iHaskell をインストールしようとしているため、これは問題です。
私は別の方法でインストール7.10.3
しました...そしてそれは私のコンピューターの別の場所にある/opt/ghc/7.10.3
ので、今ではGHCの2つの異なるバージョンが浮かんでいます. さらに混乱させるためにwhich
、スタックにインストールしたバージョンを示します。
そもそもスタックインストールできない7.10.3
のはなぜですか?少なくともstack
、どこに置いたかはわかりました。