13

(始める前に:名前にCabalが含まれ、Haskellと関係があるすべてのものにCabalを使用します。)

先日、いつもの「YをインストールするにはXを更新する必要がありますが、これにより依存関係Zが壊れます」という問題が再び発生したので、私はただ尋ねたいと思いました。次の機能:

  • バージョニング:パッケージの複数のバージョンを並べてインストールし、パッケージに目的の依存関係を選択させます。パッケージバージョンが指定されていない場合は、入手可能な最新のものを使用してください。
  • パッケージを更新する-またはそれ以上の場合は、最新バージョンもインストールします。
  • パッケージを削除する
  • パッケージの整合性を確認する

このリストがどこに向かっているのかがわかります。今のところ、Cabalはやや洗練されたビルドシステムのように感じます(初めて使用を開始するときに、パッケージに必要なBaseのバージョンを調べてみてください)。これには、中途半端なパッケージインストーラーが付属しています。

では、もう一度質問します。Cabalがフル機能のビルド/パッケージシステムを作成しなかったのはなぜですか?現在の状態につながったいくつかの設計上の決定があったと確信しています。

(この質問は、Redditの暴言に多少触発されましたが、その男とは反対に、上記で誰かを怒らせるつもりはありません。):-)

4

1 に答える 1

10

同じパッケージの複数のバージョンをインストールすることは今のところ問題なく機能します (試してみてください) が、同じパッケージ バージョンの複数のインスタンスcabal install ansi-terminal-0.5.4 && cabal install ansi-terminal-0.5.5をインストールすることはできません。これは、気密ビルドを実装し、「依存地獄」の問題を解決できるようになるため、私たちが非常にサポートしたいものですが、完全に自明ではありません。今年、複数インスタンスのサポートを ghc-pkg と Cabal に追加する GSoC プロジェクトがありましたが、パッチはまだメインラインにありません。プロジェクトの成果についてのHIW 2012トークのビデオと、内部設計の説明です

他の質問については、cabal upgrade現在インストールされているすべてのパッケージの最新バージョンをインストールするためのコマンドが実際にありましたが、インストールが中断される可能性があるため削除されました (繰り返しますが、同じパッケージ バージョンの複数のインスタンスをサポートすると、これが修正されます)。 )。アンインストールのサポートは、しばらく前からウィッシュ リストにありましたが、まだ誰もそれを実装する時間がなかったというだけです。デジタル署名されたパッケージと HTTPS についても同じことが言えると思います。

さらに、これらの機能の実装に興味がある場合は、Cabal へのパッチをいつでも歓迎します。また、GitHubへの移行により、コードの寄稿がこれまでになく簡単になりました (余裕があれば、現金の寄贈も問題ないと思います)。Well-Typedは、これについて喜んでお話します)。

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

于 2012-10-30T01:04:13.167 に答える