Apport 支持非 ubuntu 包

San*_*eep 13 package-management apport application-development

一周以来,我一直在阅读有关 apport 及其用法的文章。但无法理解以下内容。

设想:

我开发了一个应用程序并打包了它。它的名字是MyApp.deb. 二进制包名称为MyApp。应用程序安装在路径中/opt/myapplication/bin/MyApp

要求:

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

到目前为止我已经探索过的事情:

Apport 是一个很好的实用程序,它可以生成核心文件。使用/proc/sys/kernel/core_pattern我可以格式化核心文件。这提供了将核心文件重定向到预定义目录、使用 pid 命名核心文件、附加或前置文件路径模式等的灵活性。对于非 Ubuntu 包,我必须编写钩子来生成核心转储(报告) . Apport 收集报告后将上传。

我不明白的事情:

  1. Apport 是我必须看的那个吗??我的意思是它满足我的目的吗?或者我应该看看别的东西?
  2. 我的申请属于什么类型的包裹?我称它为非 ubuntu 吗?第三部分?它是什么?我在文档中看到了不同的术语?
  3. 正如我提到的,MyApp从 运行/opt/myapplication/bin/MyApp,那么核心文件将在哪里生成?当前目录或/var/crash? Apport 是否检测到从 触发的崩溃/opt?它会解释吗?
  4. 重要问题:如果我开发了应用程序并且如果 Apport 将报告上传到 Ubuntu 存储库,则没有意义。那么我如何告诉 Appport 将报告发送给我。
  5. 我收到此错误:executable does not belong to a package, ignoring。那么我做错了什么?
  6. 要让 apport 识别我的包,我是否需要将其设为源包?是强制性的吗?我只想创建一个二进制包?
  7. 我还在文件中的某处看到了 Apport 认可的:
    1. Ubuntu 软件包或
    2. Launchpad 应用程序,但我的应用程序两者都不是。那么在当前场景中,Appport 是如何帮助我的呢?

小智 2

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