如何发布* nix项目?

时间:2012-04-23 11:18:10

标签: unix haskell install

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

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

  

然后只使用阴谋!

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

  

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

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

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

好奇的是git repo is here。提前感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:12)

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

Cabal将生成一个名为Paths_packagename的模块,用于定义函数

getDataFileName :: FilePath -> IO FilePath

您的代码可用于确定数据文件的安装位置。

请参阅:Accessing data files from package code

答案 1 :(得分:8)

了解现有的Haskell项目(例如Gitit)是如何打包的for Arch linux。特别是PKGBUILD。

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

我不读Haskell,但根据我对来源的理解,文件Paths_gigit.hs(可以找到here。)是由cabal生成的,所以你只需要担心相对路径。然后只需要导入它并使用getDataFileName函数。

Arch的包装:

cabal包装:

两者的包装: