Linux man-pages:   首頁   ||   git | readme | 貢獻 | 約定   |   郵件列表 | 存檔   |   釋出版本 | 書籍 | 線上手冊頁

維護 Linux man-pages

當前的 man-pages 維護者是 (自 2004 年起) Michael Kerrisk (mtk.manpages@gmail.com; 部落格); 自 2020 年起,Alejandro Colomar (alx.manpages@gmail.com) 加入成為共同維護者。

此頁面提供了一些關於如何維護 Linux man-pages 專案的技巧 (對於任何想幫助 man-pages 工作的人也很有用)。

閱讀一些手冊頁

至少閱讀以下內容

所有這些頁面都與維護 man-pages 相關。其中一些頁面是 man-pages 以外的軟體包的一部分。

獲取原始碼

歷史很重要。man-pages 專案不僅記錄了 Linux 核心和 glibc API 的當前狀態,還記錄了它們隨時間的變化。

曾經,man-pages 也用於記錄 Linux libc 的詳細資訊 (libc4, libc5),但 Linux libc 在 1990 年代後期開始消失 (有關詳細資訊,請參見此處此處),現在不再需要記錄其特殊性。

核心原始碼

您可以在 https://kernel.linux.club.tw/ 找到幾乎所有曾經發布的核心版本。

您可以使用以下命令獲取 Linus 的 Git 樹的副本 (即當前的開發樹)

$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
之後,只需使用 git pull 更新副本。

對於瀏覽核心原始碼,Elixir Cross Referencer 可能很有用。(可以在 http://fxr.watson.org/ 找到各種免費核心的線上可瀏覽版本。)

Glibc 原始碼

可以在 https://ftp.gnu.org/gnu/glibc/ 找到許多 glibc tarball。可以在 https://www.win.tue.nl/~aeb/ftpdocs/linux-local/libc.archive/ 找到許多較舊的 tarball。可以透過 git 獲取最新的 glibc 開發樹的副本

git clone git://sourceware.org/git/glibc.git 

其他原始碼

有時,grep 隨機原始碼以檢視某個 API 的用途以及方式可能會很有用。例如,可以解壓縮發行版的所有原始碼,然後 grep 該程式碼。原始碼的下載位置:FedoraOpenSUSE

保持更新

最大的挑戰之一是與核心和 glibc 的更改保持同步。有幾種方法可以做到這一點。本節列出了一些最有用的方法。

網站

這些網站很有用,因為它們部分包括其他人試圖總結 Linux 核心的更改。

Linux API 郵件列表

linux-api 郵件列表 (linux-api@vger.kernel.org) 討論了影響 Linux 程式設計介面 (API 或 ABI) 的更改。理論上,所有更改介面的補丁都應抄送至此列表。要訂閱,請向 majordomo@vger.kernel.org 傳送包含以下正文的訊息

    subscribe linux-api 

可以在 lore.kernel.org 上找到此列表的存檔。

保持更新 - 其他一些可能性

以下是一些嘗試發現核心和 glibc 中更改的其他方法。這裡有太多的資訊要跟蹤 (尤其是,幾乎不可能跟蹤所有郵件列表),但是下面的列表可以提醒您一些可能找到有用資訊的地方。

展望未來:linux-next

linux-next是旨在用於下一個核心合併視窗的補丁的保留區域。跟蹤那裡的情況可以幫助您瞭解即將對核心進行的更改。(關於使用 linux-next 的一些註釋。)

Git

如果您正在尋找特定的核心提交,或包含特定字串的提交日誌訊息,那麼搜尋 Linus 的 Git 樹可能會很有用。

郵件列表

Linux 核心 (LKML)

此列表 (linux-kernel@vger.kernel.org) 包含有關核心的補丁、錯誤報告和一般討論。要訂閱,請向 majordomo@vger.kernel.org 傳送包含以下正文的訊息

    subscribe linux-kernel 

此列表的問題在於資訊量非常大,因此要密切跟蹤所有資訊將需要大量時間。

vger.kernel.org/ 提供了此郵件列表的一些可搜尋存檔的位置,當然在 lore.kernel.org 上也有一個存檔。

Linux 核心公告

此低容量列表 (linux-kernel-announce@vger.kernel.org) 會發布各種核心分支的新版本,包括主線核心的候選版本和新的 -mm 核心。要訂閱,請向 majordomo@vger.kernel.org 傳送包含以下正文的訊息

    subscribe linux-kernel-announce 

netdev

netdev 列表 (netdev@vger.kernel.org) 是 Linux 網路子系統的開發人員使用的列表。

要訂閱,請向 majordomo@vger.kernel.org 傳送包含以下正文的訊息

    subscribe netdev 

可以在 loremarc 上找到此列表的存檔。

Linux 測試專案 (LTP)

LTP 為 Linux 核心生成測試套件。在此處訂閱討論列表 here。此處有列表存檔 here

核心新手

此列表 (kernelnewbies@kernelnewbies.org) 對於詢問有關您不理解的核心原始碼方面的問題很有用。

要訂閱,請向 listar@nl.linux.org 傳送包含以下正文的訊息

    subscribe kernelnewbies 

可以在 loremarc 上找到此列表的存檔。有關更多資訊,請參見 kernelnewbies 網站

libc-announce

此列表 (libc-announce@sourceware.org) 會發布每個 glibc 版本。透過向 libc-announce-subscribe@sourceware.org 傳送電子郵件或訪問 此頁面 進行訂閱。此處有一個列表存檔 here

libc-alpha

此列表 (libc-alpha@sourceware.org) 是 glibc 的開發列表。透過向 libc-alpha-subscribe@sourceware.org 傳送電子郵件或訪問 此頁面 進行訂閱。此處有一個列表存檔 here

libc-help

此列表 (libc-help@sourceware.org) 用於提出一般問題並獲得有關 glibc 的幫助。透過向 libc-help-subscribe@sourceware.org 傳送電子郵件或訪問 此頁面 進行訂閱。此處有一個列表存檔 here

Glibc 釋出

以下內容對於大致瞭解各種 glibc 版本中哪些符號是新的或已更改很有用 -- 在 glibc 樹的根目錄執行它

    cat  $(find . -name 'Versions' |
    egrep -v '/(s390|alpha|sparc|hurd|sh4|bsd|ia64|powerpc|x86_64)') |
	    sed -n '/GLIBC/,/}/p' | sed 's/#.*//'| tr ';' '\012' |
	    sed 's/^ *//' | sed 's/ *$//' | sed '/^$/d' |
	    grep -v '^_' |
	    awk '{ if ($1 ~ "^GLIBC_2.*") {
	             tag = $1
	           } else if ($1 ~ "^[a-z].*") {
	             printf "%-32s %s\n", $1, tag
	         }
	    }' |
	    sort -u
    

核心 bugzilla

kernel.org bugzilla 可用於報告 man-pages 錯誤。可以在此處檢視 bugzilla 中未解決的錯誤列表。

同樣有用:如何使用 bugzilla.kernel.org

特定於發行版的錯誤跟蹤系統

Debian

Debian 使上游維護人員可以輕鬆訂閱手冊頁的錯誤報告。為此,請訪問 https://packages.qa.debian.org/ 並查詢 Debian 原始碼軟體包 manpages

可以在 此處 檢視當前 man-pagesDebian 錯誤報告列表。Debian manpages 補丁跟蹤器是 此處

Debian 甚至提供了一個電子郵件介面,允許上游維護人員操作 Debian 錯誤報告 (使用“tags”命令;請參見 https://www.debian.org/Bugs/server-control)。

可以在 此處 檢視 Debian 開發人員/以上游為中心的 manpages 檢視。

有時可能值得檢視應用於 man-pages 的 Debian 下游差異補丁,以檢視是否有任何他們應該已推送到上游但未推送的內容。請檢視透過遵循 https://packages.debian.org/manpageshttps://packages.debian.org/manpages-dev 上的“unstable”版本連結,並下載 Debian tarball 獲取的差異補丁。或者檢視 Web 補丁跟蹤器

以下郵件地址可聯絡到 Debian 中對手冊頁感興趣的人員:manpages@packages.debian.org

Ubuntu

Ubuntu 使用 Launchpad 進行 manpages (bugs, package) 和 manpages-posix (bugs, package)。“bugs”頁面上有允許訂閱錯誤報告的連結。

Red Hat

Red Hat 提供了一個 man-pages bugzilla 元件

Fedora 軟體包的 URL:https://koji.fedoraproject.org/koji/packageinfo?packageID=401。從那裡,您可以訪問 RPM 檔案,並解壓縮它們以檢視與上游的差異,使用

    rpm2cpio foo.rpm | cpio -idmv --no-absolute-filenames 

Red Hat 補丁的下游 Git 儲存庫

    git clone https://src.fedoraproject.org/rpms/man-pages.git

Fedora

可以訂閱 Fedora man-pages 錯誤報告,如下所示

測試新特性

測試程式

編寫測試程式(使用 C 語言)是編寫 man 頁面的重要組成部分。它驗證了作者對文件內容的理解,並能發現核心和 glibc 中的 bug。在某些情況下,示例程式也適合包含在 man 頁面本身中。

測試新的核心特性

為了緊跟開發曲線,請嘗試構建和測試釋出候選版(“rc”)核心;釋出候選版在Git 倉庫中被標記。在構建和安裝核心之後,編寫程式來測試新特性。由於新的系統呼叫的宣告可能還不在您的 (g)libc 中,可能需要使用 syscall(2);請參閱 syscall(2) man 頁面。

測試新的 glibc 特性

有關構建和測試 glibc 釋出版本的資訊,請參閱 glibc 手冊中的附錄 C 安裝 GNU C 庫,glibc wiki 上的關於 GNU C 庫的常見問題,特別是 Carlos O'Donell 在 glibc wiki 上的 測試 glibc 構建 頁面。

世界不僅僅是 Linux

僅僅記錄 Linux 的行為是不夠的。編寫可移植應用程式的程式設計師需要了解 Linux 與其他 UNIX 實現不同的地方,以及它不符合標準的地方。

測試程式

如果對可移植性有疑問,編寫一個測試程式並在其他幾個系統上執行它。作為起點,在 Solaris、FreeBSD 和 HP-UX 上進行測試可能會揭示其他實現中出現的大部分差異。在其他 BSD 系統、AIX 等系統上進行測試會有額外加分。

標準

加入 Austin group。(會員資格是免費的。)

獲取當前和過去的 UNIX 標準的電子副本,特別是 POSIX.1-2008/SUSv4 標準,該標準以 PDF 格式提供給 Austin group 的成員,並且可以線上瀏覽。另請注意,man 頁面的第 3p 節包含 POSIX.1 中所有函式的規範頁面(例如,嘗試 man 3p stat)。

其他需要注意的標準是 SUSv1、SUSv2 和 SVID(System V 介面定義),所有這些都以電子形式提供。

並獲取C 程式語言標準

並檢視 LSB

閱讀其他系統的 man 頁面

檢查其他 UNIX 系統的手冊頁面,看看與 Linux 有什麼不同,這可能會很有用。FreeBSD 專案網站顯示了一系列 UNIX 實現的手冊頁面;請點選這裡檢視。

Glibc info

有時,在特定函式的 info(1) 文件中可以找到有用的資訊(如果存在 info 文件 ...)。總是值得檢查的。

其他實現上的標頭檔案

擁有一組來自其他各種實現的 /usr/include 樹可能會很方便。 Grep 所有這些樹可以提供有關其他 UNIX 實現中存在/不存在的介面的一些線索。

原始碼

一些其他 UNIX 實現的原始碼是可用的,並且為了確定這些系統上未記錄的行為細節,研究它們很有用。

FreeBSD 原始碼可以透過 Git 映象在 https://github.com/freebsd/freebsd 獲取。

在 kernel.org 基礎設施上進行設定

點選這裡檢視。

製作 man-pages 釋出版本

上傳檔案

釋出 tarball 在 https://kernel.linux.club.tw/pub/linux/docs/man-pages/ 上可用。檔案使用 kup 上傳。 請點選這裡檢視。

man-pages 網站

man-pages 網站位於 https://kernel.linux.club.tw/doc/man-pages/

該網站的 Git 儲存庫位於 https://git.kernel.org/pub/scm/docs/man-pages/website.git/。透過釋出帶註釋的標籤並推送到倉庫來發布新版本的網站。

釋出通知

報告核心和 glibc bug

在編寫 man 頁面時測試核心和 glibc 特性將不可避免地發現 bug,理想情況下應該報告這些 bug。

對於核心,報告 bug(例如,在新系統呼叫中)最有效的方法通常是向 API 開發人員傳送電子郵件,並抄送給 LKML (linux-kernel@vger.kernel.org) 或其他相關列表。或者,您可以嘗試在 核心 bugzilla 中建立 bug 報告。

有關報告 glibc bug(包括 glibc info(1) 文件中的錯誤)的資訊,請參閱 https://sourceware.org/glibc/wiki/FilingBugs

一些歷史

man-pages 專案由 Rik Faith 於 1993 年啟動,他建立了 1.0 到 1.5 版本(1995 年 2 月)。

Rik Faith 的繼任者是 Andries Brouwer (aeb),他在這個角色上工作了九年多,建立了 1.6 版本(1995 年 6 月)到 1.70 版本(2004 年 10 月)。

現任維護者 Michael Kerrisk (mtk) 於 2004 年 11 月接任,從 2.00 版本開始。