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