1. 程式人生 > >Haskell包管理工具,cabal, stack, nix

Haskell包管理工具,cabal, stack, nix

Haskell專案中,經常用到包管理工具,有些用cabal,stack, nix。這裡對這三個工具做個簡要的說明。

首先要明確的是cabal庫,是一個haskell包集合的庫,提供了不同的包以及不同的版本。cabal-install和stack均是前端基於cabal庫使用的工具。

cabal-install是最早用的工具,用於haskell包的管理。提供了規範檔案,來構建包,同時也提供了工具來進行包的下載安裝cabal-install。

stack是一個可以替代cabal的工具,提供了更加便利的包管理,對於包的依賴,不同的版本,均提供了很好的支援。同時stack也支援不同的ghc發行版本管理。可以將不同的ghc發行版本來進行本地安裝,通過配置檔案,來進行選擇。

stack通過提供沙盒機制,來進行隔離,從而使得不同版本應用之間不會衝突。

nix其實像stack,都是提供專案程式碼的包依賴,將這些依賴的包編譯並且執行。但是stack要求依賴的包都是Haskell包,而nix是一個更加通用的包管理工具,可以是任何的包。它提供了一個庫管理的通用方法,每一個庫不同的版本,均有一個唯一的標識,這樣可以做了多個包多個版本的管理。nixos就是原生包含了nix管理能力的linux的一個髮型版本。