热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

世纪大争论:Linux还是GNU/Linux?

我们在网上已经习惯用“Linux”来称呼Linux操作系统了,然而,偶尔也用“GNULinux”来称呼和指代同样的操作系统和软件。同时人们也在争论这两种称呼哪个更合适。本文将不会选边站队,仅力图向你

tux-and-gnu

我们在网上已经习惯用“Linux”来称呼Linux操作系统了,然而,偶尔也用“GNU/Linux”来称呼和指代同样的操作系统和软件。同时人们也在争论这两种称呼哪个更合适。

本文将不会选边站队,仅力图向你讲述这两种称呼的来历,并解释"Linux"与“GNU/Linux”之间的微妙差异。

什么是“Linux”?

“Linux”这个词仅仅代表内核——操作系统的核心。其他软件,比如用来编译内核的GNU C编译器,bash命令行终端,GNU Shell组件(包括所有你用到的基本命令),X.org图形服务器, 一个图形化的桌面环境比如Unity(译者注:基于GNOME 3开发),以及在桌面环境上运行的各种软件,比如Firefox,这些都是由不同开发者来开发的。

Linux发行版则集合来所有这些由不同开发者开发的组件,我们习惯将这个有机整合的软件包称为“Linux”.有关更多Linux发行版的知识以及发行版之间的差别,可以阅读HTG 解码:什么是Linux发行版?它们之间有何差别?

GNU计划

1983年Richard Stallman(理查德·斯托曼)创立GNU计划。GNU的目标是创建一套完全由自由软件的兼容UNIX的操作系统。“GNU”是英文“GNU‘s Not Unix!”的递归缩写。(“自由软件”是对一类开源软件的称呼,而自由软件更强调自 由,不过,本文不打算讨论自由软件和开源软件的差异)

1991年的时候,GNU计划已经完成了GNU操作系统的绝大部分组件,包括GNU C编译器(gcc),bash命令行终端和其他Shell命令行组件,以及Emacs文本编辑器等等。其他组件则有已经存在的自由软件来替代,比如X Windows系统来提供图形化桌面的接口。

然而,操作系统的内核——GNU Hurd内核——依旧没有完成。GNU计划非常冒险的选择了“微内核”设计架构(微内核是指将系统服务的实现,与系统的基本操作规则区分开来。它实现的方式,是将核心功能模块化,划分成几个独立的进程,独立运行。可以减少系统之间的耦合度,易于实现与除错,也可增进可移植性。它可以避免单一组件失效,而造成整个系统崩溃。Windows NT以及Mac OS均是微内核架构。——译者注,摘自维基百科“微内核”词条),也正因为选用了微内核架构造成开发周期异常漫长。(到2013年,GNU Hurd内核已经开发了23年依然没有发布稳定版)。

千呼万唤Linux来!

对GNU操作系统来说,缺失的最后一环就是内核(kernel),同时这也是最重要的一环,可谓是“万事俱备只欠东风”。时间到了1991年,芬兰赫尔辛基大学的学生Linus Torvalds(林纳斯·托瓦兹)发布了Linux内核的第一个版本。将Linux内核、GNU软件以及X窗口管理系统整合在一起,就可以成为了一个完整的且自由分发的操作系统了(就如同现在的“Linux发行版”)。

刚开始就已经有这种操作系统应该如何称呼的争论。1992年,Yggdrasil计划用““Yggdrasil Linux/GNU/X”来命名其整合起来的软件。而Richard Stallman和自由软件基金会更加推崇使用“GNU/Linux”。Debian目前一直将其软件称为“GNU/Linux”。(Debian以其坚守Unix和自由软件的精神,以及其给予用户的众多选择而闻名。现时Debian包括了超过37500个软件包并支持12个计算机系统结构。——译者注,摘自维基百科“Debian”词条)。

gnu-love

不同的声音:GNU/Linux

GNU计划要开发一个叫“GNU”的完全自由的操作系统,而Linux的绝大部分软件也是GNU计划提供的。然而这就出现了一个显而易见的问题,也正如Richard Stallman反对的,称之为“Linux”会泯灭GNU的意义以及其初始目标——一个完全自由的操作系统并为用户提供自由。而这也就与另一组争论交织在一起了——“自由软件”和“开源软件”,“自由软件”这个称呼更加强调自由权力,而“开源软件”则关注于技术优势而淡化意识形态纷争。

正如2005年Richard Stallman在接受ZNET采访时所说:”设计Linux的目的并不是为了解放网络世界,而且Linux的开发动机也并不会带给我们今天所看到的整个GNU/Linux系统。今天有数十万用户使用这样的操作系统,他们因此而获得了自由——但他们却并没有意识到这一点,因为他们觉得这个系统就是Linux,而且是一个学生因为“只是觉得好玩”而开发出来的。”

(1991年Linus Torvalds发布Linux内核第一版的时候是芬兰赫尔辛基大学研二的学生,第一次发布到新闻组的时候称其写Linux只是“Just For Fun”,后来他在2002年出版了一本自传,也取名为《Just For Fun》——译者注)

更多有关此的思考可以在GNU网站上找到。

richard-stallman

不同的声音:Linux

而支持使用“Linux”这个称呼的人认为,仅仅关注GNU是个错误,那么基于同样的理由,众多发行版包含不同组织的软件那么就应该称为“Mozilla/KDE/Apache/X.org/GNU/Linux”。(这是典型的诡辩——译者评价)

大多数人仍旧使用“Linux”这个称呼。除非有更好的,因它简单易记,朗朗上口。且无论这理想的名字是什么,“Linux”都会是大多人对这操作系统的简称。你可以在这里看到“Linux”也能在别处看到,因为这对读者来说是能够第一时间就明白的称呼。

好了,我们以Linus Torvalds于1996年在新闻组里的话做结尾:“嗯,关于这个的讨论已经够多的了,非常感谢!对于公众来说,如何称呼Linux这根本就不算个事,只要可以自圆其说就够了(对双方而言)。从我个人的角度,我会非常乐意继续称之为Linux”。

如果想了解更多关于Linux的起源与发展,这里极客范推荐给大家一个视频:Code Linux。视频中有包括Linus Torvalds、Richard Stallman、Alan Cox、Eric S. Raymond等一众大神现身说法,推荐给程序员和极客们。 

 

原文链接: Chris Hoffman 翻译: 极客范 爱开源的贡献开源社区

译文链接: http://www.geekfan.net/4221/

转载请保留原文出处、译者和译文链接。]


推荐阅读
  • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • 深入解析 ELF 文件格式与静态链接技术
    本文详细探讨了ELF文件格式及其在静态链接过程中的应用。在C/C++代码转化为可执行文件的过程中,需经过预处理、编译、汇编和链接等关键步骤。最终生成的可执行文件不仅包含系统可识别的机器码,还遵循了严格的文件结构规范,以确保其在操作系统中的正确加载和执行。 ... [详细]
  • 在Linux环境下编译安装Heartbeat时,常遇到依赖库缺失的问题。为确保顺利安装,建议预先通过yum安装必要的开发库,如glib2-devel、libtool-ltdl-devel、net-snmp-devel、bzip2-devel和ncurses-devel等。这些库是编译过程中不可或缺的组件,能够有效避免编译错误,确保Heartbeat的稳定运行。 ... [详细]
  • Python网络爬虫入门:利用urllib库进行数据抓取
    Python网络爬虫入门:利用urllib库进行数据抓取在数据科学和Web开发领域,Python凭借其简洁高效的特性成为首选语言。本文主要介绍了如何在Windows环境下使用Python的urllib库进行基本的网络数据抓取。考虑到命令行操作的不便,作者选择了Jupyter Notebook作为开发环境,不仅简化了配置过程,还提供了直观的数据处理和可视化功能。通过实例演示,读者可以轻松掌握urllib的基本用法,为深入学习网络爬虫技术打下坚实基础。 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • 深入解析:Android开发进阶之Vim编辑器基础操作与应用
    本文深入探讨了Android开发中使用Vim编辑器的基础操作与应用。通过详细解析Vim的基本命令、配置文件和常用插件,帮助开发者提高代码编写效率。文章还介绍了如何在Android开发环境中高效利用Vim,包括集成开发环境(IDE)的配置和常见问题的解决方法。适合初学者和有经验的开发者参考。 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 系统管理员可以通过多种方法实时监控Linux系统中的用户活动,包括当前已登录的用户及其正在进行的操作。利用特定的命令和工具,管理员可以轻松获取这些信息,确保系统的安全性和稳定性。例如,使用`who`、`w`或`last`等命令可以快速查看当前登录的用户及其活动详情。 ... [详细]
  • Linux学习精华:程序管理、终端种类与命令帮助获取方法综述 ... [详细]
  • 对于以压缩包形式发布的软件,其目录中通常包含一个配置脚本 `configure`。该脚本的主要功能是确定编译所需的各项参数,如头文件的位置和链接库的路径,并生成相应的 `Makefile` 以供编译使用。通过运行此脚本,开发者可以确保软件在不同环境下的正确编译与安装。此外,该脚本还能够检测系统依赖项,进一步提高编译过程的可靠性和兼容性。 ... [详细]
  • 在Linux环境中,通过编写Shell脚本来实现自定义命令的创建与激活,能够极大地简化服务器上多个子系统的管理操作。例如,通过简单的命令如“tt”,即可快速查看各个应用程序的名称及其运行状态,从而提高系统维护的效率和便捷性。 ... [详细]
author-avatar
冰weiter
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有