消息

有时需要为用户显示消息。这可能是为了错误、安装后帮助消息、安装前警告或仅仅是通知用户正在发生的事情。在执行任何特别长且静默的任务之前显示一条消息被认为是良好的形式,例如(它也有助于减少虚假的“编译 foo 冻结了!”错误)。

在所有情况下,假设用户的终端宽度不超过 79 列,并且 elog,einfo, ewarneerror 函数将使用其花哨的前导标记占用 4 列。

信息消息

有一些函数可以帮助你。`echo` bash 内部是最简单的 - 它只是将它的参数显示为一条消息。

可以使用 elog 函数来显示一条信息消息,该消息应该“突出显示”,并由 Portage 的 elog 功能记录。在彩色终端上,提供的消息将以绿色星号为前缀。

pkg_postinst() {
	elog "You will need to set up your /etc/foo/foo.conf file before"
	elog "running foo for the first time. For details, please see the"
	elog "foo.conf(5) manual page."
}

可以使用 einfo 函数来显示一条信息消息,该消息应该“突出显示”。在彩色终端上,提供的消息将以绿色星号为前缀。einfo 消息将发送到 INFO elog 类,默认情况下不会记录。

src_compile() {
	einfo "Starting a silent compile that takes hours."
	./build || die
}

警告消息

ewarn 函数类似,但显示黄色星号。这应该用于警告消息,而不是信息消息。

错误消息

eerror 函数显示一个红色星号,用于显示错误消息。它几乎总是应该紧跟着一个 die 调用。此函数主要用于在退出之前显示额外的错误详细信息。

QA 警告

eclass 作者可以使用 eqawarn 函数来通知 ebuild 编写者有关已弃用功能的信息。Portage 默认情况下不会记录 qa 消息类,因此用户不会因看到他们无法做太多的事情的消息而感到烦恼。

消息函数参考

有关函数的完整列表,请参阅 消息函数参考

好的和坏的消息

这是一个关于糟糕消息的例子

i=10
while ((i--)) ; do
	ewarn "PLEASE UPDATE TO YOUR PACKAGE TO USE linux-info.eclass"
done
  • 重复显示相同的消息是过度的。
  • 大写是过度的。
  • 糟糕的英语看起来不专业。
  • 此消息只会让最终用户感到困惑,并且不会帮助他们确定他们是否遇到了问题,以及如果他们遇到了问题如何解决。

最好写成

eqawarn "The 'frozbinate' function provided by eutils.eclass is deprecated"
eqawarn "in favour of frozbinate.eclass, but this package has not been"
eqawarn "updated yet. If this is a package from the main tree, please check"
eqawarn "https://bugs.gentoo.org/ and file a bug if there is not one already."
eqawarn "If this is your own package, please read the comments in the"
eqawarn "frozbinate eclass for instructions on how to convert."