批准对非Ubuntu软件包的支持


13

到目前为止,我已经阅读了有关审批及其用法的信息,已有一个星期了。但是无法理解以下事情。

场景:

我已经开发了一个应用程序并将其打包。它的名字叫MyApp.deb。二进制软件包名称是MyApp。应用程序安装在path中/opt/myapplication/bin/MyApp

需求:

  1. 当我的应用程序崩溃时,我希望能够收集核心转储。
  2. 在随后的每个崩溃中,它都必须创建一个新的崩溃,但不能覆盖现有的崩溃。使用当前时间戳自动重命名等对我有帮助。
  3. 在客户计算机上安装应用程序时,安装程​​序不得修改其系统范围的参数。例如,我不能更改其核心文件生成方式,因为用户/客户可能会讨厌我的应用程序,因为未经他的同意我将更改其系统参数。
  4. 我同意核心文件生成的路径。当前目录或/var/crash

到目前为止,我一直在探索以下内容:

Apport是一个不错的实用程序,可用于生成核心文件。使用/proc/sys/kernel/core_pattern我可以格式化核心文件。这提供了灵活性,可以将核心文件重定向到预定义的目录,为核心文件添加pid,文件路径模式附加或以前缀开头等名称。对于非Ubuntu程序包,我必须编写钩子以生成核心转储(报告) 。收集报告后对其进行分配,它将上载。

我不明白的事情:

  1. 是Apport我必须要看的吗?我的意思足以满足我的目的吗?还是我应该看看别的东西?
  2. 我的应用程序属于哪种软件包?我称之为非Ubuntu吗?第三部分?它是什么?我在文档中看到不同的术语吗?
  3. 正如我提到的,MyApp从运行/opt/myapplication/bin/MyApp,那么核心文件将在哪里生成?当前目录或/var/crash?Apport是否检测到从触发的崩溃/opt?它会解释吗?
  4. 重要问题:如果我已经开发了该应用程序,并且如果Apport将报告上载到Ubuntu信息库,则没有任何意义。因此,我该如何告诉Apport将报告发送给我。
  5. 我收到此错误:executable does not belong to a package, ignoring。那我在做什么错?
  6. 为了识别我的包裹,我需要使其成为源包裹吗?它是强制性的吗?我只想创建一个二进制包?
  7. 我还在Apport可以识别的文档中看到了以下内容:
    1. Ubuntu软件包或
    2. Launchpad应用程序,但我的应用程序都不是这些。那么在当前情况下Apport对我有什么帮助?

目前Apport的限制之一-它必须是ubuntu存储库中的软件包,或者至少是Launchpad上的项目。后者适合您吗?
jokerdino

感谢您的及时答复和对我冗长的问题的明确答复。顺便说一句,我在上一篇文章中没有提到我的应用程序是专有的。我们计划将应用程序托管在ubuntu存储库上。但这可能是从现在开始的几个月。到那时,我必须手动管理核心文件。
Sandeep

应用程序用什么语言编写?还要检出为编写Apport包挂钩而进行的类
jokerdino

用C ++编写的应用程序。链接中的以下几行让我感到困惑:“ <openweek4>问题:分配钩子可以与第三方应用程序一起使用吗?openweek4:我实际上对那个问题不确定。如果您查看ubuntuone-client钩子-会报告错误到Launchpad,但涉及到ubuntuone项目。因此,这很有可能。但是,审批必须能够与适当的错误跟踪系统进行通信。”
Sandeep

作者说,只要在apport和3ty paty应用程序的错误跟踪系统之间建立了通信,第三方应用程序就有可能利用apport获取报告。如何做到这一点?如果可以实现,那么我不必等待我的应用程序在ubuntu repo或launchpad中注册。
Sandeep

Answers:


2
  1. 它看起来很近,但可能不是您所需要的。分配会自动更改/ proc / sys / kernel / core_pattern。因此,如果无法更改,那么您很不幸。另一方面,apport现在是默认的Ubuntu安装,因此几乎每个使用Ubuntu的人都已经更改了该参数。我还不知道有什么方法可以告诉Apport保留比特定应用程序最近的崩溃更多的信息,但是只要上传了每次崩溃,这都不是问题。
  2. 我将其称为第三方。
  3. Apport支持/ opt中安装的可执行文件。您需要在/ opt / path / to / your / app / share / apport / package-hooks中提供一个钩子。
  4. 您可以在包挂钩中为包设置自定义崩溃数据库。但是,如果崩溃数据库的行为不像Debbugs或Launchpad,则还需要创建一个自定义崩溃数据库连接器实现,如果不在/ opt之外安装python文件,这看起来是不可能完成的。
  5. 可执行文件需要由dpkg安装,这意味着您需要将其打包为.deb文件。
  6. 您必须创建源包才能创建二进制包,因为二进制包是从源包创建的。您不需要分发源包。
  7. Apport适用于打包为.deb文件的任何内容。

看起来这可能是一个非常有用的答案,但是在解释中还存在一些空白:“提供一个钩子”意味着什么?“像调试器或启动板一样工作”到底是什么意思?指向裁判的指针好吗?
BobDoolittle 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.