如何发布*nix项目?

Col*_*ury 12 unix install haskell

所以,我写了一个简洁的小程序,可以分析日文文本,并向用户提供有关汉字使用的各种统计数据,我想向全世界发布这个程序.问题是,我不知道如何创建"发布".

我意识到*nix系统经常将可执行文件(或符号链接)放在像/ usr/bin这样的地方,并且构建脚本经常自动将它们放在那里,但事实证明我去了Haskell并写了这个东西.

然后只使用阴谋!

......我听你说.好吧,我会,除了我的程序有大量的数据文件,它读出来,当然程序需要知道这些文件的位置.通过使用cabal,可执行文件不会被抛到一些奇怪的项目文件路径a:

/usr/share/haskell/cabal/morecabal-1.0.4/myproject-1.3.4.1.a/thisisridiculous/

目前我从其源目录中运行可执行文件,它正在"./data"中查找数据文件.是否有典型的安装路径格式,所以我可以提前告诉我的程序在源查找数据的位置?

我最终的目标是使其成为Arch Linux软件包.任何人都可以帮助我开始吗?

对于好奇,git repo就在这里.在此先感谢您提供任何帮助.

ham*_*mar 12

在Cabal项目中引用数据文件的便携方式是data-files.cabal文件的属性中命名它们.

Cabal将生成一个Paths_packagename定义函数的模块

getDataFileName :: FilePath -> IO FilePath
Run Code Online (Sandbox Code Playgroud)

您的代码可以用来确定数据文件的安装位置.

请参阅:从包代码访问数据文件

  • @fosskers:您可能还想查看Hackage上可用的各种工具,以便从Cabal软件包中制作特定于发行版的软件包,例如[cabal2arch](http://hackage.haskell.org/package/cabal2arch). (5认同)

bri*_*ice 8

看看现有的Haskell项目如Gitit是如何为Arch linux打包.特别是PKGBUILD.

您还可以下载gitit tarball并查看如何data-files:gitit.cabal文件中使用该指令.

我不读Haskell,但根据我对源的理解,文件Paths_gigit.hs(可在此处找到.)由cabal生成,因此您只需担心相对路径.然后只需要导入它并使用该getDataFileName功能.

Arch包装:

cabal包装:

两者的包装:

  • 关于Archlinux wiki的Haskell Package 指南

  • 我会爬到最近的山上,在山顶冥想而不是下降,直到我理解PKGBUILD使用data-files参数.谢谢. (5认同)