如何使用 reportbug 在 Debian 中報告問題
我們強烈建議您在 Debian 中報告問題、缺陷與錯誤時使用
reportbug
程序。
reportbug 在大多數系統上已默認安裝。如果在您的系統上暫時不可用,您可以使用套件管理工具進行安裝。
reportbug 工具可以從圖形介面系統選單中的系統
分區中找到並啟動,您也可以在命令行輸入 reportbug
來啟動它。
該程序將引導您一步一步完成缺陷報告流程。
如果您對 reportbug 提供的交互式功能有疑問或者其功能無法滿足您的需求的話,請參考本文後面敘述的文件內容,或者在 Debian 使用者通信論壇(英文) 或 Debian 中文通信論壇詢問。
如何使用電子郵件向 Debian 報告 bug(含 reportbug 的高級用法)
在您發送缺陷報告之前需要了解的東西
您的報告應當歸屬哪個套件之下?
您需要知道您的缺陷報告應該針對哪一個套件進行提交。請查看這個例子以瞭解您該如何獲取這類信息。 (您還可以透過這些信息瞭解到您的缺陷報告是否已經被其他人提交過了。)
如果您無法確定您的報告應該針對哪一個套件提交,請向 Debian 使用者通信論壇發送郵件詢問以得到建議。
如果您遇到的問題並不僅僅和某個單一的套件相關,而是和某些一般的 Debian 服務有關的話,我們有一些 pseudo-packages (即“偽套件”)以及 通信論壇。這些設施可以幫助您將相關的信息轉遞給我們。
您的缺陷報告是否已被提交過了?
在提交報告之前,您應該檢查您的缺陷報告是否已被他人提交過了。即,其他人已經提交了一份報告描述了相同的問題。 如需查找某個套件中已經被提交的問題報告列表,您可以使用缺陷搜尋表格中的“package”(套件)選項進行查找。 如果已經存在一個編號為“#<number>”且與您遇到的問題相同的報告的話,您應該以向收件人為“<number>@bugs.debian.org” 的電子郵件地址發送電子郵件以附加您的評論。此時請不要提交一個新的缺陷報告以避免重複。
請為不同的問題各自提交報告
請不要在單一的缺陷報告中描述多個不相關的問題。當這些問題分屬不同的套件時更是如此。請為每個問題提交各自獨立的報告。
避免直接向上遊提交報告
如果您已經在 Debian 中提交了一份報告,請不要將其副本原封不動地向上遊再報告一份,因為這個問題很可能只在 Debian 中出現。如果真的必要的話,套件維護者會幫忙將報告 轉發給上游。
使用電子郵件發送缺陷報告
您可以使用發送電子郵件的方式向 Debian 提交一份新的缺陷報告,下文將具體描述操作方法。您的電子郵件應當發往
submit@bugs.debian.org
,並採取後文中描述的特殊文本格式。
reportbug
工具(參見前文)實質上是自動幫助您撰寫了合適格式的電子郵件並進行提交。可能的話,請儘量使用該工具!
信頭
和其它電子郵件一樣,您應該在您的郵件中寫上一個明晰、描述性的Subject
(主題、標題)行。這個標題將為作為追蹤系統中報告的初始標題,所以請儘可能地在標題中提供有用的信息!
如果您想要將這份缺陷報告的副本發送給其它的接收者(如通信論壇)的話,您不應該在電子郵件頭部寫上收件人(即不應該使用標準的抄送、密送方式)。 此時您應該採用一種特殊的方式進行,詳見下文。
偽信頭(Pseudo-Headers)
您的缺陷報告正文的第一部分是偽信頭(pseudo-headers),其中應該包含一些與報告相關的信息,如這個報告所針對的套件名稱、對應套件的版本等等。 郵件正文的第一行必須是一個偽信頭信息。它的內容應該是:
Package: <packagename>
請將 <packagename>
替換為 套件的名稱,這個套件應該存在您正在報告的問題或缺陷。
郵件正文信息的第二行應該是:
Version: <packageversion>
請將 <packageversion>
替換為套件的版本。除了版本字符串以外,這裡請不要填入其它任何文本;
因為缺陷追蹤系統需要使用該信息推斷出哪些 Debian 發行版本受到該問題的影響。
為了讓缺陷追蹤系統能夠將您的信息正確地轉發到套件維護者處,您需要在偽信頭部分提供正確的 Package
(套件名稱)一行內容。
請參考 這個例子 以瞭解如何找到套件名稱的信息。
如需瞭解其它可用的偽信頭,請見額外的偽信頭。
報告正文
請考慮在您的報告中提供以下信息:
- 出錯時螢幕上顯示或列印出的任何錯誤信息的準確、完整的文本內容。 這非常重要!
- 準確地描述您輸入了什麼,或者做了什麼導致了問題發生。
- 對不正確行為的一個描述:您期望軟體的行為如何,而您又觀察到了什麼。一個比較好的做法是從開始到結束描述一次示例會話的過程。
- 如果您對這個問題有了解的話,請提供一個推薦的修復方案,如果能提供補丁就更好了。
- 對出問題程序的配置的詳細信息,包括配置文件的完整文本。
- 出問題套件依賴的所有套件及其版本號信息。
- 您正在使用的核心版本(輸入
uname -a
可獲得)、您的共享 C 庫信息(輸入ls -l /lib/*/libc.so.6
或者apt show libc6 | grep ^Version
)以及任何與您的 Debian 系統相關的細節,只要您認為合適的話都請提供。例如,如果您碰到了一個 Perl 命令稿的問題,您應該考慮提供“perl” 二進制程序的版本號(輸入perl -v
或dpkg -s perl | grep ^Version:
)。 - 您的系統上相關硬體的合適信息。如果您正要報告的是與設備驅動相關的問題,請列出您系統上的所有硬體。這是因為問題通常由 IRQ 和 I/O 地址衝突造成。
- 如果您已經安裝了reportbug
套件,那麼如下這個命令:
reportbug --template -T none -s none -S normal -b --list-cc none -q <package>
的輸出會比較有用。這是因為該命令包含了維護者提供的特有命令稿以及版本信息的輸出內容。
請在報告中包含任何看起來會有點關係的細節——簡單來說,報告提供的信息多多益善,您不用擔心內容過多過長會有什麼問題。如果內容不多的話, 不妨考慮一下順帶提供能夠重現問題的任何相關文件。(如果報告真的已經很長的話,可以考慮將這些文件放在網際網路上其它的地方,並在報告中給出指向的鏈接。)
如需瞭解更多能夠幫助開發者解決問題的做法的建議,請閱讀 如果有效地報告 Bug 一文。
一份示例缺陷報告
一份擁有信頭和偽信頭的缺陷報告的原文一般長得像這樣:
To: submit@bugs.debian.org From: diligent@testing.linux.org Subject: Hello says `goodbye' Package: hello Version: 1.3-16 When I invoke `hello' without arguments from an ordinary shell prompt it prints `goodbye', rather than the expected `hello, world'. Here is a transcript: $ hello goodbye $ /usr/bin/hello goodbye $ I suggest that the output string, in hello.c, be corrected. I am using Debian GNU/Linux 2.2, kernel 2.2.17-pre-patch-13 and libc6 2.1.3-10.
如何將缺陷報告的副本抄送到其它電子郵件地址
有時候需要將缺陷報告的副本發送到除 debian-bugs-dist
列表和套件維護者之外的地方。默認情況下,該報告僅會發送給對應套件的維護者和上述的通信論壇。
當然,您可以將報告使用電子郵件抄送的功能發送給其它收件人。然而,這麼做的問題在於這樣的副本在 Subject
(標題)
和 Reply-To
(回覆地址)部分不會包含缺陷報告編號的信息。當那位收件人打算對郵件進行回覆時,他們很可能會回覆到
submit@bugs.debian.org
這個地址,從而錯誤地產生一個新缺陷報告。這樣最終會產生許多重複的報告。
真正正確的做法是使用名為
X-Debbugs-CC
的偽信頭。請在您的郵件正文偽信頭部分添加這樣內容:
X-Debbugs-CC: other-list@cosmic.edu
這樣會指示缺陷追蹤系統將報告的一份副本發送至您在
X-Debbugs-CC
偽信頭一行中給出的地址。當然,該報告同樣會發送至
debian-bugs-dist
通信論壇。
如果您想指定多個抄送的電子郵件地址,請把它們寫入同一行
X-Debbugs-CC
中,並使用英文逗號分隔各個地址。
請避免用 X-Debbugs-CC
將這些副本發送至其它缺陷報告的對應地址,因為這樣做會使得自動檢測系統捕捉到郵件轉發迴環。無論如何,為此使用
X-Debbugs-CC
意義不大,因為該機制添加的缺陷編號會被新的編號所取代。此時使用通常的抄送(
)頭即可。CC
該功能通常也可以和 quiet
郵件共同使用,詳情請見下文。
其它偽信頭
問題嚴重性
如果您瞭解所報告問題的嚴重程度,您可以在提交報告時對其進行設置。這麼做並不是必須的,而且套件維護者會在您未給出嚴重性信息 (或者選擇的嚴重性等級有誤)時賦予該報告正確的嚴重性等級。
如需對報告賦予嚴重性等級,請在偽信頭 部分添加如下面一行這樣的信息:
Severity: <severity>
請將 <severity> 替換為某個可用的嚴重性等級。具體可用的等級列表可以在 進階文件中找到。
打標籤
您可以為所報告的缺陷打上標籤。例如,如果您在報告中包含了一個補丁,您可以為報告設置一個
patch
標籤。這麼做並不是必須的,其他開發者在合適的時候也可能為您的報告設置標籤。
如需設置標籤,請在偽信頭部分加上這樣的一行:
Tags: <tags>
請將上文出現的 <tags> 替換為一個或多個可用的標籤,可用標籤列表在高級文件中給出。使用英文逗號和/或空格分隔多個標籤。
User: <username> Usertags: <usertags>
這種情況下,請將 <usertags> 替換為一個或多個使用者標籤。使用英文逗號和/或空格分隔多個標籤。如果您指定了一個 <username>(即使用者名),系統將為該使用者分配您指定的使用者標籤。否則系統將把提交者的電子郵件地址作為使用者名來分配使用者標籤。
您可以在提交缺陷報告時為多個使用者指定使用者標籤。要如此做,您需要添加多個 User 偽信頭,而每一個 Usertags 偽信頭都將為其上方最後一個 User 偽信頭 設置使用者標籤。這在某些情況下十分有用,例如為含有多個使用者的團隊設置使用者標籤、為多個團隊設置使用者標籤,或者為影響多個架構的缺陷 設置架構使用者標籤。
User: <first-username> Usertags: <first-username usertags> User: <second-username> Usertags: <second-username usertags>
設置(缺陷)轉發信息
Forwarded: foo@example.com
會將新提交的缺陷標記為已轉發至 foo@example.com。參見開發者文件中記錄您將缺陷報告轉交的情況部分以瞭解詳細信息。
聲明所有權
Owner: foo@example.com
會指示 foo@example.com 當前負責修復該問題。參見開發者文件中修改缺陷所有權部分以瞭解詳細信息。
源碼包
Source: foopackage
Package:
頭的等價形式,用於指出在名為 foopackage
的源碼包記憶體在的缺陷;對於大多數套件中的缺陷,您大概沒有必要使用這個選項。
控制指令
Control: 具體控制指令
使得所有本應由 control@bugs.debian.org
接收的控制指令可以同樣由發送至 submit@bugs.debian.org
或者 nnn@bugs.debian.org
的郵件等效地被伺服器處理。指令中出現的 -1 將代指當前缺陷報告編號(即,發送至 submit@
的郵件即將創建的缺陷報告編號或發送至 nnn@ 的郵件中的編號)。請瀏覽BTS伺服器控制指令文件以瞭解具體的可用控制指令。
例如,下面給出了發送至 12345@bugs.debian.org
的郵件中的偽信頭示例:
Control: retitle -1 this is the title Control: severity -1 normal Control: summary -1 0 Control: forwarded -1 https://bugs.debian.org/nnn
將使得編號為 12345 的缺陷報告得到更名、其嚴重等級被修改、其簡介信息得到設置並標記為已轉發。
X-Debbugs- 信頭
除此之外,如果您的
MUA
不允許您編輯信頭,您可以在偽信頭區域設置各個 X-Debbugs-
項以等效實現原信頭的功能。
額外信息
不同的提交地址(用於不嚴重的問題或批量缺陷報告)
如果某個報告所涉及到的問題都是小問題,例如文件中的一處錯字或是平凡的構建問題,請考慮將其嚴重等級適當進行設置(選用低等級),並將報告發送至
maintonly@bugs.debian.org
而非 submit@bugs.debian.org
。
maintonly
將只會把報告轉發至套件維護者,它不會將其轉發到
BTS 通信論壇中。
如果您打算同時提交許多報告,您肯定應當使用 maintonly@bugs.debian.org
來避免為 BTS 通信論壇帶來瞬時大量的流量。在提交許多相似的問題報告之前,也請考慮在 debian-bugs-dist
通信論壇上發佈一份概述信息。
如果您希望向缺陷追蹤系統報告一個維護者已經知曉的問題的話,您可以使用
quiet@bugs.debian.org
。發送至 quiet@bugs.debian.org
的報告將不會轉發給任何人,僅用來歸檔。
當您設置了不同的提交地址時,缺陷追蹤系統會相應地將所轉發的郵件中
Reply-To
這一信頭設置為與原始報告性質相同的回覆地址。例如,對 maintonly
報告的回覆將默認發送至
nnn-maintonly@bugs.debian.org
而非
nnn@bugs.debian.org
,除非回覆者手工設置回覆到不同的地址。
回執
通常情況下,每當您提交了一份新報告或為已有報告提交一份新信息後,缺陷追蹤系統便會使用電子郵件向您發送一份回執信息。
如果您不想收到這類回執郵件的話,請在報告郵件的信頭或偽信頭處額外提供
X-Debbugs-No-Ack
一欄(其具體內容無關緊要)。如果您在提交新報告的同時添加了這份信頭的話,
您需要自己使用追蹤系統網頁前端以查詢報告的具體編號。
請注意這個信頭不會停止來自 control@bugs.debian.org
郵件伺服器的回執郵件的發送;這是因為這些回執信息比較重要,其中有可能包含需要發送者進行處理的錯誤信息。
應對垃圾郵件和郵件丟失
缺陷追蹤系統實現了一套比較完善的規則以確保垃圾郵件不會進入系統。儘管我們盡力確保錯誤攔截的情況少出現,但的確會出現垃圾郵件的誤判。
如果您懷疑您的郵件被錯誤攔截的話,請聯繫 owner@bugs.debian.org
以尋求幫助。另一個時常導致郵件被錯誤攔截的因素是使用者使用了能夠匹配
procmail 中 FROM_DAEMON 項的郵件地址,通常包括類似於
mail@foobar.com
的郵件地址。如果您懷疑您的郵件匹配了
FROM_DAEMON 特徵,請閱讀 procmailrc(5)
以進行驗證,並重新使用不匹配 FROM_DAEMON 的新郵件地址重新發送郵件。
向未知套件提交的缺陷報告
如果缺陷追蹤系統不知道相關套件的維護者的話,它會將報告轉發給
debian-bugs-dist
通信論壇,且無論是否使用
maintonly
都將進行轉發。
在發送郵件至 maintonly@bugs.debian.org
或
nnn-maintonly@bugs.debian.org
時,請確保您的報告指向正確的套件,即在原始報告正文頂部放置了正確的
Package
行,或使用
control@bugs.debian.org
服務 來正確(重)指定報告對應套件。
使用dpkg
尋找報告對應的套件及其版本號
當您使用 reportbug
來報告某個程序的問題時,例如打算報告
grep
的問題時,下面的命令行參數可以幫助您正確選擇套件並直接開始撰寫報告:
reportbug --file $(which grep)
。
您也可以使用 dpkg --search
來找到提供該文件的套件。您可以使用 dpkg --list
或 dpkg --status
來了解您所安裝對應套件的具體版本。
例如:
$ which apt-get /usr/bin/apt-get $ type apt-get apt-get is /usr/bin/apt-get $ dpkg --search /usr/bin/apt-get apt: /usr/bin/apt-get $ dpkg --list apt Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii apt 0.3.19 Advanced front-end for dpkg $ dpkg --status apt Package: apt Status: install ok installed Priority: standard Section: base Installed-Size: 1391 Maintainer: APT Development Team <deity@lists.debian.org> Version: 0.3.19 Replaces: deity, libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7) Provides: libapt-pkg2.7 Depends: libapt-pkg2.7, libc6 (>= 2.1.2), libstdc++2.10 Suggests: dpkg-dev Conflicts: deity Description: Advanced front-end for dpkg This is Debian's next generation front-end for the dpkg package manager. It provides the apt-get utility and APT dselect method that provides a simpler, safer way to install and upgrade packages. . APT features complete installation ordering, multiple source capability and several other unique features, see the Users Guide in /usr/doc/apt/guide.text.gz
其它有用的命令和套件
querybts 工具,它由 reportbug 套件提供。該工具提供了訪問缺陷追蹤工具的基於文本的簡易介面。
Emacs 使用者也可以使用
debian-el
套件提供的 debian-bug 命令。在使用 M-x debian-bug 調用時,它會如 reportbug
工具一樣按步驟詢問您必需的信息。
其他錯誤追蹤系統網頁:
- 錯誤追蹤系統主目錄頁。
- 回報錯誤的方法。
- 以 WWW 以外的方式取得錯誤追蹤紀錄。
- 開發者的系統使用資訊。
- 開發者以電子郵件進行錯誤處理的資訊。
- 電子郵件伺服器參考卡片。
- 經由電子郵件方式索取錯誤報告。
Debian BTS administrators <owner@bugs.debian.org>
Debian bug tracking system
Copyright © 1999 Darren O. Benham, 1997, 2003 nCipher Corporation Ltd,
1994-1997 Ian Jackson.