我在 Ubuntu 11.10、12.04 和 12.10 上遇到了 apport 错误。我已报告漏洞但这只发生在我的一个系统中,只在一个帐户中发生,而不是在我使用它运行时发生的sudo
,所以很难有人会看到这个问题。
所以我的问题是,是否有人知道 apport 的哪些配置文件可能导致此错误(我将完整描述放在下方)。我不愿意创建新帐户并将我的所有东西都移到那里,只是因为这个,一定是我的用户帐户中的某些东西导致了此错误,但我无法在我的主目录中找到任何 apport 特定文件。
以下是 apport 给出的错误的描述:
每当我运行与 apport 相关的任何内容(ubuntu-bug 等)时,它都会中止并显示一个窗口nothing to repeat
。如果我从终端运行它,我会得到:
.Traceback(最近一次调用最后一次): 文件“/usr/bin/apport-cli”,第 365 行,位于 如果不是 app.run_argv(): 文件“/usr/lib/python2.7/dist-packages/apport/ui.py”,第 543 行,在 run_argv 中 返回 self.run_report_bug() 文件“/usr/lib/python2.7/dist-packages/apport/ui.py”,第 348 行,位于 run_report_bug 中 自我收集信息(症状脚本) 文件“/usr/lib/python2.7/dist-packages/apport/ui.py”,第 912 行,位于 collect_info 中 anonymize_thread.exc_raise() 文件“/usr/lib/python2.7/dist-packages/apport/REThread.py”,第 34 行,正在运行 self._retval = self.__target(*self.__args,**self.__kwargs) 文件“/usr/lib/python2.7/dist-packages/apport/report.py”,第 1297 行,匿名 replacements.append((re.compile('\\b%s\\b' % s), '用户名')) 文件“/usr/lib/python2.7/re.py”,第 190 行,正在编译 返回 _compile(pattern,flags) 文件“/usr/lib/python2.7/re.py”,第 242 行,在 _compile 中 引发错误,v # 无效表达式 sre_constants.error:无可重复
答案1
这是 Python 中的一个错误,或者说是一个缺陷,而不是 apport。
如果你熟悉正则表达式,这里有一个 stackoverflow 问题:https://stackoverflow.com/questions/5869650/python-regex-strange-behavior。
用户抱怨:
(a*)* 或 (a*|b)* 的编译会引发错误:
raise error, v # invalid expression sre_constants.error: nothing to repeat
根据第一个答案(截至目前):
它抱怨说,如果 a* 没有匹配任何内容,它就不知道如何捕获 0 个或更多“无内容”。
针对此问题已提交错误报告:
此外,启动板上有一个错误:
建议了几种解决方法:
- 注释掉第 1296 行和第 1297 行
/usr/lib/python2.7/dist-packages/apport/report.py
。 - 更改用户名或创建新的用户帐户。