The Linux Reading List HOWTO 作者:Eric S. Raymond 譯者: [1]劉祖弘 1.4, 22 November 1998 _________________________________________________________________ 本文件列出了一份我認為對於想要徹底學習 Unix(特別是 Linux)的人們最有價 值的參考書目。 _________________________________________________________________ 1. 介紹 * 1.1 這份文件的用途 * 1.2 這份文件的新版本 * 1.3 回饋與勘誤 * 1.4 相關資源 * 1.5 這份文件中使用的慣例 2. 關於文化、歷史和實用性的書籍 3. 關於一般 Unix/Linux 的書籍 * 3.1 Linux 安裝及管理 * 3.2 Unix 和 Linux 的使用 * 3.3 系統安全 4. 關於 Shell、Script 和網頁程式設計的書籍 5. 關於文件排版的書籍 * 5.1 Tex 和 LaTeX 6. 關於 C 和 C++ 程式設計的書籍 * 6.1 C 和 C++ * 6.2 C 系統呼叫介面 7. 關於網路的書籍 8. 關於 Unix kernel 實作的書籍 * 8.1 Linux 的祖先 * 8.2 Linux * 8.3 Linux 的親戚 9. 關於 Intel 處理器架構和程式設計的書籍 10. 關於 PC 類硬體的書籍 11. 例行公事 * 11.1 使用條款 * 11.2 歷史 _________________________________________________________________ 1. 介紹 1.1 這份文件的用途 本文件列出有助於學習 Unix(特別是 Linux)及在其下開發程式的參考資料,而 我認為這些資料已達一般書籍的基本長度。 1.2 這份文件的新版本 這份「the Linux Reading List HOWTO」將定期張貼至 [2]comp.os.linux.answers 。並上傳至各個 Linux WWW 和 FTP 站台,包括 LDP 的首頁。 您也可以透過 [3]http://sunsite.unc.edu/LDP/HOWTO/Reading-List-HOWTO.html 這個 URL 在 全球資訊網上看到這份文件的最新版本。 1.3 回饋與勘誤 如果您對於本文件有任何的批評指教(或只是想建議加入某本書),歡迎 mail 給 Eric S. Raymond,我的電子信箱是 [4]esr@thyrsus.com。我歡迎任何的建議 或批評。 1.4 相關資源 關於線上的 HOWTOs、雜誌和其他非書籍性的資料,請見: [5]Linux Documentation Project home page 。 幾年前我曾寫過一點專談 Linux 的 Unix 參考書目,或許還有點用處和一些娛樂 價值。您可以在 [6]http://www.ccil.org/~esr/faqs/loginataka.html 找到 Loginataka。 1.5 這份文件中使用的慣例 書目下面不在引號內的註解不是我的,就是 Jim Haynes(本文件之前的維護者) 的, (我認為沒有理由需要更動而保存下來的)。至於來自其他人的看法會擺在 引號內,並在前面以評論者的姓名標示(JH 是指 Jim Haynes)。 在「詳見」URL 的部份會附上直接指到出版商網頁上的目錄的相關出版資訊,而 這些 URL 通常會帶您到含有書籍封面照片、宣傳及訂閱資訊的網頁。沒有或缺乏 含這項資訊的書籍通常是因為出版商在網頁上使用了 frame 的關係,這使得我無 法將其目錄做成書籤(bookmark)。 主題的排列大致上由淺而深(由文化到使用者程式設計到 kernel 程式設計到硬 體)。在每一小節中,我試著就自己對他們的熟悉程度先列出最有用的書籍。坦 白地說,有點不好意思的是我在這份列表的一開始就先列出我自己的書。(如果 關於本列表的編排組織有任何建議,我必欣然接受) 2. 關於文化、歷史和實用性的書籍 The New Hacker's Dictionary (Third Edition) Raymond, Eric S.; MIT Press; 1996; ISBN 0-262-68092-0; 547 頁。 詳見 [7]http://www-mitpress.mit.edu/book-home.tcl?isbn=0262680920. 嗯,嗯。關於 Internet 文化的一本指南。很多人喜歡它。HTML 版本在 [8]Jargon File Resource Page. A Quarter Century of Unix Salus, Peter H.; Addison-Wesley; 1994; ISBN 0-201-54777-5; 256 頁。 詳見 [9]http://www.awl.com/cp/authors/salus/unix/unix.html Linux 是 Unix 傳統中的一部分。這本書是一本 Unix 的口述歷史,其中 談到 ── 它的起源、演進及如何被傳佈。 The Mythical Man Month (Anniversary Edition) Brooks, Frederick P.; Addison-Wesley 1995 (ISBN 0-201-83595-9). 詳見 [10]http://heg-school.awl.com/cseng/authors/brooks/mmm-ae/mmm-a e.html. 本書主要是談論軟體工程,值得大家一讀。 Alan Cox:「我推薦這本書的原因不是因為它的技術性價值,而是它將一 些常識和現實的東西應用於電腦的計畫中。」JH:「啊,對呀!假如當初 給 Linus 200 個程式設計師並要他在三個月內做出 Linux 又會怎麼樣呢 ?」 Bell System Technical Journal, July-August 1978, Vol. 57, No. 6, part 2 AT&T; 416 頁. 許多早期關於 Unix 的論文,包括 Ritchie & Thompson 的「The UNIX Time Sharing System」;Thompson 的 「UNIX Implementation」 ;Ritchie 的「A Retrospective」;Bourne 的「The UNIX Shell」... 3. 關於一般 Unix/Linux 的書籍 3.1 Linux 安裝及管理 Linux Installation and Getting Started Welsh, Matt; LDP; 1997. 可在 LDP 的首頁取得,或者您可以直接到 [11]http://sunsite.unc.edu/LDP/gs 看看。 如何「養育」您的 Linux。闡釋許多 Linux 的基本概念。亦涵蓋一些基 本系統管理。 Linux System Administtrator's Guide Wirzenius, Lars; LDP; 1997. 可在 LDP 的首頁取得,或者您可以直接 到 [12]http://sunsite.unc.edu/LDP/sag 看看。 第一本談論如何維護及管理 Linux 系統的優良書籍。 Essential System Administration (Second Edition) Frisch, Aeleen; O'Reilly; 1995; ISBN 0-937175-80-3; 788 頁; $32.95. 詳見 [13]http://www.ora.com/catalog/esa2/noframes.html. 關於一般系統管理的工作有更深入的討論。雖然不專談 Linux,但亦包括 Linux 的資料。 3.2 Unix 和 Linux 的使用 Linux in a Nutshell Hekman, Jessica P. et al.; O'Reilly; ISBN 1-56592-167-4; 1997; 438 頁. $9.95. 詳見 [14]http://www.ora.com/catalog/linuxnut/noframes.html. 根據 O'Reilly 的說法:「Linux 使用者桌上的必備書籍」。對 Linux 使用者而言,這本書剔除了他們在「Unix In a Nutshell」一書中以 SVr4/Solaris 為導向的部份。 Running Linux (Second Edition) Welsh, Matt, & Kaufman, Lar; O'Reilly; ISBN 1-56592-151-8; 1996; 650 頁; $24.95. 詳見 [15]http://www.ora.com/catalog/runux2/noframes.html. 涵蓋了一切在您暸解、安裝和使用 Linux 作業系統過程中所需要的資訊 。很棒的一本入門書。 Hands-on-Linux Sobell, Mark G.; Addison-Wesley; ISBN 0-201-32569-1; 1998; 1015 頁. 正如標題所說 ── 這是一本談論 Unix 基本概念、shells、編輯器、郵 件程式、網路、網站工具以及公用程式實用性的教學課程。亦包含一些系 統管理原理。(這本書的作者與 1997 年出版的「A Practical Guide to Linux」的作者是同一位,看來是重新包裝後的版本。1隨書並附贈 Caldera OpenLinux Lite 版光碟。) 3.3 系統安全 Practical Unix Security Garfinkel, Simpson, and Spafford, Gene; O'Reilly Associates; ISBN 0-56592-148-8; 1991. 詳見 [16]http://www.ora.com/catalog/puis/noframes.html. Ronald P. Miller:「雖然某些部份與『Essenstial System Administration』一書重疊,但終究還是講系統安全講得很棒的一本的書 ,特別值得那些對想讓自己的 Linux 系統具備多人、撥接/網路存取能 力有遠大抱負的人們一讀。」 Firewalls & Internet Security Cheswick, William R. & Bellovin, Steven M.; Addison-Wesley; 1994; ISBN 0-201-63357-4; 320 頁. 詳見 [17]http://www.awl.com/cp/Ches.html. 4. 關於 Shell、Script 和網頁程式設計的書籍 Programming Perl (Second Edition) Wall, Larry & Christiansen, Tom & Schwartz, Randal; O'Reilly; 1997; ISBN 0-56592-149-6; 644 頁. 詳見 [18]http://www.ora.com/catalog/pperl2/noframes.html. Shell(在作為日常瑣碎工具的程式語言之外)已死。Perl 統治了這個領 域。這是具有決定性地位的 Perl 書籍的第二版 ── 寫作上許多地方比 第一版更有組織,並且也包括了 Perl 5。 Programming Python Lutz, Mark; O'Reilly; 1997; ISBN 0-56592-197-6; 880 頁. 詳見 [19]http://www.ora.com/catalog/python/noframes.html. 超越 Perl 的下一步。Python 經過精良的設計,與 C 有較佳的整合性, 而且也較易進一步擴大為大型的專案。 HTML: The Definitive Guide (2nd Edition) Musciano, Chuck & Kennedy. Bill; O'Reilly; 1997; ISBN 0-56592-235-2; 552 頁. 詳見 [20]http://www.ora.com/catalog/html2/noframes.html. 我所見過最棒的 HTML 教學/參考資料,除非您想要做 CGI,否則這也是 唯一一本您需要的 HTML 書籍。 The Unix Programming Environment Kernighan, Brian, and Pike, Rob; Prentice-Hall; 1984; ISBN 0-13-937681-X; 1984. 真正的經典作品 ── 可能是最好的一本能體現 Unix 哲學的書籍。 5. 關於文件排版的書籍 5.1 Tex 和 LaTeX The LaTeX Companion Goossens, Michael & Mittlebach, Frank, & Samarin, Alexander; Addison-Wesley; 1994; ISBN 0-201-54199-8; 530 頁. 詳見 [21]http://www.awl.com/cp/tlc.html. 「如果您是一位想要知道如何使用 LaTeX 來創作美觀文件,但卻不想成 為 (La)TeX 一代宗師的使用者,那這本書就是為您而設計的」──摘自 前言。Bruce Thompson 說:「一本很不錯的書,提供了許多關於 LaTeX 新延伸功能的資訊,以及許多如何處理文件 layout 的詳盡範例。」 LaTeX: A Document Preparation System (Second Edition) Lamport, Leslie; Addison-Wesley; 1994; ISBN 0-201-52983-1; 256 頁. 詳見 [22]http://heg-school.awl.com/cseng/authors/lamport/latex/latex .html. Bruce Thompson:「由 LaTeX 2.09 作者所寫的終極參考資料,包括 LaTeX2e 的新版本(這個版本已包括在目前的 TeX/LaTeX 版本中)正在 準備中。LaTeX2e 完全支援 LaTeX 2.09。是任何想要使用 LaTeX 的必備 書籍。為文件的製作利用 LaTeX 中的各項工具來產生專業級文件,提供 了很不錯的介紹。並有許多範例。」 The TeXbook, Volume A of Computers and Typesetting; Knuth, Donald A. Addison-Wesley; 1986, ISBN 0-201-13448; 496 頁. 詳見 [23]http://www.awl.com/cp/TeXbook.html Bruce Thompson:「一本講 TeX,很重要的使用者指引及完全參考手冊。 或許一般情況下使用 LaTex 並不需要它,但儘管如此,這仍是一本很迷 人的書籍。」我要強調一下:這本書不是給膽小的人看的。 The METAFONT book, Volume C of Computers and Typesetting Knuth, Donald A.; Addison-Wesley; 1986; 0-201-13444-6, 1986; 384頁. 詳見 [24]http://www.awl.com/cp/METAFONTbook.html Bruce Thompson:「講 METAFONT(可用來設計給 TeX 使用的字型程式) ,具舉足輕重地位的使用者指引和參考手冊。如果您打算設計自己可在 TeX 和 LaTeX 下使用的字型,這是本很棒的傑作。一般的 TeX/LaTeX 版 本中都包括 METAFONT 這個程式。」這本書絕對不是給膽小的人看的。 6. 關於 C 和 C++ 程式設計的書籍 6.1 C 和 C++ The C Programming Language (Second Edition) Kernighan, Brian W.; Ritchie, Dennis M; Prentice-Hall; 1988; ISBN 0-13-110362-8, 272 頁. 改進後的第二版,包括了 ANSI C,是 C 語言書籍的經典名著,由 C 的 設計者「K&R」所合著。目前仍然是最棒的 C 語言書籍。 Who's Afraid of C++? Heller, Steve; Academic Press; 1996; ISBN 0-12-339097; 508 頁. 目前為止,我所看過最好的 C++ 入門書。 6.2 C 系統呼叫介面 POSIX Programmer's Guide: Writing Portable Unix Programs Lewine, Donald; O'Reilly; 1992; ISBN 0-937175-73-0; 607 頁. 詳見 [25]http://www.ora.com/catalog/posix/noframes.html. 一份講 POSIX.1 標準、同時也是程式設計者極佳的參考資料。我喜歡這 本書更甚於 JH 的選擇。 The Posix.1 Standard: A Programmer's Guide Zlotnick, Fred; Benjamin/ Cummings; 1991; ISBN 0-8053-9605-5; 379 頁.; $35.95 (USA). JH:「以前當我抱怨 Linux 在第二節中的 man pages 不夠時,有人告訴 我去找一本講 POSIX 的書就好啦,因為那正是 Linux 所做的。我喜歡這 本書,因為我不是一個專業的程式設計師,而本書的作者提供了相當豐富 的解釋與範例。」 7. 關於網路的書籍 Unix Network Programming Stevens, W. Richard; Prentice Hall; 1990; ISBN 0-13-949876-1; 772 頁.; $54 (USA). 所有您想知道關於這個主題的一切,以及一些您不想知道的(真的嗎?) 。雖然這本書在 Web 風行之前發行,但一般仍認為這是一本談基本概念 的重要書籍, Linux Network Administrator's Guide Kirch, Olaf; O'Reilly; 1995; ISBN 1-56592-087-2; 335 頁. 詳見 [26]http://www.ora.com/catalog/linag/noframes.html. 一份對於 Linux 下 TCP/IP 及其相關服務的實用指南。可在 [27]Linux Documentation Project 的首頁取得,或者您也可直接至 [28]http://sunsite.unc.edu/LDP/LDP/nag/nag.html 看看。 TCP/IP Network Adminstration Hunt, Craig; O'Reilly Associates, ISBN 0-937175-82-X; 1992; 472 頁. 詳見 [29]http://www.ora.com/catalog/tcp2/noframes.html. 與 Kirch 的書相較起來,專門談 Linux 的部份較少。其特色是深入探討 TCP/IP 的核心,包括 routing 和 BGP。 DNS and BIND (Second Edition) Albitz, Paul, and Liu, Cricket; O'Reilly; 1996; ISBN 1-56592-236-0; 1992; 438 頁; $32.95. See [30]http://www.ora.com/catalog/dns2/noframes.html. 深入探討 DNS,對於需要管理複雜的多重子網路之架設的人很有用。亦談 到 BIND 函式庫的程式設計。 Sendmail (Second Edition) Costales, Bryan & Allman, Eric; O'Reilly; ISBN 1-56592-222-0; 1997; 1050 頁; $32.95 詳見 [31]http://www.ora.com/catalog/sendmail2/noframes.html. 一本對 Linux 和 Unix 的預設郵件傳遞代理程式很詳盡(看了也很令人 精疲力盡)的指引。 8. 關於 Unix kernel 實作的書籍 8.1 Linux 的祖先 The Design of the Unix Operating System Bach, Maurice J.; Prentice-Hall; ISBN 0-13-201799-7; 470 頁.; $60 (USA). 促使 Linus 開始發展 Linux 的一本書。 Operating Systems, Design and Implementation; Tanenbaum, Andrew S.; Prentice-Hall; 1987. Alan Cox(Linux 重要的 kernel 發展成員之一)喜歡這本書。本書作者 Tanebaum 設計了 Minix,就是這套系統使 Linus 也想自己打造一個屬於 自己的作業系統 ── Linux。 8.2 Linux Linux Kernel Hackers' Guide Johnson, Michael K. 可以在 [32]Linux Documentation Project 的網頁上取得,或直接到 [33]http://www.redhat.com:8080/HyperNews/get/khg.html看看。 LINUX Kernel Internals (Second Edition) Beck, Michael & Bohme, Harold & Mirko, Dziadzka & Kunitz, Ulrich & Magnus, Robert & Verworner, Dick; Addison Wesley; 1998; ISBN:0-201-33143-8; 480. 詳見 [34]http://heg-school.awl.com/cseng/authors/beck.m/linux/linux. html. 一份對於 Linux kernel 程式設計的指引;包括 2.0。 8.3 Linux 的親戚 The Design and Implementation of the 4.4BSD Unix Operating System McKusick, Marshall Kirk, Bostic, Keith, Karels, Michael J., and Quarterman, John S.; Addison-Wesley; 1996; ISBN 0-201-54979-4; 608 頁. 詳見 [35]http://heg-school.awl.com/cseng/authors/mckusick/4.4bsd/4.4 bsd.html. 一本討論實作 4.3 BSD kernel 經典著作的續集,其影響了 Linux 的設 計(特別是在 sockets 和網路方面)。這本書涵蓋了以 4.4BSD 為基礎 的 BSD/OS、FreeBSD 和 NetBSD。 Porting Unix to the 386; Jolitz, William F., and Jolitz, Lynne G. Dr. Dobb's Journal; Jan 1991-July 1992. 9. 關於 Intel 處理器架構和程式設計的書籍 80386 Programmer's Reference Manual Intel Corp.; ISBN 1-55512-022-9; 1986; 第一篇、應用程式設計,資料型態、記憶體模式、指令集。第二篇、系統 程式設計:架構、記憶體管理、保護、多工、I/O、異常和中斷、起始、 協同處理以及多重處理。第三篇、相容性(與早期的 x86 機器)。第四 篇、指令集。 80386 System Software Writer's Guide Intel Corp.; ISBN 1-55512-023-7; 1987. 本書為作業系統的製作者說明 386 的特色。其中包括了一章專門講 Unix 的實作。386 的許多架構當初似乎是以 Multics 的概念來設計的; 然而這些特色並未被 DOS 或 Unix 所用。 Programming the 80386 Crawford, John H & Gelsinger, Patrick P.; Sybex; ISBN 0-89588-381-3; 774 頁.; $26.95 (USA). 這就是當時 Jolitzes 把 BSD 移植到 386 架構所用的一本書。 Pentium Processor User's Manual: Volume 3, Architecture and Programming Manual Intel Corp.; 1993; ISBN 1-55512-195-0; 上面列了相當多的 80386 程式設計師的 Pentium 版手冊。 10. 關於 PC 類硬體的書籍 注意:這些書都已經有四或五年的歷史,而且也可能過期了。我對硬體實在不熟 …… 80386 Hardware Reference Manual Intel Corp.; 1986; ISBN 1-55512-024-5; 針腳的連接、時脈、波形、區塊圖、伏特,所有諸如此類的東西。 The Indispensable PC Hardware Book Messmer, Hans-Peter; Addison-Wesley; 1993; ISBN 0-201-62424-9; 1000 頁. JH:「包括了較新的東西,如:EIDE 和 PCI。」 11. 例行公事 11.1 使用條款 (譯註:尊重作者原意,本段不翻) This document is copyright 1997 by Eric S. Raymond. You may use, disseminate, and reproduce it freely, provided you: * Do not omit or alter this copyright notice. * Do not omit or alter or omit the version number and date. * Do not omit or alter the document's pointer to the current WWW version. * Clearly mark any condensed, altered or versions as such. These restrictions are intended to protect potential readers from stale or mangled versions. If you think you have a good case for an exception, ask me. 11.2 歷史 這份文件原來是由 Jim Haynes 所維護的 mini-HOWTO。我已改變其重要性,使它 不再依賴於新聞群組上所發表的參考書目,並嚐試使它成為一份獨立成篇的文件 。若有任何歸類不當的小瑕疵,應是我造成的,而非 Jim Haynes。 References 1. mailto:desp@chinese.nccu.edu.tw 2. news:comp.os.linux.answers 3. http://sunsite.unc.edu/LDP/HOWTO/Reading-List-HOWTO.html 4. mailto:esr@thyrsus.com 5. http://sunsite.unc.edu/LDP/HOWTO 6. http://www.ccil.org/~esr/faqs/loginataka.html 7. http://www-mitpress.mit.edu/book-home.tcl?isbn=0262680920 8. http://www.ccil.org/ 9. http://www.awl.com/cp/authors/salus/unix/unix.html 10. http://heg-school.awl.com/cseng/authors/brooks/mmm-ae/mmm-ae.html 11. http://sunsite.unc.edu/LDP/gs 12. http://sunsite.unc.edu/LDP/sag 13. http://www.ora.com/catalog/esa2/noframes.html 14. http://www.ora.com/catalog/linuxnut/noframes.html 15. http://www.ora.com/catalog/runux2/noframes.html 16. http://www.ora.com/catalog/puis/noframes.html 17. http://www.awl.com/cp/Ches.html 18. http://www.ora.com/catalog/pperl2/noframes.html 19. http://www.ora.com/catalog/python/noframes.html 20. http://www.ora.com/catalog/html2/noframes.html 21. http://www.awl.com/cp/tlc.html 22. http://heg-school.awl.com/cseng/authors/lamport/latex/latex.html 23. http://www.awl.com/cp/TeXbook.html 24. http://www.awl.com/cp/METAFONTbook.html 25. http://www.ora.com/catalog/posix/noframes.html 26. http://www.ora.com/catalog/linag/noframes.html 27. http://sunsite.unc.edu/LDP 28. http://sunsite.unc.edu/LDP/LDP/nag/nag.html 29. http://www.ora.com/catalog/tcp2/noframes.html 30. http://www.ora.com/catalog/dns2/noframes.html 31. http://www.ora.com/catalog/sendmail2/noframes.html 32. http://sunsite.unc.edu/LDP 33. http://www.redhat.com:8080/HyperNews/get/khg.html 34. http://heg-school.awl.com/cseng/authors/beck.m/linux/linux.html 35. http://heg-school.awl.com/cseng/authors/mckusick/4.4bsd/4.4bsd.html