Skip to the content.

14. Reporting bugs


实时系统远非完美,但我们希望在您的帮助下使其尽可能接近完美。不要犹豫报告错误。报告填两次总比不填好。然而,本章包含了关于如何提交好的bug报告的建议。

对于没有耐心的人:

- 首先检查是否已经报告了错误。您可以在<https://bugs.debian.org/cgi-bin/pkgreport.cgi?maint=debian-live%40lists.debian.org>上查看分配给实时团队的完整bug列表。

- 在提交错误报告之前,总是尝试用你正在使用的live-build、live-boot、live-config 和 live-tools的最新版本包来重现错误。

- 试着给出关于bug的尽可能具体的信息。这包括(至少)使用的live-build、live-boot、live-config和live-tools的版本,以及您正在构建的实时系统的发行版。

14.1 Known issues

目前已知的问题列在BTS的网站:https://bugs.debian.org/cgi-bin/pkgreport.cgi?maint=debian-live%40lists.debian.org

注意:由于Debian测试发行版和Debian不稳定发行版是移动目标,当您指定它们中的任何一个作为目标系统发行版时,成功构建可能并不总是可能的。

如果这给您带来了太多的困难,那么不要基于testing或unstable来构建系统,而是使用stable。live-build总是默认为稳定版本。

培训您正确识别和修复开发发行版包中的问题超出了本手册的范围,但是,您始终可以尝试以下方法:如果在目标发行版测试时构建失败,请尝试不稳定。如果不稳定工作,恢复到测试并从不稳定中固定失败包的新版本(参见APT pinning了解详细信息)。

14.2 Do the research

在提交错误之前,请在网上搜索您得到的特定错误信息或症状。因为你不太可能是唯一一个遇到特定问题的人。它总是有可能在其他地方被讨论过,并提出了一个可能的解决方案、补丁或变通方法。

您应该特别注意实时系统邮件列表和主页,因为它们可能包含最新的信息。如果存在这样的信息,请始终在bug报告中包含对它的引用。

此外,您应该检查live-build、live-boot、live-config和live-tools的当前错误列表,看看是否已经报告了类似的错误。

14.3 Rebuild from scratch

为了确保一个特定的bug不是由一个不干净的系统造成的,请从头开始重新构建整个系统,看看这个bug是否可以重现。

14.4 Use up-to-date packages

在尝试重现(并最终修复)问题时,使用过时的包可能会导致严重的问题。确保您的构建系统是最新的,映像中包含的任何包也是最新的。如果可能的话,尝试从源代码中使用最新的代码来重现错误,详细信息请参见Installation

14.5 Collect information

请在报告中提供足够的信息。至少包括遇到错误的live-build的确切版本,以及重现错误的步骤。请运用你的常识,并提供任何其他相关信息,如果你认为它可能有助于解决问题。

为了充分利用你的bug报告,我们至少需要以下信息:

- 主机系统的体系结构

- 主机系统的分布

- 主机系统上的live-build版本

- 主机系统上的debootstrap版本

- 运行系统的架构

- live系统的发行版

- live系统上的live-boot版本

- live系统上的live-config版本

- live系统上的live-tools版本

您可以使用tee命令生成构建过程的日志。我们建议使用auto/build脚本自动执行此操作(参见Managing a configuration了解详细信息)。

# lb build 2>&1 | tee build.log

在引导时,live-boot和live-config将它们的日志文件存储在/var/log/live/中。检查它们是否有错误消息。

此外,为了排除其他错误,最好将你的 config/ 目录压缩并上传到某个地方(不要将其作为附件发送到邮件列表),这样我们就可以尝试重现你遇到的错误。如果这是困难的(例如,由于大小),你可以使用lb config –dump的输出,它会生成你的配置树的摘要(即列出 config/ 的子目录中的文件,但不包括它们)。

记得发送任何使用英语语言环境设置产生的日志,例如,运行实时构建命令时使用LC_ALL=C或LC_ALL=en_US作为前导。

14.6 Isolate the failing case if possible

如果可能的话,将失败案例隔离到尽可能小的中断更改中。做到这一点并不总是容易的,所以如果你不能为你的报告管理它,不要担心。然而,如果您很好地规划了您的开发周期,在每次迭代中使用足够小的变更集,那么您可能能够通过构建一个更简单的“基础”配置来隔离问题,该配置与您的实际配置紧密匹配,再加上添加到其中的破碎的变更集。如果您很难区分哪些更改中断了,则可能是您在每个更改集中包含了太多内容,应该以较小的增量进行开发。

14.7 Use the correct package to report the bug against

通常,您应该针对live-build包报告构建时错误,针对live-boot报告引导时错误,以及针对live-config报告运行时错误。如果您不确定哪个包是合适的,或者在提交错误报告之前需要更多的帮助,请针对debian-live伪包进行报告。然后我们会注意它,并在适当的地方重新分配它。

但是,如果您能根据bug出现的位置缩小范围,我们将不胜感激。

14.7.1 At build time while bootstrapping

live-build首先使用debootstrap引导一个基本的Debian系统。如果这里出现错误,请检查错误是否与特定的Debian软件包有关(很可能),或者是否与引导工具本身有关。

在这两种情况下,这都不是live系统中的错误,而是Debian本身的错误,我们可能无法直接修复它。请报告针对引导工具或失败包的此类错误。

14.7.2 At build time while installing packages

live-build从Debian存档中安装额外的包,并且根据所使用的Debian发行版和每日存档状态,它可能会失败。如果这里出现错误,请检查该错误在正常系统上是否也可重现。

如果是这种情况,这不是在运行系统中的错误,而是在Debian中——请在失败的包中报告它。在Live系统构建中单独运行debootstrap,或者运行lb bootstrap –debug会给你更多的信息。

此外,如果您正在使用本地镜像和/或任何类型的代理并且遇到问题,请始终首先通过从官方镜像引导来复制它。

14.7.3 At boot time

如果您的映像无法启动,请将其连同Collect information中要求的信息一起报告到邮件列表。不要忘记提及映像是如何/何时失败的,是使用虚拟化还是实际硬件。如果您正在使用任何类型的虚拟化技术,请在报告错误之前始终在实际硬件上运行它。提供故障的屏幕截图也很有帮助。

14.7.4 At run time

如果一个包被成功安装,但在实际运行Live系统时失败,这可能是live-config中的一个错误。

14.8 Where to report bugs

Debian Live项目在Bug跟踪系统(BTS)中跟踪所有的Bug。有关如何使用该系统的信息,请参阅https://bugs.debian.org/。您还可以通过使用相同名称的包中的reportbug命令来提交bug。

请注意,在源自Debian的发行版(如Ubuntu和其他发行版)中发现的bug不应该报告给Debian BTS,除非它们也可以在使用官方Debian软件包的Debian系统上重现。