zetavg/zh-tw-wikipedia huggingface dataset:
GNU_FreeFont

**GNU FreeFont**，又稱為**自由的通用字元集輪廓字體**（英語：**Free UCS Outline Fonts**），是一組自由的高品質的輪廓（OpenType、TrueType 及 WOFF）字體，目標是盡可能的包含通用字元集的大多數字元。此專案於 2002 年由 Primož Peterlin 發起，而現在則由 Steve White 維護。

此套字體以 GNU GPLv3 包含 GPL 字型例外的方式授權，確保其可以自由的被散佈，且這樣就可以讓這些字體嵌入檔案中而不讓文件本身受到 GPL 的影響。

此字體家族包含了三種字體，分別稱為 FreeMono、FreeSans、及 FreeSerif，每一個都有四種風格。這些字體可以從 GNU Savannah 上免費獲得。

## 歷史

這套字體的核心是 35 種由 URW++ 設計與開發有限公司為 Ghostscript 專案所捐贈的 Type 1 字體，同樣以 GPL 授權。基本的西里爾字母範圍是基於 Valek Filipov 的 Cyrillic 及 Omega Serif 字體。Valek Filippov 加入了一些複合的拉丁字母擴展 A 的字體。
Angelo Haritsis 收集了一套希臘文的 Type 1 字體，在 FreeSans 及 FreeMono 中可用。有襯線的梵文字體則是從 Velthuis TeX 字體而來，而無襯線的部份則是基於 Gargi；孟加拉文及古木基文是基於 Harsh Kumar 的 BharatBhasha 專案及其他專案。古吉拉特文及奧里亞文是基於 Samyak 字體。吉茲字母是基於在漢堡大學中的衣索比亞元字體專案。

## Unicode 覆蓋範圍

在最新的 2012-05-03 釋出的版本中：

* **FreeSerif** 字體包含了 10,537 個字，有正規、斜體、粗體及粗斜體四種風格。
* **FreeSans** 字體包含了 6,272 個字，有正規、斜體、粗體及粗斜體四種風格。
* **FreeMono** 字體包含了 4,178 個字，有正規、斜體、粗體及粗斜體四種風格。

這個字體家族包含了以下的 Unicode 字元區塊：

## 參見

* 自由軟體 Unicode 字體
* 字型列表
* Unicode 字體

## 參考資料

## 外部連結

* GNU FreeFont
* 自由的通用字元集輪廓字體專案首頁
GNU_GLOBAL

**GNU GLOBAL**，是一個軟體工具，用來作程式碼標籤，以利於閱讀程式碼。可以運作在多種不同環境（如 GNU Emacs，Vim，GNU less，GNU Bash 或網頁瀏覽器等），讓使用者可以尋找到程式碼中的某個特定物件，而且在程式碼中來回移動。功能類似於 ctags，etags 或 cscope。

GNU GLOBAL 是自由軟體，以 GPL 條款釋出，由 GNU 計劃維護。

## 參見

* GNU 軟體套件列表

## 參考
GNU_Gatekeeper

**GNU Gatekeeper**（簡稱 GnuGK）是一個基於 OpenH323 來發展的開放原始碼 H.323 gatekeeper 計劃。所謂的 H.323 gatekeeper，定義於 H.323 標準中，負責對 H.323 的系統提供位址轉換、通話控制、路由決定、認證計費等服務。

## 功能特色

GnuGK 實作許多豐富實用的特性，包括

* 可跨平台，目前已移植到 Linux、Windows、Mac OS X、Solaris、FreeBSD、OpenBSD 以及 NetBSD。
* 可自訂策略的路由機制。
* 來源以及目標號碼的改寫。
* 完整的 H.323 代理功能，包含 RTP／RTCP 媒體和 T.120 資料通道。
* 可穿越 NAT 的 Citron's NAT 技術。
* 以鄰近（neighbor）、父子（parent/child）和替代（alternate）GK 等方式達到的叢集支援。
* 可透過 TCP 狀態埠進行監看與控制。
* 部分的 H.235 安全支援。
* 可以 SQL 資料庫、radius 或外部程式支援通話認識與計費。

## 授權方式

以 GNU 通用公眾授權條款的方式授權。此外，作者明確的允許將執行檔與 OpenH323 和 OpenSSL 函式庫做連結。這是必要的，因為 GNU GPL 與這些函式庫的授權並不相容。

## 發展歷史

最初的版本是由 Xianping Chen、Joe Metzger 和 Rajat Todi 所開發，做為實驗用途。在 1999 年初，本計劃的主持人 Jan Willamowius 找到這支程式，並說服原作者以 GNU GPL 的方式釋出原始碼。

隨後，程式被移植到更新版的 OpenH323，並被命名為 **OpenH323 Gatekeeper**，簡寫為 **OpenH323GK**。在德國的 mediaWays 公司隨後加入，提供了 LDAP 子系統與交疊傳送（overlapped sending）的支援。到了 2000 年，大約已有十餘人加入，提供程式碼或協助測試。功能已相當堪用。不過，相較於另一個類似計劃 OpenGatekeeper，功能上仍遜色許多。

在 2001 年，當時任職台灣呈祺資訊公司技術長的黃志偉和他的團隊開始加入，修改並使用此計劃於其 VoIP 服務中。增強了系統的穩定性，大幅改善效率，並加入許多新的特性，例如多緒安全的執行時期表格，鄰近和父子 GK，以及認證模組。他的加入引導了此計劃的重大變革。2001 年九月，OpenH323GK 1.0 正式釋出，為此計劃的一大里程埤。

到了 2002 年底，GnuGK 2.0 正式發佈。它包含重新設計的路由模式（routed mode）架構，並能同時處理上千個通話。此外，還有完整的 H.323 proxy 和 Citron's NAT 技術，為 H.323 穿越 NAT 的問題提供了完善的解決方案。這些特色使得 GnuGK 成為具有電信等級的 H.323 gatekeeper，能真正應用於商業運轉。

2005 年初發佈了 2.2 版，包含了多緒處理的 RAS 子系統，可客製化的路由策略，以及更有彈性的鄰近系統。小幅度的問題解決與改善仍持續至今。

## 更名

隨著功能日益完善，計劃日趨成熟也更受歡迎。然而，愈來愈多的人搞不清楚此計劃的真正名稱。因為當時至少有三個其它同樣根基於 OpenH323 的開放原始碼 gatekeeper 計劃，而且名稱都非常的類似。。根據計劃主持人 Jan Willamowius 的說法，與其它計劃名稱相同並不是我們的錯，我們是第一個採用這名稱的開放原始碼計劃。然而，經過主要開發者的討論後，決定將名稱改為 **GNU Gatekeeper**，簡稱 **GnuGK**。因為在所有類似計劃中，這是唯一一個以 GNU GPL 授權的。不過請不要誤會，它並非 GNU 計劃的一部分。

## 相容性

在官方網站維護了一份與其它 H.323 軟體和產品的互通性測試結果清單（頁面存檔備份，存於網際網路檔案館）。由於 GnuGK 可免費並自由的使用，日漸受到歡迎，新的產品通常會宣稱已通過與 GnuGK 的相容性測試。

## 主要貢獻者

現代的系統架構和主要特色是由黃志偉（cwhuang）所設計，包括多緒架構、H.323 proxy 以及 NAT 穿越技術等。

Michal Zygmuntowicz 貢獻了 radius 支援和一些其它改進。

Jan Willamowius 是目前計劃的協調人與維護者。

## 相關連結

* Voice Over IP
* 網路位址轉換

## 參考來源

## 外部連結

* 官方網站（頁面存檔備份，存於網際網路檔案館）
* 德文網站（頁面存檔備份，存於網際網路檔案館）
* GnuGK 技術檔案
* GkGui（頁面存檔備份，存於網際網路檔案館）利用 Java 所開發的圖形化使用介面
* GnuGK ACD（頁面存檔備份，存於網際網路檔案館） GnuGK 的自動通話分配器（ACD）
* 2003 年，自由軟體鑄造場 GNU GateKeeper 的開放 VoIP 技術經驗
GNU_Go

**GNU Go** 是自由軟體基金會所研發的圍棋軟體。它的原始碼具有可移植性，能夠輕易的編譯成 GNU/Linux 的軟體，也可移植到類 Unix 系統或 Microsoft Windows 和 Mac OS X 上運行。

## 簡介

GNU Go 除了可以使用 ASCII 介面對弈外，另外支援兩種協定 —— 圍棋數據機協定（Go Modem Protocol）和圍棋文字協定（Go Text Protocol），且可轉成圖形使用者介面對弈，目前存在許多 GNU Go 的圖形使用者介面。GTP 也可在圍棋伺服器進行線上對弈（原先用在橋牌軟體上），在 NNGS、KGS 和其它平台，也有它的複製品在運行。

## 棋力

GNU Go 等級分為 0~10 級，其中 0 級是最弱，10 級是最強。在程式與玩家對弈圍棋時，9x9 棋盤約有 5 到 7 級的強度，並且支援從 5x5 到 19x19 多種棋盤大小。

在級別的效能上，2009 年，GNU Go 曾與最頂尖的商業軟體在良好的硬體執行下一起比較，大約弱 6 到 7 子，但是此時一起比較的最強軟體，並非使用蒙地卡羅方法。

GNU Go 在許多電腦圍棋競賽表現出色。例如它拿下 2003 年和 2006 年的奧林匹亞電腦競賽。

### CGOS

在 CGOS 上，GNU Go 被當作基準分數，帳號為 `Gnugo-3.7.10-a1`，固定 Elo 與 BayesElo 分數為 1800 分，並且常態性在上面對弈，以維持分數穩定性。

## 相關連結

* 電腦圍棋
* 圍棋軟體

## 參考資料

## 外部連結

* GNU Go 官網（頁面存檔備份，存於網際網路檔案館）
GNU_Guile

**GNU Guile** 是 GNU 計劃首選的擴充系統，是 Scheme 程式設計語言的一種實現。Guile 實現了 Scheme 標準 R5RS、大部份的 R6RS 和完全的 R7RS，一些 Scheme 實現要求（SRFI）和很多自己的擴充。Guile 提供了「libguile」可將語言嵌入至其他程式並通過 CAPI 緊密的結合。同樣的，新的類型和子程式的定義也可以通過 C API 擴充 Guile 自身。

## 相關條目

* GNU 計劃
* Lisp 語言
* Scheme 語言

## 參考資料

## 外部連結

* GNU Guile 官方網站（頁面存檔備份，存於網際網路檔案館）
* GNU Guile 官方手冊（頁面存檔備份，存於網際網路檔案館）
* Guile 與 GTK+ 2 的繫結（頁面存檔備份，存於網際網路檔案館）
* IBM developerWorks 用 Guile 編寫指令碼（頁面存檔備份，存於網際網路檔案館）
GNU_Guix

**GNU Guix**（/ɡiːks/）是一個跨平台的包管理器，也是一個用於實例化和管理類 Unix 作業系統的工具。其基於 Nix 包管理器與 Guile Scheme API，只提供自由軟體。 GNU Guix 是 GNU Guix SystemGNU/Linux 發行版的預設包管理器。

與傳統的包管理器不同，Guix（如 Nix 一樣）採用了純函數式的部署模型，軟體被安裝到通過密碼雜湊生成的唯一的目錄中。每個軟體的依賴都包含在雜湊當中，解決了依賴地獄的問題。 這種包管理方法更有可能產生更可靠、可複製和可移植的包。

Guix 中的包使用一種專用的，名為 Guile Scheme API 的語言來進行定義。依賴通過被稱為「衍生」的特殊值在這種語言中被跟蹤，這些值將被 Guix 行程評估。Guix 會跟蹤這些值，以便在沒有其他軟體套件依賴它們時，可以被刪除。以更大的儲存需求為代價，Guix 保證其所有操作是原子操作並可被回滾。

GNU Guix 的開發與 GNU Guix System 交織在一起（直到 Guix 1.0：Guix 系統發行版 [GuixSD]）。GNU Guix System 是一個使用 Hurd 核心和 GNU Shepherd init 系統的完整的 GNU 系統。

該專案由志願者團隊在網際網路上協調，並由法國非營利組織 Guix Europe 負責。

## 參考資料
GNU_Gzip

**Gzip** 是一種壓縮檔案格式並且也是一個在類 Unix 上的一種檔案解壓縮的軟體，通常指 GNU 計劃的實現，此處的 gzip 代表 GNU zip。也經常用來表示 gzip 這種檔案格式。軟體的作者是 Jean-loup Gailly 和 Mark Adler。在 1992 年 10 月 31 日第一次公開發布，版本號 0.1，1993 年 2 月，釋出了 1.0 版本。

OpenBSD 中所包含的 gzip 版本實際上是 compress 程式，其對 gzip 檔案的支援在 OpenBSD 3.4 中被添加，此處的 g 代表免費（gratis）。

## 檔案格式

gzip 的基礎是 DEFLATE，DEFLATE 是 LZ77 與哈夫曼編碼的一個組合體。DEFLATE 最初是作為 LZW 以及其它受專利保護的資料壓縮演算法的替代版本而設計的，當時那些專利限制了 compress 以及其它一些流行的歸檔工具的應用。

檔案格式說明：

* 10 位元組的頭，包含幻數、版本號以及時間戳
* 可選的擴充頭，如原檔名
* 檔案體，包括 DEFLATE 壓縮的資料
* 8 位元組的章節附註，包括 CRC-32 校驗和以及未壓縮的原始資料長度

儘管這種檔案格式允許多個這樣的資料拼接在一起，在解壓時也能認出它們是拼接在一起的資料，但通常 gzip 僅用來壓縮單個檔案。多個檔案的壓縮歸檔通常是首先將這些檔案合併成一個 tar 檔案，然後再使用 gzip 進行壓縮，最後生成的.tar.gz 或者.tgz 檔案就是所謂的「tar 壓縮檔」或者「tarball」。

注意不要將 gzip 和 ZIP 壓縮格式混淆。ZIP 也使用 DEFLATE 演算法，而且可移植性更好，不需要一個外部的歸檔工具就可以包容多個檔案。但是，由於 ZIP 對每個檔案進行單獨壓縮而沒有利用檔案間的冗餘資訊（即結實壓縮），所以 ZIP 的壓縮率會稍遜於 tar 壓縮檔。

## gzip 命令的常用選項

* -c，--stdout 將解壓縮的內容輸出到標準輸出，原檔案保持不變
* -d，--decompress 解壓縮
* -f，--force 強制覆蓋舊檔案
* -l，--list 列出壓縮檔內儲存的原始檔案的資訊（如，解壓後的名字、壓縮率等）
* -n，--no-name 壓縮時不儲存原始檔案的檔名和時間戳，解壓縮時不恢復原始檔案的檔名和時間戳（此時，解出來的檔案，其檔名為壓縮檔的檔名）
* -N，--name 壓縮時儲存原始檔案的檔名和時間戳，解壓縮時恢復原始檔案的檔名和時間戳
* -q，--quiet 抑制所有警告資訊
* -r，--recursive 遞迴
* -t，--test 測試壓縮檔案完整性
* -v，--verbose 冗餘模式（即顯示每一步的執行內容）
* -1、-2、...、-9 壓縮率依次增大，速度依次減慢，預設為 - 6

## 衍生品和其它應用

在大多數 Linux 發行版中，通過使用 zx 選項來提取.tar.gz 格式的壓縮檔案，例如：tar -zxf file.tar.gz。

zlib 是 DEFLATE 演算法的實現庫，它的 API 同時支援 gzip 檔案格式以及一個簡化的資料流格式。zlib 資料流格式、DEFLATE 以及 gzip 檔案格式均已被分別標準化為 RFC 1950、RFC 1951、RFC 1952。

gzip 在 HTTP 壓縮 （頁面存檔備份，存於網際網路檔案館），一種在全球資訊網中加速傳輸 HTML 和其他內容的技術。它是在 RFC 2016 中規定的三種標準 HTTP 壓縮格式之一。這個 RFC（徵求意見稿）頁定義了一種叫做 "DEFLATE" 的 zlib 格式，它和 gzip 格式相同，除了 gzip 添加了 11 位元組頭部和尾部的負載。但是，現在還是建議使用 gzip 而不是 zlib，因為根據 RFC 1950, IE（頁面存檔備份，存於網際網路檔案館）還沒有正確的實現該標準，還不能處理 zlib 格式。

zlib DEFLATE 已經在 Portable Network Graphics （頁面存檔備份，存於網際網路檔案館）（PNG）格式中使用。

自 20 世紀 90 年代末期以來，一個基於資料塊排序演算法的檔案壓縮工具 bzip2 作為 gzip 的替代者逐漸得到流行，它可以生成相當小的壓縮檔案，尤其是對於原始碼和其他結構化文字更是這樣，但代價是最高達 4 倍的記憶體與處理器時間消耗。bzip2 壓縮的 tar 包傳統上叫作.tar.bz2 或.tbz。

AdvanceCOMP 和 7zip 內部也有一個 DEFLATE 實現，可以製作 gzip 相容的壓縮檔案，與 gzip 相比有更高的壓縮率，不過比較耗費處理器的處理時間。

gzip 壓縮檔案對應的解壓程式是 **gunzip**。

## 參見

* 歸檔格式列表
* 歸檔工具列表
* 歸檔工具比較
* Unix 程式列表
* .tar.gz.gpg
* 自由檔案格式

## 參考資料

## 外部連結

* gzip 檔案格式規範（頁面存檔備份，存於網際網路檔案館）
* gzip 首頁 （頁面存檔備份，存於網際網路檔案館）以及 http://www.gzip.org/（頁面存檔備份，存於網際網路檔案館）
* Zlib 首頁 （頁面存檔備份，存於網際網路檔案館）
* GZIP 相關的資源、教程及原始碼（頁面存檔備份，存於網際網路檔案館）
* gzip 恢復工具箱 （頁面存檔備份，存於網際網路檔案館）
* The Online Marketing Benefits of gzip
GNU_HURD

**GNU Hurd** 是一套作業系統核心，以微核心架構設計。Hurd 是 GNU 作業系統的核心部份。GNU 計畫從 1990 年開始開發 GNU Hurd，並且將它作為一個遵循 GPL 的自由軟體釋出。Hurd 的目標是從功能、安全性和穩定性上全面超越傳統 Unix 核心，而同時又能保持對其的相容性，為此 Hurd 遵守 POSIX 標準。

「**HURD**」是一個間接遞迴縮寫，來自「HIRD of Unix Replacing Daemons」，其中「**HIRD**」表示「HURD of Interfaces Representing Depth」。

## 歷史

1983 年，理察・斯托曼提出 GNU 計劃，希望發展出一套完整的開放原始碼作業系統來取代 Unix，計劃中的作業系統，名為 GNU。根據湯瑪斯・布希內爾的回憶，最早自由軟體基金會使用 TRIX 來開發作業系統，但在 1986 年放棄這個計畫。在此後，他們原希望以輕量化後的 4.4BSD 為基礎進行開發。

1987 年，理察・斯托曼決定以 Mach 微核心進行開發，認為可以藉此加速作業系統的開發，但因為一直不確定卡內基梅隆大學何時要將核心原始碼釋出，造成計畫三年進展緩慢。他在之後承認這是個錯誤。

1989 年，GNU 計畫中的其他部份，如編輯器、編譯器、Shell 等都已經完成，獨缺作業系統核心。1990 年，自由軟體基金會開始正式發展 Hurd。

1991 年，Linux 核心首次釋出，GNU 計劃中，運作使用者層級的應用軟體經過修改移植後，可以在 Linux 之上使用，因而很多開發者轉向 Linux。Linux 成為最常見的 GNU 系統軟體運作平台。

2005 年，Hurd 的開發者 Neal Walfield 完成了 Hurd/L4 基本的記憶體管理架構，Marcus Brinkmann 移植了 glibc 的重要部分。2006 年，Coyotos 開發者嘗試將 Coyotos 核心移植到 Hurd 下。

但是，Hurd 開發者在 2007 年又放棄了 L4 與 Coyotos，重新著手開發以 Mach 為基礎的 GNU Mach 上。

## 相關

### 誤解

Hurd 經常被人誤認為是一個核心，事實上它只是一套微核心伺服程序，而真正的核心部分則是在其下方。而關於最底層的核心，除了 Mach 外，Hurd 開發團隊還曾選擇過 L4。

### 與 Linux 的差別

如果沒有 Hurd 的計劃，而 Linux 核心已經出現的話，GNU 可能不會有這一計劃。但在 Linux 之前，GNU Mach 就已經被計劃。GNU 則希望這先進的架構能夠讓自由軟體更具有威力。

GNU 的作業系統中預期的核心就是 Hurd/GNU Mach。而不是 Linux，一般常見的 Linux 作業系統又可稱為 GNU/Linux。而 GNU 作業系統則是維持以 Hurd 和 GNU Mach 作為未來的發展計畫。

### 基於 GNU/Hurd 的作業系統發行版

* Bee GNU/Hurd
* Debian GNU/Hurd
* Arch Hurd

## 外部連結

* （英文）GNU Hurd（頁面存檔備份，存於網際網路檔案館）
* （英文）Arch Hurd
* （英文）Debian Hurd（頁面存檔備份，存於網際網路檔案館）

## 參考資料
GNU_Health

**GNU Health** 是一個著重於公共衛生與社會醫學的自由醫院資訊系統。其功能包含了電子健康紀錄的管理與實驗室資訊管理系統的功能。

它被設計為可在多種平台上執行，支援 GNU/Linux 發行版、FreeBSD、Windows 與 macOS。它也支援如 PostgreSQL 等多種不同的資料庫。其以 Python 編寫，並使用 Tryton 框架做為其中一部份的組成元件。

GNU Health 已被聯合國大學採用。2011 年時，其成為了 GNU 官方軟體包。其在自由軟體基金會在麻州大學波士頓分校舉辦的 LibrePlanet 2012 上獲得了對社會最有助益專案獎。

GNU Health 是 GNU Solidario 的一個專案，其為一個致力於在健康與教育領域使用自由軟體的非營利性非政府組織。

## 歷史

GNU Health 由 Luis Falcón 在 2008 年開始開發，當時是鄉村地區的健康促進與疾病預防的專案，其初始名稱為 Medical。現在已經變成了醫院資訊管理系統，並擁有跨領域的國際貢獻者團隊。

在 2011 年 8 月時，理查・史托曼宣佈 GNU Health 成為官方 GNU 軟體包。此後，開發工作從 SourceForge 轉換至 GNU Savannah。

## 使用

GNU Health 適用於衛生機構與政府，其包含了日常臨床實踐、管理資源與改善公共衛生的功能。

## 功能

GNU Health 使用了圍繞著核心開發不同模組的方式，如此可以包含不同的功能以符合不同機構的需求。部份主要的軟體包為：

## 文化影響

* GNU Health 在世界衛生組織會議上的 WSIS 論壇中被介紹為「改善婦女與兒童健康資訊與責任的資訊通訊技術」。
* GNU Health 在 2012 年獲得了自由軟體基金會的社會貢獻專案獎。
* GNU Health 贏得了 PortalProgramas 的 2012、2014 與 2015 年的最具革命性自由軟體獎與 2012 年的最大增長潛力獎。
* GNU Health 在 2016 年獲得了開放原始碼商業獎的 Sonderpreis 獎。

## GNUHealthCon

GNUHealthCon 是由 GNU Solidario 所組織的年度會議。其提供了開發者、建置者與社群成員在三天內的見面機會。其包含了社會醫學、技術討論、實作案例與工作坊。

## GNU Health 社會醫學獎

GNU Health 社會醫學獎頒獎典禮是 GNUHealthCon 的一部份。此獎項旨在表彰致力於改善弱勢群體的個人與組織。獎項共分三類：個人、組織與 GNU Health 實作。

GNU Health 社會醫學獎

## 參見

* GNU Solidario
* GNU 計劃

## 參考資料

## 外部連結

* 官方網站
* GNU Health 翻譯網站（頁面存檔備份，存於網際網路檔案館）
* GNU Health Con（頁面存檔備份，存於網際網路檔案館）
* GNU Solidario（頁面存檔備份，存於網際網路檔案館）
* GNU LIMS（頁面存檔備份，存於網際網路檔案館）
* Tryton 專案網頁（頁面存檔備份，存於網際網路檔案館）
* 歐洲共同體開放原始碼觀察站與知識庫（頁面存檔備份，存於網際網路檔案館）
GNU_Hello

**GNU Hello** 是一個相當平凡的自由軟體，它會在螢幕上顯示 "Hello, world!" 或其翻譯。它可以顯示不同格式的訊息或是自訂訊息。此程式的主要目的是作為 GNU 程式碼標準的範例，展示如何撰寫根據輸入而執行不同工作的程式，並作為 GNU 軟體維護者實踐的模型。因此它可以作為較新、更重要的軟體專案的模板。

## 參見

* Hello World
* GNU

## 參考資料

## 外部連結

* 軟體首頁 Archive.is 的存檔，存檔日期 2014-05-29
GNU_IceCat

**GNU IceCat**，原稱作 **GNU IceWeasel**，是一個由 GNU 計劃釋出的網路瀏覽器。IceCat 是一個完全的自由軟體，是一個 Mozilla Firefox 的分支。

## 歷史

在 2007 年 9 月前，GNU IceCat 被稱作 GNU Iceweasel。為了避免與 Iceweasel 混淆，此後改名為 Icecat。

## 參見

* Firefox
* GNU

## 參考文獻

## 外部連結

* Gnuzilla 與 IceCat 的首頁（頁面存檔備份，存於網際網路檔案館）
GNU_LGPL

**GNU 較寬鬆公共授權條款**（英語：GNU **L**esser **G**eneral **P**ublic **L**icense，簡稱：**LGPL**）是由自由軟體基金會公布的自由軟體授權條款。它允許企業與軟體開發者使用，或將 LGPL 授權的軟體整合至他們自己的軟體內（即使該軟體是私有軟體也被允許），同時不會受到 Copyleft 特性的授權條款強制對軟體開源的限制。該授權條款常被用於一些（但不是全部）GNU 程式庫。

這個授權條款以前被稱為 **GNU 程式庫通用公眾授權條款**（GNU Library General Public License）。此授權條款最新版本為「第 3 版」，2007 年 6 月 29 日釋出，較早的版本有 2.0 和 2.1 版。此種授權之出現，是為了在 GPL 與許可式授權（如 MIT 授權條款及柏克萊大學的 BSD 授權條款）間取得折衷。

採用 LGPL 之計畫本身雖然仍有「Copyleft」之限制條件，但這些限制不感染僅僅只聯結到本計畫的軟體。不過此等軟體仍會受到其他限制。

LGPL 主要使用之標的為軟體函式庫（Software Libraries），但是其亦可使用於獨立存在的應用程式。比較有名的例子為 Mozilla 跟 OpenOffice.Org。

## 歷史

LGPL 原本被稱爲 **GNU Library General Public License**，最初於 1991 年發布，爲與 GPLv2 保持一致而採用 2.0 版的編號。授權條款的 2.1 版與 1999 年在修訂後發布。與此同時，它被重新命名爲 **GNU Lesser General Public License**，以顯示 FSF 認爲並不是所有程式庫都應當採用該授權條款的態度。LGPL 的第 3 版於 2007 年發布，它以在 GPL 第 3 版之上附加應用一系列許可的方式表現。

## LGPL 與 GPL 差異之處

LGPL 有一特點是 LGPL 軟體可以被轉換成 GPL（參見 Section 3）。這種特性對於在 GPL 函式庫或應用程式中直接使用 LGPL 程式有一定程度之幫助。

## 程式語言要求

LGPL 協定主要是面向使用 C 語言 以及類 C 語言。Franz Inc. 釋出了 LLGPL 協定，增加了序言部分以澄清 LISP 語言中的上下文問題。

另外 Ada 語言還有一個特殊的特性 —— 泛型，所以需要使用 LGPL 的另一個變種 GNAT Modified General Public License：允許代碼連結一些特殊情況，以避免被 GPL 所覆蓋。

C++ 模板和只有標頭檔的庫也會遇到類似於 Ada 的泛型問題。LGPL 的第三版在第三小節中專門處理了這方面的特殊情況。

## 可閉源特性

由於許多程式設計師都弄不清各種授權條款之間的差別，導致一些開源專案成為了小部份別有用心人士所利用的物件，較著名的例子有 DivX，早期 DivX 雛形是一個使用 LGPL 授權條款的自由軟體，由大部份優秀的軟體高手義務地開發，但當軟體漸漸成形時，DivX 的公司 DXN 利用 LGPL 的漏洞對 DivX 進行了閉源，大部分軟體愛好者都感到被出賣，所以著手開發了 XviD。雖然 XviD 在軟體方面明顯比 DivX 優秀，但市場占有率卻不如 DivX。

## 參見

* Copyleft
* GNU Affero 通用公眾授權條款
* GNU 通用公眾授權條款
* GNU 自由文檔許可證
* GNU 較寬鬆公共許可證
* BSD 授權條款
* Mozilla 公眾授權條款
* MIT 授權條款
* Apache 授權條款
* 使用 LGPL 授權條款的軟體（分類）

## 參考資料

## 外部連結

* LGPL 英文版 （頁面存檔備份，存於網際網路檔案館）
* LGPL v2.1 非正式中譯版 2.1 版 （頁面存檔備份，存於網際網路檔案館）
* LGPL v3 非正式中譯版 3 版 （頁面存檔備份，存於網際網路檔案館）
* GNU 較寬鬆公共許可證（中譯版）1999 年 2 月，2.1 版（繁體中文）
* 五種開源協定的比較（BSD,Apache,GPL,LGPL,MIT） - 整理 （頁面存檔備份，存於網際網路檔案館）
GNU_Libreboot

**Libreboot**（原名為 **GNU Libreboot**）是一個目標為取代專有的 BIOS 韌體的自由軟體，僅執行最少的工作來載入並執行現代的 32 位元或 64 位元作業系統。

## 特徵

Libreboot 被設定為沒有專有的二進制大型物件的 coreboot。但 Libreboot 並不是 coreboot 的直接分支；相反地，其與它的上游 coreboot 並行且緊密合作，並會把所有上游的新東西引入自己的原始碼裡面，並儘可能將補丁合併回上游。除了移除專有軟體以外，libreboot 也會試著透過組建自動化與簡化安裝過程來讓 coreboot 更易於使用。

Libreboot 專案做出讓一些 ThinkPad、Chromebook 與 MacBook 筆記型電腦與伺服器和工作站主機板的完全自由變體可以正確執行的修改。根據其本身的檔案，它可以執行任何在顯示上使用核心模式設定（KMS）的 Linux 發行版，而 Microsoft Windows 不被支援，Libreboot 也不鼓勵使用它。而對 BSD 的支援程度則多半未經測試，但是有一些成功讓 OpenBSD 與 NetBSD 啟動的回報。

## 歷史

自由軟體基金會（FSF）認可 Libreboot，其也在 2016 年 5 月 14 日成為 GNU 計劃的官方專案。然而，在 2016 年 9 月 16 日時，做為對 GNU 計劃因為員工回報性騷擾而開除一名跨性別員工的回應，Libreboot 的首席開發者 Leah Rowe 宣佈抵制 FSF 並將 Libreboot 從 GNU 計劃中移除。FSF 方面則於 2016 年 9 月 16 日公開否認這些指控。Rowe 則於 2016 年 9 月 23 日進一步指控 FSF「不讓 Libreboot 離開」。Libreboot 貢獻者則指稱 Leah Rowe 決定從 GNU 單方面分離，並把她的個人意見當作整個 Libreboot 社群的意見發佈，但也沒有事先問過其他貢獻者。到了 2017 年 1 月，理察・斯托曼宣佈將 Libreboot 從 GNU 計劃中移除。

2017 年 4 月 2 日，對 GNU 的批評被移除，而系統管理員 Alyssa Rosenzweig 也宣佈了 Libreboot 網頁不再僅一人控制。對於歧視性開除的謠言是否屬實，她說「也許是。也許不是。」Leah Rowe 也在信中道歉：「傷害了很多人，其中大多數人並未參與任何相關的事件。」三個星期後，在一篇在 Reddit 上的貼文中，Rowe 澄清說，她仍持續參與 Libreboot，但已不再擔任專案領導人。她也對離開 GNU 表示遺憾，並表示大多數的 Libreboot 開發者都贊成重新加入。

## 安全問題

2017 年 5 月 1 日，英特爾確認並修復了一個在其管理引擎韌體中的遠端提升權限漏洞 CVE-2017-5689，這是一個 Coreboot 與 Libreboot 社群長久以來懷疑是否存在的漏洞。每個配有英特爾標準管理、Intel 主動管理技術或是小型企業科技的英特爾平臺，從 2008 年的 Nehalem 微架構到 2017 年的 Kaby Lake 微架構都在 IME（英特爾管理引擎）中有遠端安全漏洞。IME 中的另一個安全漏洞則與 Intel vPro 有關，硬體可以透過它來遠端存取，嚴重的話，電腦甚至會被摧毀。

## 支援的系統

Libreboot 的系統支援包含了下列的系統：

* 伺服器主機版：華碩 KFSN4-DRE 與華碩 KGPE-D16
* 桌上型主機版：華碩 KCMA-D8、英特爾 D510MO、技嘉 GA-G41M-ES2L 與 Apple iMac 5,2
* 筆記型電腦：華碩 Chromebook C201、聯想 ThinkPad X60/X60s、聯想 ThinkPad X60 Tablet、聯想 ThinkPad T60（部份例外）、聯想 ThinkPad X200、聯想 ThinkPad R400、聯想 ThinkPad T400、聯想 ThinkPad T500、Apple MacBook 1.1 與 Apple MacBook 2.1

## 參考資料

## 外部連結

* 官方網站
GNU_LilyPond

**LilyPond** 是一個用於音樂雕刻的電腦程式和檔案格式。LilyPond 的主要目標之一是製作出具有傳統布局規則的樂譜。LilyPond 為跨平臺且可用於多種常見的作業系統。LilyPond 是自由軟體，它在 GNU 通用公眾授權條款的條款下釋出。

## LilyPond 輸入檔案

### 輸出

## 參考資料

## 外部連結

* 官方網站
GNU_Mach

**GNU Mach** 是一套效仿 Mach 而製作的微核心系統，是 GNU Hurd 作業系統預設的微核心，以 GNU 通用公眾授權條款發布。它在 IA-32 平台運作，是 GNU 計劃的一部份。

## 開發歷史

早期 GNU Hurd 是由卡內基美隆大學的 Mach 3.0 發展而來。

但在 1994 年，卡內基美隆大學中止了 Mach 計劃，自由軟體基金會轉而以猶他大學的 Mach 4 來作為 GNU Hurd 的微核心。但在猶他大學也中止了 Mach 計劃後，自由軟體基金會於是根據 Mach 4，繼續發展出 GNU Mach。1996 年 12 月 6 日，由 Thomas Bushnell 對 GNU Mach 提出第一個修改，正式建立了 GNU Mach。

2002 年，Roland McGrath 由 GNU Mach 1.2，建立了分支 OSKit-Mach。在 GNU Mach 1.3 之後，這個分支形成 GNU Mach 2.0 的主線，但在 2006 年後，GNU Mach 2.0 被放棄。研發團隊重新回到 GNU Mach 1.x 的分支，繼續往前。在 11 年後，終於在 2013 年 9 月 27 日推出 GNU Mach 1.4。

## 版本歷史

* 1997 年 4 月 14 日，Version 1.0
* 1997 年 5 月 12 日，Version 1.1.1
* 1997 年 6 月 10 日，Version 1.1.2
* 1997 年 6 月 12 日，Version 1.1.3
* 1999 年 6 月 21 日，Version 1.2
* 2002 年 5 月 27 日，Version 1.3
* 2013 年 9 月 27 日，Version 1.4
* 2015 年 4 月 10 日，Version 1.5
* 2015 年 10 月 31 日，Version 1.6
* 2016 年 5 月 18 日，Version 1.7
* 2016 年 12 月 18 日，Version 1.8

## 參考資料

## 外部連結

* GNU Mach 官網 （頁面存檔備份，存於網際網路檔案館）
GNU_Mailman

**GNU Mailman** 是自 GNU 計劃而來，用來管理郵遞論壇的應用軟體。Mailman 主要使用 Python 編寫，目前由 Abhilash Raj 維護。Mailman 是以 GNU 通用公眾授權條款釋出的自由軟體。

## 歷史

當 John Viega 還是研究生的時候，他撰寫了非常早期的 Mailman，但是他自己電腦上的副本在 1998 年的某次當機中從硬碟上消失了。CNRI 的 Ken Manheimer 當時正在尋找 Majordomo 的替代品，於是就接手開發。在 Manheimer 離開 CNRI 後，Barry Warsaw 就接下這份工作。Mailman 3 在 2015 年 4 月釋出，是超過 10 年以來的第一個新的主要版本。

## 功能

Mailman 可以在 Linux 與大多數的類 Unix 系統上執行。自 Mailman 3.0 開始，它需要 Python 3.4 或更新版本才能正常運作。其可以與 Unix 風格的郵件伺服器（如 Postfix、Sendmail 與 qmail 等）一同運作。

其功能包含了：

* 可為每個郵遞論壇客製首頁。
* 可透過網頁進行管理、封存訊息、垃圾電子郵件過濾等等。不同的權限會有不同的介面。
* 每個郵遞論壇都支援多個管理員與版主。
* 個別清單的隱私功能，如訂閱需經過審核、私人存檔、私人成員清單以及基於寄件者的發佈規則。
* 整合式垃圾電子郵件過濾器
* Majordomo 式的電子郵件指令。
* 虛擬網域的支援。
* 清單存檔。Mailman 2 預設提供的存檔器是 Pipermail，不過還是有其他的存檔器可以選擇。而 Mailman 3 的存檔器則為 HyperKitty。

## 參見

* 郵遞論壇

## 參考資料

## 外部連結

* Mailman 檔案 （頁面存檔備份，存於網際網路檔案館）
* Mailman 支援郵遞論壇 （頁面存檔備份，存於網際網路檔案館）
* Freecode 上的 GNU Mailman
GNU_Octave

**GNU Octave** 是一種採用進階程式語言的主要用於數值分析的軟體。Octave 有助於以數值方式解決線性和非線性問題，並使用與 MATLAB 相容的語言進行其他數值實驗。它也可以作為面向批次處理的語言使用。因為它是 GNU 計劃的一部分，所以它是 GNU 通用公眾授權條款條款下的自由軟體。

Octave 是 MATLAB 的主要自由替代品之一，其他還有 Scilab 和 FreeMat。 然而，與 Octave 相比，Scilab 更少強調與 MATLAB 的（雙向）句法相容性。

 

## 歷史

系統性開發則是由 John W. Eaton 在 1992 年接手才開始的。
第一個 alpha 測試版是在 1993 年 1 月 4 日釋出，1.0 穩定版則是在 1994 年 2 月 17 日釋出。

其名稱與音樂上的八度沒有直接關係。該軟體乃是以一位早期開發群的成員，同時也以敏於處理數值逼近問題著稱的前化工系教授奧克塔夫・列文斯比爾（Octave Levenspiel）之名命名的。

## 技術細節

* Octave 是以 C++ 的標準模板函式庫編程而成。
* Octave 有自己 Octave 語言直譯器。
* Octave 可以動態外掛模組擴充。
* Octave 的直譯器可用 gnuplot 及 Grace 產生圖表及列印。

## Octave 語言

Octave 語言是直譯式及結構化（類於第二代的 BASIC）的程式語言，支援許多 C 語言風格的標準函式功能，同時可以使用 UNIX 的系統呼叫以進行擴充增進功能，但不支援以參照的方式傳遞參數。

Octave 的核心由一組內建的（built-in）矩陣運算語言（如四則運算）和可載入函式（Loadable Function）組成（例如求矩陣逆 inv），其餘能在核心語言之上實現而且效能開銷不會顯著增加的函式呼叫則一般以 Octave 指令碼的形式存在（例如求解方程組的 fsolve 函式）。Octave 直譯器會自動處理各種不同類型的調用。

Octave 支援資料建構，也支援基本的物件導向編程，但通常仍把它當作面向過程的程式設計語言來看待。

它的語法基本上與 Matlab 一致，嚴謹編寫的程式碼應同時可在 Matlab 及 Octave 執行。但若調用了 Matlab 工具包，則一般不能直接在 Octave 上運行，因爲 Octave 附帶的工具包與 Matlab 並不相容。

由於 Octave 是以 GNU 通用公眾授權條款授權，所以可以自由地複製、流通與使用。Octave 可在大部份的類 Unix 作業系統中執行，亦可在 Microsoft Windows 中執行。在 Mac OS X 中運行也是可能的，但設定較爲複雜。

## 特殊功能

**變數及函式名稱自動補齊**
:

在命令列按下 TAB 鍵，Octave 會自動補齊變數，函式或檔案的名稱。Octave 會依據游標之前的文字來補齊。

**指令回溯**
:

在互動模式下，Octave 會將歷次指令存在暫存檔中以俟呼叫與編輯。

**資料建構：**

Octave 包含了初步的資料建構功能，例如：

```
octave:1> x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string";
octave:2> x.a
x.a = 1
octave:3> x.b
x.b =

  1  2
  3  4

octave:4> x.c
x.c = string
```

**短路邏輯算符：**

Octave 的 `&&' 及`||' 的邏輯算符是在短路的方式下運算（如同 C 語言中的相仿算符），相反於逐算子算符 `&' 及`|'。

**遞增與遞減算符**
:

Octave 如同 C 語言一樣具有可前置或後置的遞增與遞減算符。

**例外處理：**

Octave 以提供初步的 LISP 式 `unwind_protect` 例外處理模式。通常 `unwind_protect` 的表述區段可表示如下：

**可變長度參數表列：**

Octave 提供用於處理未指明參數個數時的函式呼叫機制：利用特殊的 `varargin` 作為參數來呼叫函式。

**可變長度回傳表列：**

單一函式可以 `varargout` 這一特殊回傳值來回傳任意數目的值，例如：

## MATLAB 相容性

Octave 最初便是模彷 Matlab 而設計，自然與 Matlab 有許多相同的功能。這也使得一部分 Matlab 程式可以直接或經過少量修改在 Octave 上執行，一些軟體開發小組也使用兩者相容的語法，直接開發可以同時在 Matlab 和 Octave 使用的程式。

1. 矩陣為基礎資料型別之一
2. 內建支援複數
3. 內建功能強大的數學函式及可擴充的函式庫
4. 使用者可自訂函式

## 參見

* Scilab
* R 語言
* 開放原始碼軟體列表

## 參考文獻

## 外部連結

* Octave.org 網頁（頁面存檔備份，存於網際網路檔案館）
* 在線支援（含文件） （頁面存檔備份，存於網際網路檔案館）
* Octave 快記（頁面存檔備份，存於網際網路檔案館）
* Octave-forge 社羣開發網頁 （頁面存檔備份，存於網際網路檔案館）
* Octave 教學與技術手冊 （頁面存檔備份，存於網際網路檔案館）提供 Octave 相關教學與範例。
* Octave Workshop：一個 Octave 的整合編程環境
* kOctave：圖型介面 - 適用於 KDE
* Octave 線上計算（頁面存檔備份，存於網際網路檔案館） - 可在網上執行 Octave 程式。
* Octave FAQ 快記有關繪圖的部份
* OctPlot （頁面存檔備份，存於網際網路檔案館）圖形處理套件，提供高品質的螢幕輸出。
* Help-Octave 在 Gmane 的郵件論壇存檔
* Octave 的 MPI toolbox 工具箱利用 GNU Octave 作並行計算
* Xoctave : GNU Octave GUI （頁面存檔備份，存於網際網路檔案館）
GNU_Parted

**GNU Parted**（由「PARTition」與「EDitor」兩字結合）是一個自由分割工具，可以用於建立、刪除、移動分割，調整分割大小，檢查、複製分割等操作。可以用於調整分割以安裝新作業系統、備份特定分割到另一塊硬碟等。是由 Andrew ClausenIt 與 Lennert Buytenhek 所寫成。

它包含了一個函式庫，**libparted**，以及一個命令列介面的前端，**parted**。

截至 2013 年，GNU Parted 只能在 GNU/Linux 及 GNU/Hurd 下執行。

## 其他前端

**nparted** 是一個基於 newt 的 GNU Parted 前端。

**fatresize** 提供了使用 GNU Parted 函式庫，可對 FAT16／FAT32 進行非破壞性的調整分割大小的命令列介面。

### 圖形前端

GParted 以及 KDE Partition Manager 皆為使用 GNU Parted 函式庫的圖形前端 。它們分別為 GNOME 及 KDE 兩大 Unix-like 桌面環境作了微調。它們通常會包含在許多有 Live CD 的發行版裡作為工具以方便使用者進行硬碟分割。QtParted 是另外一個使用 Qt 寫成的圖形前端，但此專案已經不再被維護。

**Pyparted** (也被稱作 python-parted) 是一個以 Python 寫成的圖形前端。以此為預設分割工具的 Linux 發行版包含 Slackware，Knoppix，aptosid，SystemRescueCD，以及 Parted Magic。

預設帶有此程式的 Linux 發行版包括 Slackware、Knoppix、sidux、SystemRescueCD 和 Parted Magic 美國國會圖書館的存檔，存檔日期 2012-12-17。

## 限制

Parted 先前支援在分割內對檔案系統進行各種操作（建立、移動、調整大小、複製）。在 3.0 版中這些功能被移除
。

## 參見

* 硬碟分割軟體列表
* fdisk
* cfdisk
* gpart
* GParted
* FIPS
* 主開機紀錄

## 參考資料

## 外部連結

* 官方網站
* `parted`– 參考，單一 UNIX® 規範第 7 期，由國際開放標準組織釋出
GNU_Portable_Threads

**GNU Pth**（Portable Threads）是用於 UNIX 平台的基於 POSIX/ANSI-C 的使用者空間執行緒庫，它為多執行緒應用提供基於優先級的排程。GNU Pth 以高度可移植性為目標。它是 GNU 計劃的一部分。

Pth 還提供模仿 POSIX 執行緒的 API 用於後向相容。

GNU Pth 使用到核心空間執行緒的 N:1 對映，就是說排程是完全由 GNU Pth 庫進行的，核心自身不了解在使用者空間內的 N 個執行緒。故而不可能利用到 SMP，因為那必須由核心派遣。

## 參見

* 纖程
* UPthreads （頁面存檔備份，存於網際網路檔案館）

## 參照

## 外部連結

* 官方網站
* a collection of references to all known multithreading libraries for Unix operating systems. （頁面存檔備份，存於網際網路檔案館）
GNU_Project

**GNU 計劃**（英語：**GNU Project**），又譯為**革奴計劃**，是一個自由軟體集體協作計劃，1983 年 9 月 27 日由理察・斯托曼在麻省理工學院公開發起。它的目標是建立一套完全自由的作業系統，稱為 GNU。理察・斯托曼最早在 net.unix-wizards 新聞群組上公布該訊息，並附帶一份《GNU 宣言》等解釋為何發起該計劃的文章，其中一個理由就是要「重現當年軟體界合作互助的團結精神」。

GNU 是「**G**NU is **N**ot **U**nix」的遞迴縮寫。為避免與單詞 gnu（非洲牛羚，發音與「new」相同）混淆，斯托曼宣布 GNU 發音應為「Guh-NOO」（/ˈgnuː/ ），與「canoe」發音相似。其中，Emacs 就是由這個計劃孵化而出。

UNIX 是一種廣泛使用的商業作業系統的名稱。由於 GNU 將要實現 UNIX 系統的介面標準，因此 GNU 計劃可以分別開發不同的作業系統。GNU 計劃採用了部分當時已經可自由使用的軟體，例如 TeX 排版系統和 X Window 視窗系統等。不過 GNU 計劃也開發了大批其他的自由軟體，這些軟體也被移植到其他作業系統平台上，例如 Microsoft Windows、BSD 家族、Solaris 及 Mac OS。

為保證 GNU 軟體可以自由地「使用、複製、修改和釋出」，所有 GNU 軟體都包含一份在禁止其他人添加任何限制的情況下，授權所有權利給任何人的協定條款，GNU 通用公眾授權條款（GNU General Public License，GPL）。這個就是被稱為「公共著作權」的概念。GNU 也針對不同場合，提供 GNU 較寬鬆公共許可證與 GNU 自由文檔許可證這兩種協定條款。

## 源起

1985 年，理察・斯托曼創立了自由軟體基金會來為 GNU 計劃提供技術、法律以及財政支援。儘管 GNU 計劃大部分時候是由個人自願無償貢獻，但 FSF 有時還是會聘請程式設計師幫助編寫。當 GNU 計劃開始逐漸獲得成功時，一些商業公司開始介入開發和技術支援。當中最著名的就是之後被 Red Hat 兼併的 Cygnus Solutions。

到了 1990 年，GNU 計劃已經開發出的軟體套件括了一個功能強大的文字編輯器 Emacs、C 語言編譯器 GCC 以及大部分 UNIX 系統的程式庫和工具。唯一依然沒有完成的重要組件，就是作業系統的核心（稱為 HURD）。

1991 年，林納斯・托瓦茲編寫出了與 UNIX 相容的 Linux 作業系統核心並在 GPL 下釋出。Linux 之後在網上廣泛流傳。1992 年，Linux 與其他 GNU 軟體結合，完全自由的作業系統正式誕生。許多程式設計師參與了 Linux 的開發與修改，也經常將 Linux 當成開發 GNU 計劃軟體的平台。該作業系統往往被稱為「GNU/Linux」或簡稱 Linux。但 Linux 本身不屬於 GNU 計劃的一部份，GNU 計劃自己的核心 Hurd 依然在開發中，目前已經釋出 Beta 版本。

許多 UNIX 系統上也安裝了 GNU 軟體，因為 GNU 軟體的品質比之前 UNIX 的軟體還要好。GNU 工具還被廣泛地移植到 Windows 和 Mac OS 上。

GNU 工程十幾年以來已經成為一個對軟體開發主要的影響力量，創造了無數的重要的工具，例如：強健的編譯器，有力的文字編輯器，甚至一個全功能的作業系統。這個工程是從 1984 年麻省理工學院的程式設計師理察・斯托曼的想法得來的，他想要建立一個自由的、和 UNIX 類似的操作環境。從那時開始，許多程式設計師聚集起來開始開發一個自由的、高品質、易理解的軟體。

## 宣言

## 發言人

以下是 GNU 計劃的正式發言人：

* Robert J. Chassell
* Loïc Dachary
* Ricardo Galli
* Georg Greve
* Federico Heinz
* Bradley Kuhn
* Eben Moglen
* 理察・斯托曼
* David Sugar

## 參考文獻

## 外部連結

* 官方網站 （英文）
* 斯托曼 1983 年宣告 GNU 計劃開始的宣言（英文）
* GNU 哲學的網頁（英文）
* GNU 宣言 （頁面存檔備份，存於網際網路檔案館）（英文）
* GNU 專案的細節記錄 （頁面存檔備份，存於網際網路檔案館）（英文）
* GNU 專案的簡要歷史 （頁面存檔備份，存於網際網路檔案館）（英文）
* 原碼 3 路 \_3/5 : 用革命存活社群 - GNU (1/2) （頁面存檔備份，存於網際網路檔案館）

## 參見

* GNU/Linux
* GNU 通用公眾授權條款
* 理察・斯托曼
* 自由軟體基金會
* 自由軟體
* 自由軟體運動
GNU_Radio

**GNU Radio** 是一個自由軟體開發工具包，提供實現軟體無線電和信號處理的信號處理模塊系統。 它可以與外部 RF 硬體一起使用來發送軟體無線電，或者在沒有硬體的情況下於擬真環境運行。 它被無線電愛好者、高校研究人員以及商業領域廣泛用於支援無線通信研究和現實世界的無線電系統。

## 概觀

GNU Radio 軟體提供了構建和運行軟體無線電或僅用於通用信號處理應用程式的框架和工具。 GNU Radio 應用程式本身通常稱為「流程圖」，它是連接在一起的一系列信號處理塊，從而描述了數據流。

與所有軟體定義的無線電系統一樣，可重配置性是一個關鍵特性。不為特定但不同目的而設計的不同無線電，而是使用單個通用無線電，該信號處理軟體（這裡指代 GNU Radio）是處理無線電專用的處理應用。

這些流程圖可以用 C ++ 或 Python 程式語言編寫 。 GNU Radio 基礎結構完全用 C ++ 編寫，而許多用戶工具都是用 Python 編寫的。

GNU Radio 是一個信號處理軟體包，是 GNU Project 的一部分。 它根據 GNU 通用公共許可證 （GPL）的條款分發，大多數項目代碼的版權歸自由軟體基金會 

## 歷史

GNU Radio 首次發布於 2001 年，是一個官方的 GNU 包 。 慈善家約翰・吉爾摩（John Gilmore ）為 Eric Blossom 籌集了 320,000 美元（美國）的資金，用於代碼創建和專案管理職責。

GNU Radio 最初是由麻省理工學院 （MIT）的 SpectrumWare 項目開發的 Pspectra 代碼的分支 。 今天 GNU Radio 不再有任何原始的 Pspectra 代碼是因為在 2004 年完成了對 GNU Radio 的完全重寫 。 另外值得注意的是，Pspectra 代碼庫已被用作商業 Vanu 軟體無線電的基礎。

Matt Ettus 作為最早的開發人員加入了該項目，並創建了通用軟體無線電外設 （USRP），以提供與 GNU Radio 軟體一起使用的硬體平台。

2010 年 9 月， Eric Blossom 辭去項目負責人職務，由 Tom Rondeau 取代。 

在項目早期，核心開發人員開始舉辦半年一次的 _Hackfest_ 。 2011 年，GNU Radio 項目開始每年舉辦一次名為 "GRCon" 的會議，會議的最後一天通常會舉辦黑客節。

2016 年 3 月，Tom Rondeau 退出，由 Ben Hilburn 擔任項目負責人，Johnathan Corgan 擔任首席架構師作為長期維護人員。 

2018 年 1 月，Marcus Müller 取代了 Johnathan Corgan 在 GNU Radio 的角色 。

## 軟體

GNU Radio Companion 是用於開發 GNU Radio 應用程式的圖形 UI 。 這是用於信號處理的 GNU Radio 庫的前端。GRC 由 Josh Blum 在約翰霍普金斯大學 （2006-2007）學習期間開發，作為 2009 年 10 月 Hackfest 的自由軟體發布。從 3.2.0 版開始，GRC 與 GNU Radio 軟體發行版正式捆綁在一起。

GRC 實際上是一個 Python 代碼生成工具。 當流程圖在 GRC 中「編譯」時，它會生成 Python 代碼，用於創建所需的 GUI 窗口和窗口小部件，並創建和連接流程圖中的塊。

GRC 目前支持使用 Qt 創建 GUI。

### 繪圖和顯示

GNU Radio 提供了許多常見的繪圖和數據可視化數據接收器，包括 FFT 顯示，符號星座圖和示波器顯示。 這些通常既用於調試無線電應用程式，也用作最終應用程式的用戶界面。

### PyBOMBS

許多用戶創建「out-of-tree 模塊」以與 GNU Radio 一起使用。 為了管理這些以及運行 GNU Radio 所需的依賴關係，該組織創建了 PyBOMBS（Python Build Overlay Managed Bundle System）項目。 

## 參見

* 軟體定義的無線電

## 參考資料

## 外部連結

* 官方網站
* 自由軟體目錄中的 gnuradio （頁面存檔備份，存於網際網路檔案館）
GNU_Readline

**GNU Readline** 是一個軟體庫，可為具有命令列介面（例如 Bash）的互動式程式提供行編輯器和歷史記錄功能。是 GNU 計劃的一部分，目前由 Chet Ramey 維護。

使用者可以移動文字游標，搜尋命令歷史，控制 kill ring（一個更靈活的剪貼簿），並在文字終端上使用 Tab 鍵自動完成。作為一個跨平臺的庫，readline 允許不同系統上的應用程式展現相同的行編輯行為。

## GPL 授權條款

GNU Readline 是一個著名的自由軟體庫，它是通過 GNU 通用公眾授權條款（GPL）進行授權的。而其他的自由軟體庫通常是通過 GNU 寬公用授權條款（LGPL）進行授權，例如 GNU C 庫，GNU Gettext 和 FLTK。但其它軟體在分發時，如果連結到像 GNU Readline 這種 GPL 協定的庫，必須將與之相連的整個軟體以 GPL 協定進行授權，以符合 GPL 第 5 章的規定。自由軟體基金會為 GNU Readline 選用了這個授權協定，以鼓勵其它軟體選用 GPL 協定。

## 範例代碼

下面的代碼是 C 語言的，必須通過向編譯器傳遞-lreadline 標誌來連結到 readline 庫：

## 外部連結

* GNU readline 首頁
* 關於 GNU Readline 你不知道的事情 （頁面存檔備份，存於網際網路檔案館）
GNU_Savannah

**GNU Savannah** 是自由軟體基金會的一個子專案。它提供了一套合作軟體發展管理系統，來幫助程式設計師開發自己的軟體。Savannah 現在提供 CVS、郵寄清單、網頁代管和 bug 跟蹤服務。GNU Savannah 上釋出的所有軟體都基於 GNU 通用公眾授權條款（GPL）或其它 GNU 授權條款。

## 參見

* GitHub
* Google Code
* SourceForge

## 外部連結

* https://savannah.gnu.org/ （頁面存檔備份，存於網際網路檔案館） ——Savannah 主站
* https://savannah.nongnu.org/ （頁面存檔備份，存於網際網路檔案館） ——Savannah 主站
* Savane—— 軟體首頁
GNU_Screen

**GNU Screen** 是一款由 GNU 計劃開發的用於命令列終端切換的自由軟體。使用者可以通過該軟體同時連接多個本地或遠端的命令列對談，並在其間自由切換。

## 功能

GNU Screen 可以看作是視窗管理員的命令列介面版本。它提供了統一的管理多個對談的介面和相應的功能。

* **對談恢復**

　
: 只要 Screen 本身沒有終止，在其內部執行的對談都可以恢復。這一點對於遠端登入的使用者特別有用 —— 即使網路連接中斷，使用者也不會失去對已經打開的命令列對談的控制。只要再次登入到主機上執行 **screen -r** 就可以恢復對談的執行。同樣在暫時離開的時候，也可以執行分離命令 **detach**，在保證裡面的程式正常執行的情況下讓 Screen 掛起（切換到後台）。這一點和圖形介面下的 VNC 很相似。

* **多窗口**

　
: 在 Screen 環境下，所有的對談都獨立的執行，並擁有各自的編號、輸入、輸出和窗口快取。使用者可以通過快速鍵在不同的窗口下切換，並可以自由的重新導向各個窗口的輸入和輸出。Screen 實現了基本的文字操作，如複製貼上等；還提供了類似捲軸的功能，可以檢視窗口狀況的歷史記錄。窗口還可以被分割和命名，還可以監視後台窗口的活動。

* **對談共享**

　
: Screen 可以讓一個或多個使用者從不同終端多次登入一個對談，並共享對談的所有特性（比如可以看到完全相同的輸出）。它同時提供了窗口存取權限的機制，可以對窗口進行密碼保護。

## 其他多頁面終端工具

具有類似功能的軟體還有：

* dtach：Screen 的一個最小化子集實現。
* Text Windows：一個文字模式的窗口環境。
* splitvt：一個終端分割工具。
* Window (BSD)：一個基於 BSD 的文字窗口環境。

## 參看

* Ratpoison：受 Screen 啟發的無需滑鼠的視窗管理員。

## 外部連結

### 官方資源

* （英文） GNU's Screen 官方站點 （頁面存檔備份，存於網際網路檔案館）
* GNU Screen （頁面存檔備份，存於網際網路檔案館） 執行於 Savannah（英文）
* GNU Screen（頁面存檔備份，存於網際網路檔案館）手冊（英文）
* （英文） Screen 使用者手冊 （頁面存檔備份，存於網際網路檔案館）

### 第三方資源

* （英文） GNU Screen Wiki （頁面存檔備份，存於網際網路檔案館）
* （英文） Screenie—— 一個 Screen 對談處理器（前端）
* GNU Screen：初學者入門（原文發表於 Kuro5hin）（英文）
* （英文） GNU Screen 快速入門
* （英文） SSH-Agent forwarding and GNU Screen （頁面存檔備份，存於網際網路檔案館）
* （英文） 用 Screen 執行 irssi 指引 （頁面存檔備份，存於網際網路檔案館）
* （英文） Screen FAQ
* （英文） Screen tutorial
GNU_Smalltalk

**GNU Smalltalk** 是 Smalltalk 程式語言的 GNU 計劃實現。

這個實現不同於其他 Smalltalk 環境，使用文本文件作為程序輸入，並將其內容解釋為 Smalltalk 代碼。在這種方式下，GNU Smalltalk 表現得更像是一種解釋器，而非傳統 Smalltalk 方式下的一種環境。GNU Smalltalk 包括了對很多自由軟體庫的綁定，包括 SQLite、libSDL、cairo、gettext 和 Expat 等。

## 簡單例子

下面的例子可工作在 GNU Smalltalk 3.0 和以後版本上。經典的 Hello, World! 例子：

GNU Smalltalk 聲明了三個文件：`stdin`、`stdout` 和 `stderr`，作為文件串流類（`FileStream`）的全局實例，並綁定了適合傳遞給 C 虛擬機的值。對象類（`Object`）定義了特有於 GNU Smalltalk 的四個方法：`print`、`printNl`、`store` 和 `storeNl`。它們對接收者做一次 `printOn:` 或 `storeOn:` 至 `Transcript` 對象。這個對象是文本搜集器類（`TextCollector`）的唯一實例，它通常將寫操作委託給 `stdout`。 

一些基本的 Smalltalk 代碼：

兩個 `"` 包圍的是注釋；`$c` 是字符常量 `c`；兩個 `'` 包圍的是字符串，字符串中的 `''` 是 `'` 的轉義序列。

## 搜集

構造和使用一個數組：

構造和使用一個散列表，它是散列搜集類（`HashedCollection`）的子類即字典類（`Dictionary`）的實例：

GNU Smalltalk 在字符串類（`String`），和作為它的超類的數組式搜集類（`ArrayedCollection`）之間，又介入了特有的字符數組類（`CharacterArray`），它的 `%` 方法，將其接收者中具有的特殊轉義序列，替換為由參數給出的搜集中的元素，其中 `%n` 被替代為這個搜集的第 `n` 個元素（`1<=n<=9` 或 `A<=n<=Z`）。這裡給它的搜集，是在 `{` 和 `}` 之間包圍的，當前 Smalltalk 變體一般都提供的動態數組，其中的元素可以在運行時間求值。

## 塊和迭代器

參數傳遞到是為閉包的一個塊：

從一個方法返回由兩個閉包構成的一個數組：

這裡用 `extend` 為現存的類擴展新方法是 GNU Smalltalk 特有的語法。

下面的考拉茲猜想例子，展示將兩個塊傳遞給接收者，並將結果信息發送回到調用者：

搜集類（`Collection`）的 `collect:` 方法，將接收者的每個元素傳遞給一個塊來求值，返回這些結果的搜集。這類似於函數式編程語言中 map 函數。例如計算從 `1` 到 `10` 的平方：

可迭代類（`Iterable`）定義了由子類實現的 `do:` 方法，將一個塊迭代於接收者的每個元素之上。這也被稱為隱式迭代器。例如迭代於數組和區間之上：

可迭代類的 `inject:into:` 方法，接受一個參數和一個塊二者；它迭代於接收者的每個元素之上，在其上執行某個函數並保持結果為一個聚集。這類似於函數式編程語言中 foldl 函數。這個方法是憑藉調用 `do:` 方法實現的。例如：

在第一個趟時，這個塊接受 `10`（要注入的實際參數）作為 `sum` ，和 `1`（這個數組的第一個元素）作為元素，結果為 `11`。`11` 接著成為在下一趟時的 `sum`，這時向它加上 `3` 得到 `14`。`14` 接著加上 `5`，最終返回 `19`。

塊可以和很多內建方法一起工作，下面例子向一個文件寫一行文本，然後再讀取它的每一行並顯示：

文件類（`File`）的特有於 GNU Smalltalk 的 `name:` 方法，返回具有絕對路徑的文件名。GNU Smalltalk 有特有的文件路徑類（`FilePath`），它的 `withWriteStreamDo:` 方法，對接收者調用 `writeStream` 方法打開一個只寫的文件串流類（`FileStream`）實例，在其上調用一個塊，並在這個塊的動態範圍結束處保證（`ensure:`）關閉這個串流；它的 `readStream` 方法，在接收者上打開一個只讀的文件串流類（`FileStream`）實例。

串流類（`Stream`）的特有於 GNU Smalltalk 的 `linesDo:` 方法，對它的接收者的每一行都求值它的參數塊一次。 在 GNU Smalltalk 中，文件串流類（`FileStream`）的超類，不再是作為可定位串流類（`PositionableStream`）子類的讀寫串流類（`ReadWriteStream`），而是其特有的作為串流類（`Stream`）子類的文件描述符類（`FileDescriptor`），它的 `close` 方法關閉這個文件。

## 類

GNU Smalltalk 建立新類採用特有的語法形式：

類似的，為現存的類擴展新方法採用特有的語法形式：

在 Smalltalk 有關書籍中有一個常見版式約定，將一個類中的方法引用為 `类名字 >> 方法名字`，這不是 Squeak/Pharo 語法的一部份，GNU Smalltalk 將 `类名字 class >> 方法名字` 作為定義類方法的語法形式。

下面的代碼定義叫做 `Person` 的一個類，這個類有兩個實例變量 `name` 和 `age`，它們有各自的變異子與訪問子。定義了有兩個關鍵字參數的類方法，用來創建新的類實例。定義了單獨用 `age` 來進行比較的 `<` 方法，通過從 `Magnitude` 派生，這個類自動繼承了所有的其他比較方法的定義。這個類還通過覆寫 `printOn:` 的方式，定製了這個對象的列印（`print`）/ 顯示（`display`）方式：

這裡用 `asSortedCollection` 方法對搜集進行排序，然後用 `reverse` 方法來做反轉。最終結果是按 `age` 反序列印了三個人的信息：

## 異常

要發起能夠捕獲的異常，需要調用異常類（`Exception`）及其子類的 `signal` 或 `signal:` 方法。錯誤類（`Error`）表示不可恢復的致命錯誤，警告類（`Warning`）表示重要但可恢復的錯誤，停機類（`Halt`）表示通常是漏洞（bug）的可恢復錯誤。例如：

異常通過塊閉包（`BlockClosure`）的 `on:do:` 方法來處理，還可以只捕獲特定的異常（和它們的子類）：

處理器子句使用它能獲得的異常對象，可以退出或恢復一個塊；退出是預設的，但也可以顯式的指示：

在因異常狀況而要進入調試器，可以調用對象類（`Object`）的 `halt` 方法，或增加了一個消息參數的 `halt:` 方法；這二者實際上調用了對象類的 `error:` 方法，它通過原始操作停止執行及或啟動調試器，並展示這個錯誤消息：

## 參見

* Ruby 語法
* GLASS

## 引用

## 外部連結

* 官方網站
GNU_TeXmacs

**GNU TeXmacs** 是一款自由的科學文字編輯器和 GNU 專案的排版軟體。它吸收了 TeX 和 Emacs 的特點，儘管未使用這兩者的程式碼。TeXmacs 使用 TeX 字型。它由 Joris van der Hoeven 等人開發和維護。該程式能夠以所見即所得的使用者介面建立結構化文件。使用者可以自行建立新的文件樣式。編輯器採用高品質的排版演算法和 TeX 字型用於專業出版。

## 特點

TeXmacs 可作為一系列電腦代數系統的前端，例如 Maxima 和 Sage。將計算或推導得出的數學公式直接顯示在筆記中，無須重複輸入和語法翻譯。

作為所見即所得的文字編輯器（如 Microsoft Word），TeXmacs 提供一套設計良好的 GUI 介面，使用者不需要記憶排版引擎的 DSL 語法。

TeXmacs 同時支援 Scheme 擴充語言 Guile，用於客製化程式和撰寫擴充元件，提供使用者高度自訂的自由。

TeXmacs 不是 LaTeX 的前端程式，但 TeXmacs 文件可以被自由轉換成 TeX 或 LaTeX 格式，唯目前轉換效果並不完美還需要進行少量的手動修改。同時也可以容易的將文件轉換為 HTML、PDF、MathML 和 XML。

TeXmacs 目前可執行在大部分基於 Unix 的系統平台下，包括 Linux、FreeBSD、Cygwin 和 Mac OS X，不過許多發行版必須自行編譯。可以容易的在 Microsoft Windows 下安裝和使用。

TeXmacs 還包含簡報模式，可以非常容易的製作投影片（slide/PPT）。目前已經含有一定的圖像編輯功能，可以繪製樹圖等。

### 快捷的符號輸入

TeXmacs 可以利用 Tab 鍵得到各種相似的符號可以迅捷地輸入各類符號。例如，透過輸入 `=>` 可以得到數學符號右箭頭，利用 Tab 鍵可以快速的得到向右下的箭頭、向左上的箭頭、向上的箭頭。因此，使用者可以以極低的學習成本完成各類符號的輸入。也提供完善的 GUI 讓使用者無需記憶和查閱上百個特殊字元對應的指令。

 

### 批次處理

TeXmacs 亦可以批次處理方式執行（類似 LaTeX 的一般操作模式），在執行過程中無需打開視窗，例如，命令

```
xvfb-run texmacs --convert article.tm article.pdf --quit
```

將會從 TeXmacs 文件「article.tm」生成 PDF 檔案「article.pdf」。

## 支援的後台

TeXmacs 可作為許多軟體的前端：

* 程式設計語言：CLISP、CMUCL、Python、Qcl、R、Shell
* 電腦代數系統：Axiom、Giac、Macaulay 2、Mathematica、Maxima、MuPAD、PARI/GP、Reduce、SageMath、Yacas
* 數值矩陣系統：MATLAB、GNU Octave、Scilab
* 繪圖軟體套件：gnuplot、Graphviz、XYpic、Mathemagix
* 其他：DraTeX、Eukleides、GTybalt、Lush

## 參見

* TeX
* LaTeX
* LyX
* Emacs
* 文字編輯器列表
* 文字編輯器比較

## 參考文獻

## 外部連結

* GNU TeXmacs 的官方首頁 （頁面存檔備份，存於網際網路檔案館）
* 官方英語教學影片 （頁面存檔備份，存於網際網路檔案館）
* 簡體中文教學影片
GNU_Unifont

**GNU Unifont** 是一個由 Roman Czyborra 所製作的，自由且免費的點陣字型，涵蓋了 Unicode 中的基本多文種平面，使用了中型的點陣字型格式。見於大多數的自由作業系統及一些視窗系統中，如 Linux、XFree86、X.Org Server，及一些嵌入式韌體，如 RockBox。此字型以 GNU 通用公眾授權條款第二版或更新釋出，但加入了一個字型嵌入的例外條款（在檔案中嵌入字型並不構成違反授權條款的條件）。

它在 2013 年 10 月成為了 GNU 軟體包。

## 狀態

Unicode 的基本多文種平面涵蓋了 216 = 65,536 個碼位，其中 2048 個是保留給特殊用途的代理對，6400 個保留給私人用途，剩餘大約 57,000 個碼位可供分配。其中多數位置都已分配字形，而一些特殊的碼位沒有。

截至 2013 年 10 月 (2013-10)，GNU Unifont 已經完整涵蓋了 Unicode 6.3 版定義的基本多文種平面。

平面中，中日韓統一表意文字大約有 20,000 個，字形是從文泉驛的 Unibit 字形複製過來的（獲得授權）。

## .hex 字型格式

GNU Unifont 的 .hex 格式定義了它的字形大小，寬度 8 或 16 像素，高度為 16 像素。多數西方字母的寬度定義為 8 像素，而其他語言的字母（特別是中日韓文字）通常是 16 像素。

unifont.hex 檔案的每一個字形都包含一行。每行都包含四位數的 Unicode 十六進位碼位，一個冒號及點陣字串。一個寬度為 8 像素的字母的位元串有 32 個十六進位的位數，而寬度為 16 像素的字母的位元串有 64 個十六進位的位數。

一個在位元字串中 '1' 的位元對應到一個 ' 開' 的像素。像素位元由上到下，由左到右儲存。

然後字型會轉換成 BDF 格式的檔案以在 X 視窗系統上使用。

### 範例

這是包含了一個 ASCII 大寫 'A' 字形的範例。

```
0041:0000000018242442427E424242420000
```

第一個數字是十六進位的 Unicode 碼位，範圍從 0000 到 FFFF。十六進位的 0041 是十進位的 65，也就是字母 'A' 的碼位。冒號分隔了點陣字的碼位。在這個範例中，字形是 8 像素寬，所以位元串有 32 個十六進位的位數。

位元串以 8 個零開始，所以前 4 行是空的（每 8 位元是 2 個十六進位的數字，而寬度為 8 位元的字形則為每行 8 個位數）。位元串也以 4 個零結尾，所以最後兩行也是空的。因為如此，預設的字形會比基線低 2 行，大寫的字母高於基線 10 行。這是 GNU Unifont 的拉丁字母範例。

Perl 的 hexdraw 指令稿按照上述的一行字形定義產生以下的輸出：

這可以在文字編輯器中編輯，再使用同樣的工具轉換回十六進位的字串。其目標是創造一個中間格式以方便加入新字形。

## 向量

Luis Alejandro Gonzalez Miranda 寫了指令稿以進行向量化及使用 FontForge 轉換 BDF 格式（unifont.bdf）至 TrueType 格式。Paul Hardy 調整了這些指令稿以處理最新的 TrueType 版本的組合字母，像是重音符號等。

## 歷史

Roman Czyborra 在 1998 年創造了 Unifont 格式，更早期的可以追溯至 1994 年。

2008 年，Luis Alejandro González Miranda 寫了把這個字型轉換成 TrueType 字型的程式。Paul Hardy 後來修改它以支援在新版 TrueType 中的組合字母。

最後，理察・斯托曼在 2013 年 10 月接受 Unifont 成為一個 GNU 軟體包。Paul Hardy 是它的維護者。

## 參考資料

## 外部連結

* GNU 專案檔案庫 （頁面存檔備份，存於網際網路檔案館）
* 在 Unifoundry.com 上的 GNU Unifont 頁面（頁面存檔備份，存於網際網路檔案館）
GNU_Wget

**GNU Wget**（常簡稱為 **Wget**）是一個在網路上進行下載的簡單而強大的自由軟體，其本身也是 GNU 計劃的一部分。它的名字是「**World Wide Web**」和「**Get**」的結合，同時也隱含了軟體的主要功能。目前它支援通過 HTTP、HTTPS，以及 FTP 這三個最常見的 TCP/IP 協定協定下載。

## 特點

它的主要特點包括：

* 支援遞迴下載
* 恰當的轉換頁面中的連結
* 生成可在本地瀏覽的頁面鏡像
* 支援代理伺服器

1996 年，隨著網際網路的爆發，Wget 出現了。並廣泛的被 Unix 和主要的 Linux 發行版使用者所使用。由於使用移植性非常良好的 C 語言，所以 Wget 可以輕鬆的在任何類似 Unix 的系統以及其他 Unix 變種作業系統上編譯使用，如 Mac OS X，Microsoft Windows，和 OpenVMS。

由於沒有互動式介面，在類 Unix 平台上 Wget 可在背景執行，截獲並忽略 HANGUP 訊號，因此在使用者登出登入以後，仍可繼續執行。通常，Wget 用於成批次地下載 Internet 網站上的檔案，或製作遠端網站的鏡像。

在其之上的圖形介面應用程式有：GNOME 下面的 **gwget**[1]。Windows 系統下面的 **wGetGUI**[2] （頁面存檔備份，存於網際網路檔案館）。

## 命令

Wget 的命令格式如下：

> 
>  wget [options] [URL]
> 
> 

詳細的命令和參數可以參照後面的外部連結中的內容。

## 缺點

* 支援的協定較少，特別是 cURL 相比。流行的串流媒體協定 mms 和 rtsp 沒有得到支援，還有廣泛使用各種的 P2P 協定也沒有涉及。
* 支援協定過老。目前 HTTP 還是使用 1.0 版本，而 HTML 中通過 JavaScript 和 CSS 參照的檔案不能下載。
* 靈活性不強，擴充性不高。面對複雜的鏡像站會出現問題。
* 命令過於複雜，可選的設定項有上百個。

## Wget2

GNU Wget2 2.0.0 釋出於 2021 年 9 月 26 日。比起 Wget1.x 支援以下協定和技術：

* HTTP/2
* HTTP 壓縮
* 並列連接
* 使用 HTTP 頭欄位 `If-Modified-Since`
* TCP Fast Open

## 參見

* FTP 客戶端列表
* cURL
* Teleport

## 參考文獻

## 外部連結

* 官方網站
* （英文） win32 binary wget-1.13.4 （頁面存檔備份，存於網際網路檔案館）
* 很老的一個 Wget FTP 站點，裡面包含了各個歷史時期的釋出版本，包括在 1.0 版前釋出的 Geturl。
GNU_arch

**GNU arch** 是一個分散式版本控制軟體，它是 GNU 計劃的一部分，並在 GNU 通用公共許可證下授權。

截至 2009 年，GNU arch 的官方狀態是「已棄用」，僅僅提供安全性修復。

Bazaar（或稱 'bzr'）此後也成為了正式的 GNU 專案，可以考慮作為 GNU arch 的替代。但注意 bzr 不是 GNU arch 的一個復刻。

## 批評

GNU arch 的最常見的批評是它很難學，甚至對於那些有其他軟體組態管理系統經驗的使用者也是如此。尤其是 GNU arch 有大量的命令，一些設計元素受 Lord 個人品味的影響太多太多，這阻礙了 GNU arch 的新使用者。

也有人批評 GNU arch 採用極不尋常的檔案命名約定，這給在指令碼中使用它、在一些 shell 中使用它、將它移植到非 Unix 作業系統帶來了困難。GNU arch 還因其執行緩慢一直被批評，而這竟然作為其設計決策一部分，以減少內部代碼的複雜性的。

## 參見

* 版本控制
* 版本控制軟體列表
* 版本控制軟體比較

## 參考文獻

## 外部連結

* 官方網站
* LWN.net article on arch （頁面存檔備份，存於網際網路檔案館）
GNU_bison

**GNU bison**（Bison 意為犎牛；而 Yacc 與意為氂牛的 Yak 同音）是一個自由軟體，用於自動生成語法剖析器程式，實際上可用於所有常見的作業系統。Bison 把 LALR 形式的上下文無關文法描述轉換為可做語法分析的 C 或 C++ 程式。在新近版本中，Bison 增加了對 GLR 語法分析演算法的支援。

GNU bison 基本相容 Yacc，並做了一些改進。它一般與 flex 一起使用。

## 參考文獻

## 外部連結

* Bison Website in the GNU project （頁面存檔備份，存於網際網路檔案館）
* Bison in Free Software Foundation's Directory （頁面存檔備份，存於網際網路檔案館）
* Internals of C parsers generated by GNU Bison
GNU_cflow

**GNU cflow** 是 GNU 計劃中的一款流程圖生成器，其讀取一系列 C 語言源文件並生成外部引用的流程圖。此軟體僅需讀取源碼而無需運行代碼編譯後的軟體。

## 歷史

其起初為 UNIX 實用工具 cflow 的實現。

## cflow（UNIX 實用工具）

**cflow** 是一個生成 C 語言流程圖的 Unix 命令。

除了 GNU 以外，還存在其他對 cflow 的實現（如為 Tru64 Unix 打造的版本）。

## 參考文獻

## 外部連結

* GNU Savannah 平台上的原始碼 （頁面存檔備份，存於網際網路檔案館）
* 自由軟體目錄上的 GNU cflow （頁面存檔備份，存於網際網路檔案館）
GNU_gatekeeper

**GNU Gatekeeper**（簡稱 GnuGK）是一個基於 OpenH323 來發展的開放原始碼 H.323 gatekeeper 計劃。所謂的 H.323 gatekeeper，定義於 H.323 標準中，負責對 H.323 的系統提供位址轉換、通話控制、路由決定、認證計費等服務。

## 功能特色

GnuGK 實作許多豐富實用的特性，包括

* 可跨平台，目前已移植到 Linux、Windows、Mac OS X、Solaris、FreeBSD、OpenBSD 以及 NetBSD。
* 可自訂策略的路由機制。
* 來源以及目標號碼的改寫。
* 完整的 H.323 代理功能，包含 RTP／RTCP 媒體和 T.120 資料通道。
* 可穿越 NAT 的 Citron's NAT 技術。
* 以鄰近（neighbor）、父子（parent/child）和替代（alternate）GK 等方式達到的叢集支援。
* 可透過 TCP 狀態埠進行監看與控制。
* 部分的 H.235 安全支援。
* 可以 SQL 資料庫、radius 或外部程式支援通話認識與計費。

## 授權方式

以 GNU 通用公眾授權條款的方式授權。此外，作者明確的允許將執行檔與 OpenH323 和 OpenSSL 函式庫做連結。這是必要的，因為 GNU GPL 與這些函式庫的授權並不相容。

## 發展歷史

最初的版本是由 Xianping Chen、Joe Metzger 和 Rajat Todi 所開發，做為實驗用途。在 1999 年初，本計劃的主持人 Jan Willamowius 找到這支程式，並說服原作者以 GNU GPL 的方式釋出原始碼。

隨後，程式被移植到更新版的 OpenH323，並被命名為 **OpenH323 Gatekeeper**，簡寫為 **OpenH323GK**。在德國的 mediaWays 公司隨後加入，提供了 LDAP 子系統與交疊傳送（overlapped sending）的支援。到了 2000 年，大約已有十餘人加入，提供程式碼或協助測試。功能已相當堪用。不過，相較於另一個類似計劃 OpenGatekeeper，功能上仍遜色許多。

在 2001 年，當時任職台灣呈祺資訊公司技術長的黃志偉和他的團隊開始加入，修改並使用此計劃於其 VoIP 服務中。增強了系統的穩定性，大幅改善效率，並加入許多新的特性，例如多緒安全的執行時期表格，鄰近和父子 GK，以及認證模組。他的加入引導了此計劃的重大變革。2001 年九月，OpenH323GK 1.0 正式釋出，為此計劃的一大里程埤。

到了 2002 年底，GnuGK 2.0 正式發佈。它包含重新設計的路由模式（routed mode）架構，並能同時處理上千個通話。此外，還有完整的 H.323 proxy 和 Citron's NAT 技術，為 H.323 穿越 NAT 的問題提供了完善的解決方案。這些特色使得 GnuGK 成為具有電信等級的 H.323 gatekeeper，能真正應用於商業運轉。

2005 年初發佈了 2.2 版，包含了多緒處理的 RAS 子系統，可客製化的路由策略，以及更有彈性的鄰近系統。小幅度的問題解決與改善仍持續至今。

## 更名

隨著功能日益完善，計劃日趨成熟也更受歡迎。然而，愈來愈多的人搞不清楚此計劃的真正名稱。因為當時至少有三個其它同樣根基於 OpenH323 的開放原始碼 gatekeeper 計劃，而且名稱都非常的類似。。根據計劃主持人 Jan Willamowius 的說法，與其它計劃名稱相同並不是我們的錯，我們是第一個採用這名稱的開放原始碼計劃。然而，經過主要開發者的討論後，決定將名稱改為 **GNU Gatekeeper**，簡稱 **GnuGK**。因為在所有類似計劃中，這是唯一一個以 GNU GPL 授權的。不過請不要誤會，它並非 GNU 計劃的一部分。

## 相容性

在官方網站維護了一份與其它 H.323 軟體和產品的互通性測試結果清單（頁面存檔備份，存於網際網路檔案館）。由於 GnuGK 可免費並自由的使用，日漸受到歡迎，新的產品通常會宣稱已通過與 GnuGK 的相容性測試。

## 主要貢獻者

現代的系統架構和主要特色是由黃志偉（cwhuang）所設計，包括多緒架構、H.323 proxy 以及 NAT 穿越技術等。

Michal Zygmuntowicz 貢獻了 radius 支援和一些其它改進。

Jan Willamowius 是目前計劃的協調人與維護者。

## 相關連結

* Voice Over IP
* 網路位址轉換

## 參考來源

## 外部連結

* 官方網站（頁面存檔備份，存於網際網路檔案館）
* 德文網站（頁面存檔備份，存於網際網路檔案館）
* GnuGK 技術檔案
* GkGui（頁面存檔備份，存於網際網路檔案館）利用 Java 所開發的圖形化使用介面
* GnuGK ACD（頁面存檔備份，存於網際網路檔案館） GnuGK 的自動通話分配器（ACD）
* 2003 年，自由軟體鑄造場 GNU GateKeeper 的開放 VoIP 技術經驗
GNU_lightning

**GNU lightning** 是在執行時生成組合語言代碼的自由軟體庫。版本 2.0 發行於 2013 年 8 月，支援的後端包括：x86（32-bit 和 64-bit）、ARM、MIPS、PowerPC（32-bit）、IA-64、SPARC（32-bit）和 PA-RISC。

## 相較其他庫的優點

GNU 提供的特徵使它可用於即時編譯。相較於 LLVM 或 libJIT 這樣的庫，GNU lightning 只提供低層組譯介面，把寬鬆的基於 SPARC 和 MIPS 架構的一種標準化 RISC 組合語言，編譯成目標架構的機器語言。

## 缺點

它不提供暫存器分配、資料流或控制流分析或最佳化。

## 指令集

GNU lightning 的指令集鬆散的基於了現存的 RISC 架構。

### 類型

所需的指令處理如下 9 種類型的資料：

## 使用 GNU lightning 的專案

Racket，GNU Smalltalk，GNU Guile 和 CLISP 使用 GNU lightning 進行即時編譯。GNU lightning 最初開發用於 GNU Smalltalk 的從位元組碼到本地代碼的動態轉換器的工具。

## 參照

## 外部連結

* GNU lightning （頁面存檔備份，存於網際網路檔案館）在自由軟體目錄上
GNU_m4

**GNU m4** 為 m4 巨集前處理器的 GNU 版本。其目的是為了避免傳統 m4 前處理器中的多種限制，諸如對行長度的最大值限制，巨集大小的最大值限制，巨集數量的限制等。拿掉這些霸道的限制是 GNU 計畫的既定目標之一。

GNU Autoconf 包使 GNU m4 的功能得以廣為使用。

GNU m4 目前是由 Eric Blake 來維護。

## 參見

* GNU 編譯器套裝
* GNU build system

## 外部連結

* GNU M4 首頁 （頁面存檔備份，存於網際網路檔案館）
GNU_make

**make** 是一個在軟體開發中所使用的工具程式（Utility software），經由讀取「makefile」的檔案以自動化建構軟體。它是一種轉化檔案形式的工具，轉換的目標稱為「target」；與此同時，它也檢查檔案的依賴關係，如果需要的話，它會呼叫一些外部軟體來完成任務。它的依賴關係檢查系統非常簡單，主要根據依賴檔案的修改時間進行判斷。大多數情況下，它被用來編譯原始碼，生成結果代碼，然後把結果代碼連接起來生成可執行檔或者庫檔案。它使用叫做「makefile」的檔案來確定一個 target 檔案的依賴關係，然後把生成這個 target 的相關命令傳給 shell 去執行。

許多現代軟體的開發中（如 Microsoft Visual Studio），整合式開發環境已經取代 make，但是在 Unix 環境中，仍然有許多工程師採用 make 來協助軟體開發。

## 起源

目前雖有眾多依賴關係檢查工具，但是 make 是應用最廣泛的一個。這要歸功於它被包含在 Unix 系統中。斯圖亞特・費爾德曼（Stuart Feldman）在 1977 年在貝爾實驗室（Bell Labs）里製作了這個軟體。2003 年，斯圖亞特・費爾德曼因發明了這樣一個重要的工具而接受了美國電腦協會（ACM）頒發的軟體系統獎。

在 make 誕生之前，編譯工作主要依賴於作業系統裡面的類似於「make」、「install」功能的 shell 指令碼。它可以批次執行生成目標的命令，並且可以完成依賴關係的檢查。這是向現代編譯環境發展的重要一步。

## 不同版本

make 程式已被使用者多次重 / 改寫，其中包括幾次用相同的檔案格式和演算法原理重新編寫，並且依照不同需要添加了一些不常見的改良。

### GNU make

GNU make 仿照 make 的標準功能（透過 clean-room 工程）重新改寫，並加入作者覺得值得加入的新功能，常和 GNU 編譯系統一起被使用，是大多數 GNU Linux 安裝的一部分。

### BSD make

BSD make 是從 Adam de Boor 的製作的版本上發展成。它編譯目標的時候有並行計算的能力。它在 FreeBSD，NetBSD 和 OpenBSD 中不同程度的修改下存活了下來。

### Microsoft nmake

廣泛應用於微軟的 Windows，微軟的 nmake 是 Visual Studio 隨附的命令列工具，不要與來自 AT&T 和貝爾實驗室的 Unix 系統 nmake 混淆。

## 優點和缺點

就像其他和 make 有著悠久歷史的軟體一樣，make 有著很多的擁護者和反對者。它的很多問題因現代大型的軟體專案的出現而暴露出來。但是很多人爭論說它在常見的情況下可以很好的工作，而且使用非常的簡單，功能強大，表達清楚。無論如何，make 仍然被用來編譯很多完整的作業系統，而且現在替代品們在基本的操作上與它沒有太大差別。

隨著現代的整合式開發環境（IDE）的誕生，特別是非 Unix 的平台上，很多程式設計師不再手動管理依靠關係檢查，甚至不用去管哪些檔案是這個專案的一部分，而是把這些任務交給了他們的開發環境去做。類似的，很多現代的程式語言有自己特別的高效的依賴關係的設定方法。

## Makefile

### 規則

makefile 的格式是：

```
   # 用“#”号表明注释。
   target（要生成的文件）: dependencies（被依赖的文件）
   	# 命令前面用的是“tab”而非空格。误用空格是初学者容易犯的错误！
   Tab ↹命令1
   Tab ↹命令2
   Tab ↹命令3
         .
   	  .
   	  .
   Tab ↹命令n
   # 可以使用“\”表示续行。注意，“\”之后不能有空格！
   
```

* target, dependencies 和命令構成了一個 makefile 里的一個「規則」，規則指示 make 何時以及如何重新生成 target 或執行 target 下的命令
* target 通常是我們要生成的檔案的名字，擺放的順序不重要，但第一個 target 是預設的 target。當 make 不帶參數時，自動執行第一個 target。target 也可以是要求 make 完成的動作，執行這種 target 後並不能得到和 target 同名的檔案，因此，也稱為偽 target (phony target)。
* dependencies 是生成 target 所需的檔名列表。依賴可以為空，常用的「clean」target 就常常沒有依賴，只有命令。若依賴不為空，則 make 會先檢查依賴的「規則」。依賴規定了何時重新執行 target 下命令。若任何依賴比 target 更新 （由於執行了依賴的「規則」的命令或使用者修改了依賴），make 則會重新執行 target 下的命令。
* 命令可以是任何一個 shell 能執行的命令。

 

### 範例

舉例來說明 makefile 的結構和 make 如何運作。

當我們輸入：

```
make
或者
make editor
```

當 editor 這個 target 檔案不存在，或者 main.o、text.o 這兩個依賴檔案被修改，都會導致 make 呼叫其下的命令「gcc -o editor main.o text.o」；接下來，由於參照到 main.o 和 text.o，make 會檢查 main.o 的依賴 main.c、def.h 有無更新，如果有，則執行其下的命令「gcc -c main.c」；同樣的道理，也適用於 text.o。
於是，可有幾種不同的輸出：

* 第一次執行：

```
gcc -c main.c
gcc -c text.c
gcc -o editor main.o text.o
```

* main.c 或 / 和 def.h 有修改：

```
gcc -c main.c
gcc -o editor main.o text.o
```

* text.c 或 / 和 com.h 有修改：

```
gcc -c text.c
gcc -o editor main.o text.o
```

* main.c 和 text.c 均有修改：

```
gcc -c main.c
gcc -c text.c
gcc -o editor main.o text.o
```

當我們輸入：

```
make install
```

make 會檢查 install 的依賴 editor 是否是最新，如果是，則執行其下的命令「mv editor /usr/local」。由於這個過程並沒有產生名為「install」的檔案，所以，install 是一個假目標。

 

### 巨集

「巨集」指的是用一個字串代替另一個字串的功能。在 makefile 中可以使用「=」號來定義巨集，使用「$（巨集名）」來使用巨集；還可以用「+=」追加巨集的內容。習慣上，巨集名使用大寫。承接上面的例子：

## 參見

* Apache Ant
* CMake

## 參考資料

## 外部連結

* GNU Make 官方網站 （頁面存檔備份，存於網際網路檔案館）
* GNU make 中文手冊
* 跟我一起寫 Makefile （頁面存檔備份，存於網際網路檔案館）
GNU_parallel

GNU **parallel** 是用於 Linux 和其他類 Unix 作業系統的命令列驅動的實用工具，它允許使用者並列的執行 shell 指令碼。GNU parallel 是 Ole Tange 用 Perl 寫的自由軟體。它可在 GPLv3 條款下獲得。GNU parallel 可以在遠端伺服器上執行作業，它使用 ssh 與遠端機器進行通信。

## 用法

最常用的用法是替代 shell 迴圈，比如將

變為如下形式：

這裡的檔案 `list` 包含給 `do_something` 的實際參數，而這裡的 `| process_output` 可以省略。

使用 parallel 的指令碼通常比使用 pexec 的指令碼易讀。

程式 parallel 的特徵還有：

* 聚組標準輸出和標準錯誤輸出，parallel 延期輸出直到所有執行作業完成；
* 可保持輸出的次序同於輸入的次序；
* 恰當的處理包含特殊字元的檔名，比如空格、單引號、雙引號、&（ampersand）和 UTF-8 編碼字元；

作為預設，parallel 並列執行作業的數量同於 CPU 核心數目。

## 例子

上述命令是如下命令的並列等價：

它在當前目錄及其子目錄中的名字結束於 `.foo` 的所有檔案中尋找字串 `bar` 的出現。parallel 將如期執行除非遇到名字包含換行的檔案。為了避免這個限制可以使用：

上述命令使用空字元來分隔檔名。

上述命令使用 `{}` 來告知 `parallel` 將 `{}` 替代為實際參數列。

上述命令所做同於：

但是，使用 `find`/`parallel`/`cp` 的前者命令更加有效利用資源，並且在 \*.ogg 展開後對於 shell 而言太大的情況下不作為錯誤而停止。

## 參見

* xargs
* pexec
* PPSS - (Distributed) Parallel Processing Shell Script （頁面存檔備份，存於網際網路檔案館）

## 參照

## 外部連結

* 官方網站
* GNU parallel 的計畫頁和手冊頁 （頁面存檔備份，存於網際網路檔案館）
GNU_social

**GNU social**（曾用名 **StatusNet**、**Laconica**）是一個用 PHP 編寫的自由及開放原始碼的微部落格程式。在提供與 Twitter 相似的功能的同時，GNU social 提供在微部落格社群之間的開放的、跨服務的交流。企業和個人可以安裝並控制他們自己的服務和資料。.

2010 年 3 月 3 日 StatusNet 0.9.0 版本加入了對 OStatus，一個新的、取代 OpenMicroBlogging 的標準的支援。

2013 年 6 月 8 日，GNU social 開發者宣布 StatusNet 和 Free Social 將併入 GNU social 專案。

## 名稱

在發布 0.8.1 版本（也被稱作 "Second Guessing"）時，Laconica 被重新命名為 StatusNet。

**StatusNet** 這個名字反映了這個程式是幹什麼的：在你的社群網路（social _net_work）發布「狀態（_status_）」

**Laconica** 這個名字來源於拉科尼式簡略語。Laconic 指的是古時候斯巴達的人，他們使用的是拉科尼式簡略語，即言簡意賅地表達自己。在微部落格中，訊息有長度限制（通常限制在 140 個字元以內），所以人們在微部落格中就像就像使用拉科尼式簡略語一樣。

## 重要部署

StatusNet 部署在很多公共服務上。

### Identi.ca

Identi.ca 這個 open-microblogging 服務曾是第一個 StatusNet（當時稱為 Laconica）實例。由 StatusNet 的建立者 StatusNet Inc. 代管。Identi.ca 向公眾提供免費的帳戶並作為可安裝版本的 StatusNet 的旗艦。該站現已遷移到 pump.io 平台。

### TWiT Army

另一個曾熱門的 StatusNet 實例是 This Week in Tech 的 TWiT Army。

## 功能與特色

* 支援通過 XMPP/Google Talk 客戶端更新訊息
* 支援 OpenID 登入
* 支援聯邦，允許通過 OStatus 協定關注遠端服務的使用者訊息
  * 使用 Salmon 協定回覆
* 支援 SMS 更新訊息和提醒
* API 與 Twitter 相容
* 主題標籤
* 多語言介面（使用 Gettext）
* 同步到 Twitter
* 小組
* 自動縮短 URL
* 地理位置資訊和地圖
* 即時更新
* 上載附件（檔案、圖片、影片、音訊等）
* 支援嵌入其他網站的內容，比如 YouTube、Flickr 等

## 參見

* Twitter
* Plurk
* Jaiku
* Mastodon

## 參考資料

## 外部連結

* 官方網站
* StatusNet 舊官方 wiki
GNU_toolchain

**GNU 工具鏈**（英語：GNU toolchain）是一個包含了由 GNU 計劃所產生的各種編程工具的集合，由自由軟體基金會負責維護工作。這些工具形成了一條工具鏈，用於開發應用程式和作業系統。

GNU 工具鏈在針對嵌入式系統的 Linux 核心、BSD 及其它軟體的開發中起著至關重要的作用。GNU 工具鏈中的部分工具也被 Solaris, Mac OS X, Microsoft Windows (via Cygwin and MinGW/MSYS) and Sony PlayStation 3 等其它平台直接使用或進行了移植。

## 組成

* GNU make：用於編譯和構建的自動工具；
* GNU 編譯器集合（GCC）：一組多種程式語言的編譯器；
* GNU Binutils：包含連結器、組譯器和其它工具的工具集；
* GNU Bison: 編譯器編譯程式，經常和 Flex 詞法剖析器 配合使用；
* GNU m4： m4 宏預處理器
* GNU Debugger（GDB）：代碼除錯工具；
* GNU 構建系統（autotools）:
  * Autoconf
  * Autoheader
  * Automake
  * Libtool

## 參見

* GNU C Library
* GNU Classpath
* GNU 核心工具組
* CVS、Git
* MinGW、Cygwin
* 交叉編譯器
GNU_variants

**GNU variants**（**GNU 變種**）是一個自由軟體基金會提出的概念，指使用來自 GNU 的應用軟體及函式庫（即「使用者態」）的作業系統。它的核心不一定是 GNU Hurd。.

## Linux 變種

GNU/Linux 一詞是 GNU 計劃支持者對由 GNU 使用者態和 GNU 系統軟體搭配 Linux 核心構成的操作系統的稱呼。其中一個著名的例子是 Debian GNU/Linux。

## FreeBSD 變種

**Debian GNU/kFreeBSD** 是一個基於 Debian 軟體套件管理系統和 FreeBSD 核心的 GNU 發行版。 _kFreeBSD_ 中的 _k_ 是 _kernel of_ 的縮寫 ，說明事實上只用到完整的 FreeBSD 的核心。目前沒有官方的版本發布，但在 2010 年 8 月凍結的 Debian Squeeze (6.0) 預期於 2010 年發布，旨在支援 Debian GNU/kFreeBSD. 一種 Debian GNU/kFreeBSD 的 live CD 是 Ging.

## NetBSD 變種

Debian 的 NetBSD 核心版本。

## OpenSolaris 變種

## 外部連結

* Debian GNU/kFreeBSD ISO
* Debian GNU/kFreeBSD（頁面存檔備份，存於網際網路檔案館）
* Debian GNU/NetBSD （頁面存檔備份，存於網際網路檔案館）
* #debian-kbsd on OFTC
* Ging live CD
GNU_宽通用公共许可证

**GNU 較寬鬆公共授權條款**（英語：GNU **L**esser **G**eneral **P**ublic **L**icense，簡稱：**LGPL**）是由自由軟體基金會公布的自由軟體授權條款。它允許企業與軟體開發者使用，或將 LGPL 授權的軟體整合至他們自己的軟體內（即使該軟體是私有軟體也被允許），同時不會受到 Copyleft 特性的授權條款強制對軟體開源的限制。該授權條款常被用於一些（但不是全部）GNU 程式庫。

這個授權條款以前被稱為 **GNU 程式庫通用公眾授權條款**（GNU Library General Public License）。此授權條款最新版本為「第 3 版」，2007 年 6 月 29 日釋出，較早的版本有 2.0 和 2.1 版。此種授權之出現，是為了在 GPL 與許可式授權（如 MIT 授權條款及柏克萊大學的 BSD 授權條款）間取得折衷。

採用 LGPL 之計畫本身雖然仍有「Copyleft」之限制條件，但這些限制不感染僅僅只聯結到本計畫的軟體。不過此等軟體仍會受到其他限制。

LGPL 主要使用之標的為軟體函式庫（Software Libraries），但是其亦可使用於獨立存在的應用程式。比較有名的例子為 Mozilla 跟 OpenOffice.Org。

## 歷史

LGPL 原本被稱爲 **GNU Library General Public License**，最初於 1991 年發布，爲與 GPLv2 保持一致而採用 2.0 版的編號。授權條款的 2.1 版與 1999 年在修訂後發布。與此同時，它被重新命名爲 **GNU Lesser General Public License**，以顯示 FSF 認爲並不是所有程式庫都應當採用該授權條款的態度。LGPL 的第 3 版於 2007 年發布，它以在 GPL 第 3 版之上附加應用一系列許可的方式表現。

## LGPL 與 GPL 差異之處

LGPL 有一特點是 LGPL 軟體可以被轉換成 GPL（參見 Section 3）。這種特性對於在 GPL 函式庫或應用程式中直接使用 LGPL 程式有一定程度之幫助。

## 程式語言要求

LGPL 協定主要是面向使用 C 語言 以及類 C 語言。Franz Inc. 釋出了 LLGPL 協定，增加了序言部分以澄清 LISP 語言中的上下文問題。

另外 Ada 語言還有一個特殊的特性 —— 泛型，所以需要使用 LGPL 的另一個變種 GNAT Modified General Public License：允許代碼連結一些特殊情況，以避免被 GPL 所覆蓋。

C++ 模板和只有標頭檔的庫也會遇到類似於 Ada 的泛型問題。LGPL 的第三版在第三小節中專門處理了這方面的特殊情況。

## 可閉源特性

由於許多程式設計師都弄不清各種授權條款之間的差別，導致一些開源專案成為了小部份別有用心人士所利用的物件，較著名的例子有 DivX，早期 DivX 雛形是一個使用 LGPL 授權條款的自由軟體，由大部份優秀的軟體高手義務地開發，但當軟體漸漸成形時，DivX 的公司 DXN 利用 LGPL 的漏洞對 DivX 進行了閉源，大部分軟體愛好者都感到被出賣，所以著手開發了 XviD。雖然 XviD 在軟體方面明顯比 DivX 優秀，但市場占有率卻不如 DivX。

## 參見

* Copyleft
* GNU Affero 通用公眾授權條款
* GNU 通用公眾授權條款
* GNU 自由文檔許可證
* GNU 較寬鬆公共許可證
* BSD 授權條款
* Mozilla 公眾授權條款
* MIT 授權條款
* Apache 授權條款
* 使用 LGPL 授權條款的軟體（分類）

## 參考資料

## 外部連結

* LGPL 英文版 （頁面存檔備份，存於網際網路檔案館）
* LGPL v2.1 非正式中譯版 2.1 版 （頁面存檔備份，存於網際網路檔案館）
* LGPL v3 非正式中譯版 3 版 （頁面存檔備份，存於網際網路檔案館）
* GNU 較寬鬆公共許可證（中譯版）1999 年 2 月，2.1 版（繁體中文）
* 五種開源協定的比較（BSD,Apache,GPL,LGPL,MIT） - 整理 （頁面存檔備份，存於網際網路檔案館）