2012-10-29 27 views
13

は(私が開始する前に:私は、その名前で派閥があり、Haskellのとは何かを持っているすべてのための陰謀団を使用するつもりです。)なぜCabalは完全なパッケージマネージャーではありませんでしたか?

あなたがにXを更新する必要があり、」いつもしていたましたなぜ陰謀団は、特に以下の機能を備えた、完全なパッケージマネージャになるように設計されていません:

  • バージョニングYをインストールするが、これは他の日に再び依存Z」の問題を破るだろう、私はちょうど尋ねると思いました:複数のバージョンのパッケージを互いに並べてインストールし、パッケージがそのdesirを選択できるようにする依存関係。パッケージのバージョンが指定されていない場合は、最新のものを使用してください。
  • 更新パッケージ以上 - 最新のバージョンをインストールしてください。
  • このリストが起こっている場所を見パッケージ
  • チェックパッケージの整合性

を削除します。今、私にとって、カバルはやや洗練されたビルドシステムのように感じます(ハーフベイクドのパッケージインストーラが付属しています。

質問:なぜCabalはフル機能のビルド/パッケージシステムではありませんでしたか?現在の状態につながった設計上の決定があったと確信しています。

(この質問はややa rant on Redditに触発されたが、その男とは反対に、上記で誰を怒らせるという意味ではありません。):-)

+3

この質問はおそらくredditにもあるはずです - あまりにもSOに所属するプログラミング問題から除外されています。 –

+4

FAQから*ここで質問する*:「プログラマーがよく使うソフトウェアツール」?チェック。 "プログラミングの専門家に固有の実用的で解決不可能な問題"?チェック。 – David

+0

あなたはフル・パッケージ・マネージャーにCabalを肉体化するためにボランティアしていますか? –

答えて

10

は、同じパッケージの複数のバージョンをインストールすると、今完璧にうまく動作します( cabal install ansi-terminal-0.5.4 && cabal install ansi-terminal-0.5.5を試してください)、複数のインスタンスをインストールすると、同じパッケージバージョンのはインストールされません。これは、私たちが非常に多くのことをサポートしたいと思っているものです。それはhermetic buildsを実装し、 "依存関係の地獄"の問題を解決することができるからですが、それほど些細なことではありません。今年はghc-pkgとCabalに複数のインスタンスのサポートを追加するGSoCプロジェクトがありましたが、パッチはまだメインラインにはありません。 Here's a video of the HIW 2012 talk about the project's resultsおよびhere's the description of the internal design

その他の質問については、現在インストールされているすべてのパッケージの最新バージョンをインストールするために実際にはcabal upgradeコマンドが使用されていましたが、インストールが中断される可能性があるため削除されました(同じように、パッケージのバージョンはこれを修正するでしょう)。アンインストールのサポートは、しばらくの間、wish listに載っていた、it's just that no-one had time to implement it yet。デジタル署名されたパッケージやHTTPSでも同じことが起こると思います。

さらに、これらの機能が実装されていることに興味がある場合、Cabalへのパッチはいつでも歓迎され、GitHubへの移行により、コードの提供が容易になりました。それは - 私はWell-Typedはこれについてあなたに話すことが非常にうれしいと思います)。

更新(9月2016):現在の状況に関する最新情報は、この記事のEdward Z. Yang:cabal new-build is a package managerを参照してください。

+0

私はHaskellの設定をどのように維持するかを理解することに苦労しています(どのようなものが「うまく動作する」というpip/Pythonモデルを持つ人物として)。たとえば、Haskel Platformが変更されたとします(GHCが更新されたとします)。 (a)いくつかの追加パッケージ、(b)Jupyterに(c)インストールされたIHaskellを含む、私の設定を更新するために必要なことは?プラットフォームを削除して再インストールし、Cabalで私の追加パッケージを再インストールし、IHaskelを再インストールし、 'ihaskell install'を再実行する必要がありますか? – orome

関連する問題