unix - 如何发布 *nix 项目?

标签 unix haskell installation

因此,我编写了一个简洁的小程序,它可以分析日语文本并为用户提供有关 Kanji 的各种统计信息。在其中使用,我想向全世界发布这个程序。问题是,我不知道如何创建“发布”。

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

Then just use cabal!



...我听到你说。好吧,我会,除了我的程序有大量的数据文件可以读取,当然程序需要知道这些文件在哪里。通过使用 cabal,可执行文件不会被扔到一些奇怪的项目文件路径中吗:

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



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

我的最终目标是把它变成一个 Arch Linux 包。谁能帮我开始?

对于好奇的人,git repo is here .提前感谢您提供的任何帮助。

最佳答案

在 Cabal 项目中引用数据文件的可移植方式是在 data-files 中命名它们。您的 .cabal 中的属性(property)文件。

Cabal 将生成一个名为 Paths_packagename 的模块它定义了一个函数

getDataFileName :: FilePath -> IO FilePath

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

见:Accessing data files from package code

关于unix - 如何发布 *nix 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10279508/

相关文章:

haskell - lambda演算中变量之间的Alpha等价

installation - 尝试在 Wix 中使用 EnsureTable 修复验证错误

bash - Windows 10 的 Linux 子系统中的 apt 失败并显示 404 Not Found

unix - OCaml:如何获取*当前模块*/我的项目目录的路径?

unix - 拖尾多个文件并grep输出

Haskell uniq -c 模拟器代码解释

function - Haskell 预定义函数与复制源代码的速度

macos - Artifactory 上的 Homebrew 远程存储库

linux - 我的代码有什么问题,为什么不将大写字母 G 的 "EVERY INSTANCE"替换为 Gb,

bash - 使用 join 进行笛卡尔积