如何打包 Haskell 项目供 Linux 使用
How to package Haskell project for Linux use
这是我的 setup.cabal 文件:
-- Initial SparkSetup.cabal generated by cabal init. For further
-- documentation, see http://haskell.org/cabal/users-guide/
name: SparkSetup
version: 0.1.0.0
-- synopsis:
-- description:
-- license:
license-file: LICENSE
author: user
maintainer: user
-- copyright:
-- category:
build-type: Simple
-- extra-source-files:
cabal-version: >=1.10
executable SparkSetup
-- main-is:
-- other-modules:
-- other-extensions:
build-depends: base >=4.7 && <4.8
-- hs-source-dirs:
default-language: Haskell2010
当运行 cabal build
这会在dist文件夹中生成一个SparkSetup.exe文件,可以直接执行。 Linux 有类似的东西吗?是否可以生成一个 .sh 文件来打包要在 Linux 上执行的 Haskell 代码?
更新:我在 Windows 并且想为 Linux / Unix
交叉编译
构建一个适用于所有常见发行版的二进制文件充其量是一项具有挑战性的任务。人们喜欢Joey Hess managed to pull that through,但一般不推荐
一种选择是将您的代码上传到 hackage, instruct your users to install the Haskell Platform(如果您与旧版本的 GHC 保持兼容,那么在基于 Debian 的系统上 运行 宁 apt-get install haskell-platform
一样简单分布) 然后 运行 cabal install SparkSetup
.
为了确保您的包使用各种编译器构建,您可以使用 Herbert’s excellent travis setup,至少只要您的代码在 GitHub.
如果您想分发一些几乎无处不在且安装超级简单的二进制文件,您可以随时使用 Docker。另外,检查 stack,他们似乎对这类事情提供了很好的支持。
这是我的 setup.cabal 文件:
-- Initial SparkSetup.cabal generated by cabal init. For further
-- documentation, see http://haskell.org/cabal/users-guide/
name: SparkSetup
version: 0.1.0.0
-- synopsis:
-- description:
-- license:
license-file: LICENSE
author: user
maintainer: user
-- copyright:
-- category:
build-type: Simple
-- extra-source-files:
cabal-version: >=1.10
executable SparkSetup
-- main-is:
-- other-modules:
-- other-extensions:
build-depends: base >=4.7 && <4.8
-- hs-source-dirs:
default-language: Haskell2010
当运行 cabal build
这会在dist文件夹中生成一个SparkSetup.exe文件,可以直接执行。 Linux 有类似的东西吗?是否可以生成一个 .sh 文件来打包要在 Linux 上执行的 Haskell 代码?
更新:我在 Windows 并且想为 Linux / Unix
交叉编译构建一个适用于所有常见发行版的二进制文件充其量是一项具有挑战性的任务。人们喜欢Joey Hess managed to pull that through,但一般不推荐
一种选择是将您的代码上传到 hackage, instruct your users to install the Haskell Platform(如果您与旧版本的 GHC 保持兼容,那么在基于 Debian 的系统上 运行 宁 apt-get install haskell-platform
一样简单分布) 然后 运行 cabal install SparkSetup
.
为了确保您的包使用各种编译器构建,您可以使用 Herbert’s excellent travis setup,至少只要您的代码在 GitHub.
如果您想分发一些几乎无处不在且安装超级简单的二进制文件,您可以随时使用 Docker。另外,检查 stack,他们似乎对这类事情提供了很好的支持。