Ubuntu 应用程序大比拼结束后,我想将一些为 Windows 编写的工具带到软件中心。由于我是 Linux 编程新手,因此我还有一些问题:
1)我有一些依赖关系(例如爆破)。我读到我可以快速配置依赖项,以便它们将随我的工具自动安装。我需要在文件、链接、工具名称或其他内容中添加什么?举个例子就好了。
2) 这些依赖项会产生多个(较大的)输出文件。这些文件在哪里创建?我应该将它们移动到应用程序文件夹中进行解析吗?
3) 我的应用程序创建了多个文件。在快速创建的应用程序文件夹结构中,将它们存储到哪里是最佳位置?文件的读写可访问性如何?
4)还有什么我需要注意的或者与 Windows 操作系统不同的提示或建议吗?
非常感谢您的帮助!
答案1
我是瓦尔奇,这是一个 C++ 应用程序,因此不能使用 Quickly 构建和打包。
因此,我的回答将包括有关您的问题的一般信息,这些信息在任何情况下都应该适用(据我所知)。
现在回答您的问题:
(1)
你可以将 Ubuntu 默认存储库中的依赖项设置为应用程序的依赖项。你可以不是包括来自 PPA 等的依赖项。您可以在 debian/control 文件中添加依赖项。我的应用程序的示例 debian/control 文件如下:paste.ubuntu.com/1113694。
如您所见,有 2 个“Depends”字段,在 Build-Depends 中,您必须指定构建应用程序所必需的内容。我非常确定 Quickly 应该会自动填充此字段。运行应用程序所需的其他软件包应列在 Depends 字段下。这是您必须指定您拥有的任何额外依赖项的地方。您必须指定的是用户应下载和安装的软件包名称(当然,此过程是自动的)
(2)
据我从您的问题中了解到,依赖项是可以运行并生成大型输出文件的独立程序。现在,这实际上取决于这些文件的存储位置。我会说:
如果您的应用程序间接创建了这些大的输出文件,您可以选择将它们保存在任何您喜欢的地方
如果用户单独制作了这些文件,那么你可以让用户从你的应用程序内部选择其中一个文件进行处理。
这实际上取决于这些文件的生成方式以及它们与您的应用程序有何关系。
如果您只是创建一些文件,然后想用应用程序处理它们,那么您应该使用 /tmp 目录。运行依赖程序并引导它将文件生成到 /tmp,然后让您的程序从那里读取和解析文件。
(3)
据我所知(因为我也参加了这个特定的比赛),Quickly 创建的结构位于 /opt/extras.ubuntu.com/programname 下,用户没有写入权限。这意味着,如果用户正常打开您的应用程序,并且您在应用程序内选择将程序的文件保存在 /opt/extras.ubuntu.com/programname 下,则用户将无法保存这些文件。相反,他必须以 root 权限运行您的应用程序,这通常是不鼓励的。
同样,这取决于这些文件的用途。这些文件是否可供用户读取,还是只能在您的应用程序内部使用(类似于配置文件)?如果是前者,那么您应该让用户选择保存这些文件的位置。如果是后者,那么您应该将这些文件放在 ~/.config/ProgramName/ 目录下。 ~/.config/ProgramName 是所有应用程序保存其配置文件的目录。
根据评论的更多请求进行编辑:
一般来说,在您的场合,您应该做以下事情:
- 您的程序根据用户输入生成文件(这些文件将进入 ~/.config/ProgName,因为它们可能会被重复使用,不应删除)
- 您所依赖的工具读取这些文件(来自 ~/.config/ProgName)并生成一些其他文件(结果进入 /tmp)
- 您的程序从 /tmp 获取生成的文件(来自工具)并执行任何计算/绘图等...在完成您的应用程序对 /tmp 下的最终文件所执行的操作后,最好将其删除。
至于您是否对配置文件夹具有读/写权限,用户对 ~/(您的主目录)下的所有内容都具有完全读/写权限,因此,~/.config/ 下的所有内容也属于他。请注意,用户对 /tmp 也具有读/写权限。
提示:您可以使用 mktemp 命令在 /tmp 下生成具有随机名称的临时文件