c# - 如何使用 MonoDevelop 打包我的 linux 应用程序?

标签 c# linux packaging monodevelop

我有一个爱好项目,它是使用 MonoDevelop 用 C# 编写的。一段时间以来,我一直在尝试了解 linux 打包,但我总是感到沮丧和不知所措。

我的程序包括:

  • 一个库项目(“Generator”),它使用我的程序创建的数据。
  • 一个使用 Gtk# 的 ui(“界面”)项目。该项目有两个子目录:“glade”(gtk 用于构建小部件的 xml 文件)和“book”(我的程序使用的数据)。
  • 库和接口(interface)项目都使用的实用程序项目(“Utils”)。
  • 刚刚启动界面的主项目(“MyProgramName”)。

(我认为)我想做的事情真的很简单(我认为):

  • 编译我的应用程序
  • 复制 .exe 和 .dll 文件(到/usr/local/bin?)
  • 复制“book”目录(到/usr/local/bin?)
  • 复制“林间空地”目录(到/usr/local/bin?)

哦,我想把它作为一个 .deb 包来做。我想如果我能让 tarball 工作,一个 .deb 包应该不会太麻烦,但这就是我最终想要做的。

我仍然不确定该怎么做。我使用 MonoDevelop 创建了一个 Tarball。当我安装 tarball(使用 ./configuremakesudo checkinstall)时,它似乎安装了可执行代码(甚至创建了一个命令运行程序),但忘记了“book”和“glade”目录。

我该怎么做呢?对不起,如果这是一个基本/广泛的问题。我一直在谷歌搜索这个问题,但我似乎找不到任何不假设我知道包装基础知识的东西(即使它声称它不假设这一点)。

最佳答案

Debian 软件包就像 tar 文件 - 它们包含文件系统的副本。要创建 Debian 软件包...

  1. 将压缩包安装到构建目录中。
  2. 添加一个包含控制文件的 DEBIAN 目录。我找到了 this article有帮助。
  3. 使用 dpkg --build 创建包。

我将从学习 GNU 的自动工具开始:autoconf 和 automake。它们使在构建目录中安装程序变得非常容易。您提到了 ./configure。所以我假设这个项目已经有了一些结构。从描述中,听起来该项目可能需要...

  • configure.in 中的条目用于“book”和“glade”中的文件。
  • “book”和“glade”中的 Makefile.am 文件。

将它们放在一起,以下命令将生成一个名为 project.deb 的包文件。

# ./configure --prefix build/usr
# make && make install
# dpkg --build build project.deb

关于c# - 如何使用 MonoDevelop 打包我的 linux 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1738957/

相关文章:

c# - 我可以在 IProgress.Report 上等待吗

c# - 使用 JSON.net 库 (C#) 替换 JSON 字符串中的值

linux - 在提示符下将输入的命令加粗

linux - 如何申请 "non-unified diff"?

c# - 直接在对象列表中增加一个 int

c# - dapper:使用 QueryMultiple 同时获取结果和计数

node.js - 当我使用 PM2 + Docker 启动我的应用程序时,只需运行并退出

MacOS:应用程序包中插件的 libvlc 路径

Python 守护进程打包最佳实践

python - 将整个 Python 应用程序打包为 PEX 文件