1.5. 如何求助

[注意]

注意

如果您在按照 LFS 的指示构建某个软件包时出现了问题,我们强烈反对在未通过第 1.4 节 “相关资源”给出的 LFS 支持通道进行讨论前,直接将问题发布到上游支持通道。这样做通常十分低效,因为上游维护者很少熟悉 LFS 的构建过程。即使您真的遇到了上游导致的问题,LFS 社区仍然能够帮您提取上游维护者需要的信息,并正确地报告问题。

如果您一定要通过上游支持通道直接提问,请至少注意许多上游项目的支持通道和 bug 管理系统是分离的。对于这些项目,用于提问的 bug 报告会被视为无效,并可能令上游开发者感到不快。

如果您在按照本书工作的过程中遇到任何问题或者疑问,请先阅读位于 https://www.linuxfromscratch.org/faq/#generalfaq 的常见问题列表,一般来说可以找到答案。如果您的问题没有被 FAQ 解决,试着找到问题的根源。这个指南指出了一些疑难问题的排查思路:https://www.linuxfromscratch.org/hints/downloads/files/errors.txt

如果 FAQ 中没有您的问题,访问 https://www.linuxfromscratch.org/search.html,在邮件列表中搜索。

我们也有一个不错的 LFS 社区,社区成员愿意通过邮件列表和 IRC (见第 1.4 节 “相关资源”) 提供支援。然而,我们每天都会得到一大堆明明在 FAQ 或者邮件列表中能找到答案的问题。因此,为了使得技术支持的效能最大化,您需要自己先对问题进行一些研究。这样,我们就能够集中精力解决最特殊的支援需求。如果您的研究得不到结果,请您在求助时附带下面列出的全部相关信息。

1.5.1. 需要提供的信息

除了简要描述您遇到的问题外,您应该在求助邮件中附带下列必要信息。

  • LFS 手册的版本 (您正在阅读的版本是 12.0-systemd)

  • 构建 LFS 时使用的宿主发行版名称和版本

  • 宿主系统需求脚本的输出

  • 出现问题的软件包或书内章节

  • 程序输出的原始错误消息,或者对问题的清晰描述

  • 您是否进行了超出本书内容的操作

[注意]

注意

有超出本书内容的操作,并不意味着我们就不会协助您。无论如何,LFS 强调个人体验。在求助信中说明您对本书给出构建过程的改动,有助于我们猜测和判定问题的可能原因。

1.5.2. 配置脚本的问题

如果在运行 configure 脚本的过程中出现问题,请阅读日志文件 config.log。它可能包含configure 运行时没有输出到屏幕的具体问题。求助时请附带日志文件中与问题 相关 的部分。

1.5.3. 编译错误

屏幕上的输出和一些文件的内容对于确认编译错误的原因都很有用。屏幕输出来自于 configure 脚本和 make 命令。您不用附带所有输出内容,只要包含足够相关信息即可。例如,这里给出从 make 的屏幕输出中截取的一段:

gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
-DLOCALEDIR=\"/mnt/lfs/usr/share/locale\"
-DLIBDIR=\"/mnt/lfs/usr/lib\"
-DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DHAVE_CONFIG_H -I. -I.
-g -O2 -c getopt1.c
gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o
expand.o file.o function.o getopt.o implicit.o job.o main.o
misc.o read.o remake.o rule.o signame.o variable.o vpath.o
default.o remote-stub.o version.o opt1.o
-lutil job.o: In function `load_too_high':
/lfs/tmp/make-3.79.1/job.c:1565: undefined reference
to `getloadavg'
collect2: ld returned 1 exit status
make[2]: *** [make] Error 1
make[2]: Leaving directory `/lfs/tmp/make-3.79.1'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/lfs/tmp/make-3.79.1'
make: *** [all-recursive-am] Error 2

对于本例来说,许多人会只附带靠下的一行:

make [2]: *** [make] Error 1

这一行只告诉我们某些事情出问题了,而完全没有说明哪里出了问题。而上面的一段输出包含了出现问题的命令行和相关的错误消息,这是我们需要的。

可以在线阅读一篇关于如何在网络上提问的精彩文章:http://catb.org/~esr/faqs/smart-questions.html。请阅读它并遵循它的建议。这样可以增加您得到帮助的可能性。