Linux 和 GNU 計劃

Richard Stallman

 [image of a Baby GNU] [ 加泰隆尼亞文 | 簡體中文 | 繁體中文 | 捷克文 | 英文 | 法文 | 義大利文 | 日文 | 韓文 | 波蘭文 | 葡萄牙文 | 俄文 | 克羅埃西亞文 | 斯洛伐克文 ]

每天都有許多計算機用戶使用一個被改動過的 GNU 系統 (18k 字節),但是他們並沒有意識到它。 經過一系列的事件,現在被廣泛使用的 GNU 版本則經常被稱作「Linux」,可是許多用戶並不了解與之相關的 GNU 計劃

Linux 確實存在;它是一個核心,許多人都在使用它。但是你不能僅僅使用核心本身。核心只有作為整個作業系統的一個部分才有用處。Linux 是和 GNU 作業系統結合在一起使用:系統本身是 GNU,與 Linux 作為核心一起工作。

許多用戶並不完全了解 Linux 核心和被稱作「Linux」的整個系統的區別。而不加區別地使用這個名字並不能對理解有幫助。

程式員一般都知道 Linux 是一個核心。但是因為他們通常也聽到整個系統被稱作「Linux」,他們會根據名字去想像歷史。比如,很多人認為當 Linus Torvalds 完成了核心後,他的朋友四處尋找其他的自由軟體,而且,沒什麼特別原因地,所有的可以被組裝成一個類似 Unix 系統的程式都是現成的。

他們的發現不是巧合 -- 這就是 GNU 系統。 可用的 自由軟體 加在一起就組成了一個完整的系統,這是由於自 1984 年就開始的 GNU 計劃一直在為此努力。 GNU 宣言(31k 字節) 早已設立了開發一個類似 Unix 的自由系統的目標,並稱作 GNU。GNU 計劃的起始公告 也勾畫了 GNU 系統的原始提綱。在 Linux 被編寫時,這個系統幾乎已經完成。

大多數自由軟體的計劃都是為了特定的工作開發特定的程式。比方說,Linus Torvalds 編寫類似 Unix 的核心(Linux); Donald Knuth 編寫一個文字格式化工具(TeX); Bob Scheifler 開發一個 X 視窗系統(X Windows)。 以其中一些特定的程序來對這些計劃進行評估是很自然的。

如果以這種方法來衡量對 GNU 計劃的貢獻,我們會得出什麼結論?一個 CD-ROM 的提供商發現在他們的「Linux 發行版」中,GNU 軟體 占最大的比重,大約占全部源碼的 28% ,而且這還包括一些關鍵的部件,沒有這些部件,系統就無法工作。Linux 本身占大約 3%。所以如果你要根據在此系統內的程式作者來選擇一個名字的話,唯一最合適的選擇是「GNU」。

但是我們不認為這是一個解決問題的適當方法。GNU 計劃以前不是,現在也不是一個開發某個軟體套件的計劃。它不是一個 開發 C 編譯器的計劃, 盡管我們做了。它也不是一個開發一個文字編輯器的計劃,盡管我們也做了。GNU 計劃的目標是開發一個完全自由的類似 Unix 的系統: GNU。

許多人已經為系統中的自由軟體作出了重大貢獻,他們都應該獲得榮譽。但 GNU 是一個系統而不是一些實用程式的組合的原因是,GNU 計劃的最初目標就是做一個完整系統。我們曾經為完成一個完整的系統做了一個所需程式清單,而且我們有系統地尋找,編寫這些程式,或找人來編寫清單上的每一個程式。我們編寫了關鍵的但是十分枯燥的主要部件,比如匯編語言和連接器,因為這是系統所必需的。除了編程工具,一個完整的系統還需要更多的東西, Bourne Again SHell 程式, PostScript 直譯器 Ghostscript, 和 GNU C 庫 同樣是很重要的。

到了 90 年代初期,我們曾經把除了核心以外的東西放到一起組成了一個系統(我們同時也在做核心的工作,稱為 GNU Hurd, 執行在 Mach 上)。開發這個核心比我們想像的要難得多,我們現在仍然在 設法完成它

慶幸的是,你不必再等了,因為 Linux 開發成功。當 Linus Torvalds 寫成了 Linux,他填補了一個重要的空白。人們可以將 Linux 和 GNU 系統組成一個完整的自由系統:基於 Linux 的 GNU 系統(或簡稱為 GNU/Linux 系統)。

把它們組合到一起聽起來很容易,但是這並不是一個簡單的工作。 GNU C 庫 (簡稱 glibc) 需要作大量的修改。整合到一個完整的發行系統並使其可以 ``活起來'' 也是一項很大的工作。它需要對如何安裝和啟動系統進行適當安排 -- 這個問題直到現在還在完善,因為我們還沒有抓住要點。那些開發了不同的發行系統的人們作出了巨大貢獻。

除了 GNU,還有一個獨立進行的計劃開發了一個自由的類似 Unix 的操作系統。這個系統被稱為 BSD,它是由 UC Berkeley 開發的。 在 GNU 計劃的鼓舞下,BSD 的開發者開始進行他們自己的自由軟體的開發工作,並時常受到 GNU 人士的鼓勵,但是他們的實際工作與 GNU 重覆性不大。今天 BSD 系統採用一些 GNU 軟體,就像不同版本的 GNU 系統也採用 BSD 的軟體一樣。總的說來,它們是兩套獨立開發的不同的系統。今天一個免費的操作系統幾乎都是採用 GNU 或 BSD 系統的一個衍生版本。

GNU 計劃支持 GNU/Linux 系統,就像支持 GNU 系統一樣 -- 包括資金的支持。我們為重寫與 Linux 相關的 GNU C 庫提供資金,因此它們現在可以很好地整合在一起,直到最新版本的 GNU/Linux 仍在使用這個庫而無需修改。我們也為早期 Debian GNU/Linux 的開發提供資金。

今天我們的絕大多數的工作都在基於 Linux 的 GNU 系統上完成,我們希望你也如此。但是請不要含糊地使用 Linux 而使公眾迷惑。Linux 是核心,系統的關鍵部件之一。系統或多或少實際上都應該是 GNU 系統,再加上 Linux。當你在討論到這個組合系統時,請使用 「GNU/Linux」。

如果您要連接到 GNU/Linux 以取得進一步的參考,本頁和 http://www.gnu.org/gnu/the-gnu-project.html 都是很好的選擇。如果你想的是 Linux(核心), http://www.kernel.org/是一個很好利用的 URL。


返回 GNU 主頁

請將查詢以及問題藉由 gnu@gnu.org 送到 自由軟體基金會 以及 GNU 專案。
也有 別的方法可以聯絡 自由軟體基金會。

對於網頁的意見請送到 webmasters@www.gnu.org
對於其他問題則可以送到 gnu@gnu.org

Copyright 1997, 1998 Richard Stallman

中文翻譯:白若玉
翻譯校正:劉昭宏

本文允許在不變更文件內容的前提下刊登在任何型態的媒體中,但需保留此註記。

Updated: 30 Nov 2000 paulv