GNU 是什么?它与 Linux、自由软件是什么关系
更新时间
GNU 是一个以尊重用户自由为目标的自由软件操作系统,由 GNU 工程从 1983 年发起、1984 年 1 月开始开发。它不是某个单独的程序,而是由应用程序、系统库、开发工具乃至游戏组成的一整套程序集合。日常使用中,GNU 通常与 Linux 内核搭配,合称 GNU/Linux;GNU 自己的内核则是 GNU Hurd。理解 GNU,关键是把它和“自由软件”这组权利放在一起看,而不是把它当成某个免费下载的软件包。
GNU 的定位:一套操作系统,而非一个软件
GNU 是类 Unix 操作系统。类 Unix 系统中负责资源分配和硬件管理的部分称为“内核”,GNU 所用的典型内核是 Linux,这一组合就是 GNU/Linux 操作系统。GNU 工程下发布的程序称为 GNU 软件包,它们共同构成系统的应用层、库和开发工具。
“GNU”这个名字是“GNU's Not Unix”的递归首字母缩写,发音为单音节 g'noo,接近“grew”但把 r 音换成 n 音。
一个容易混淆的点:GNU 自己的内核 GNU Hurd 从 1990 年开始开发,早于 Linux,志愿者至今仍在继续开发它,原因之一是它本身是一个有趣的技术项目。也就是说,Hurd 存在且仍在推进,但 GNU 系统最常见的实际组合仍是 GNU 软件加 Linux 内核。
自由软件:四项自由,与价格无关
自由软件指使用者拥有运行、复制、发布、研究、修改和改进该软件的自由。这里的“free”指言论自由意义上的自由,而非免费啤酒意义上的免费。具体是四项基本自由:
| 自由 | 内容 | 前提 |
|---|---|---|
| 自由之零 | 不论目的为何,运行该软件 | — |
| 自由之一 | 研究软件如何工作并按需改写 | 须能取得源代码 |
| 自由之二 | 重新发布拷贝 | — |
| 自由之三 | 向公众发布改进版,使社群受惠 | 须能取得源代码 |
自由软件运动的目标是通过自由软件让计算机用户获得自由计算的权利:用户可以自主控制自己的计算,而非自由软件会让用户受制于软件开发者。GNU 工程强调,相比 1983 年,技术和网络的发展使这些自由现在更加重要。
GNU 与 Linux 的关系怎么理解
可以这样区分:
- GNU:操作系统的整体,包含大量 GNU 软件包和第三方自由软件,目标是让用户无需安装可能侵害其自由的软件即可使用电脑。
- Linux:通常指内核,负责资源分配和硬件管理。
- GNU/Linux:两者组合后的完整操作系统,为几百万用户所使用。GNU 工程指出,许多人错误地把这套组合直接称为“Linux”。
如果你在资料里看到“Linux 发行版”,多数情况下它指的是 GNU/Linux 发行版;名称之争背后是“这套系统的主要软件来自 GNU 工程”这一事实。
想体验 GNU,可以怎么开始
GNU 工程建议安装完全由自由软件构成的 GNU/Linux 发行版。官网列出的试用入口包括 Dragora / TDE、Guix / Plasma、Hyperbola / i3、Parabola / LXDE、PureOS / GNOME3、Trisquel / MATE 等组合。如果只想先接触 GNU 的组成部分,也可以单独试用 GNU 组件。
选择时可以用两个条件判断:一是该发行版是否“完全是自由软件”,这对应 GNU 工程的核心主张;二是你偏好的桌面环境是否在其中提供。若你更关心某个具体 GNU 软件包,官网提供全部 GNU 软件包的简介和最新发布列表,可据此查找。
常见卡点
- 把 GNU 当成一个程序:它是操作系统层面的程序集合,包含库、工具和应用。
- 把自由软件等同于免费:四项自由讲的是使用、研究、再分发和改进的权利,与标价无关。
- 把 GNU/Linux 简称为 Linux:技术上内核是 Linux,但完整系统的大量组成部分来自 GNU 工程。
- 以为 Hurd 已废弃:Hurd 仍在由志愿者开发,只是 GNU 系统更常见的搭配是 Linux 内核。
GNU 工程还敦促社区以欢迎、友好和善意的方式沟通,并发布了 GNU 友善沟通指南;如果你想参与,可以从高优先级增强项目、需要维护者的软件包或 FSF 的行动事项入手。