为了账号安全,请及时绑定邮箱和手机立即绑定
慕课专栏

目录

索引目录

Linux命令行与Shell脚本编程大全

原价 ¥ 68.00

立即订阅
02 GNU项目和Linux的不同发行版,摩登时代
更新时间:2019-07-04 18:06:28
人生太短,要干的事太多,我要争分夺秒。

——爱迪生

内容简介

  1. 前言
  2. GNU 项目
  3. Linux 发行版
  4. 总结

1. 前言

上一课掀起你的盖头来,Linux之初见,我们学习了操作系统的概念,知道了 Linux 和 Windows、macOS 一样,也是一种操作系统。

这一课我们接着聊从 1984 年开始的那段历史。

2. GNU 项目

图片描述

上图是 GNU 项目的 logo(标志),因为 GNU 在英语里是“牛羚”的意思。

实际上 GNU 是 “GNU is Not Unix”(这句英语的意思是“GNU 不是 Unix”)的递归缩写,计算机界经常有这样的名字表述法,老外就是萌。

也就是在微软发布 DOS 的同一年,1984年,Richard Stallman(理查德.斯托曼)创立了 GNU 项目。

谁是 Richard Stallman 啊?可能不少人没听过这名字。

图片描述

但是这位前辈可是厉害, 他是:

  • 自由软件基金会(Free Software Fundation,简称 FSF。这里的“Free”是“自由的”意思,不是“免费的”意思)的主席;
  • GNU 项目的创始人。他所写作的GNU通用公共许可证(GNU GPL)是世上最广为采用的自由软件许可证,为 copyleft 观念开拓出一条崭新的道路。由于 GNU 是公开源代码的,为了防止不肖厂商利用自由软件,使其专有化,斯托曼别出心裁,创造了 Copyleft 的授权办法,让所有的 GNU 程序遵循一种“Copyleft”原则,即可以拷贝、可以修改、可以出售,只是有一条:源代码所有的改进和修改必须向每个用户公开,所有用户都可以获得改动后的源码。Copyleft 保证了自由软件传播的延续性;
  • 著名黑客(注意:黑客其实是褒义词,指那些技术非常厉害的大师),1953 年出生于美国纽约曼哈顿地区,1971 年进入哈佛大学学习,同年受聘于麻省理工学院(MIT)人工智能实验室(AI Laboratory);
  • 代表作品:Emacs,GCC(GNU Compiler Collection 的缩写,意为“GNU 编译器集合”,使用范围极广的编译器,甚至在嵌入式领域也有诸多变体),GDB(GNU project DeBugger 的缩写,意为“GNU 项目调试器”,使用范围极广的调试器);
  • 获得过很多荣誉奖章,其中包括 1991 年获得的美国计算机协会颁发的 Grace Hopper(格雷斯.霍普)奖(第一代女程序员:格雷斯.霍普,传说级别的程序媛,“发明”了 bug 这个词);
  • GNU 项目在当时的首要目的是创立一个类 Unix 的操作系统。当然操作系统不仅仅有内核啦,还包含一些底层的基本应用程序,如编译器、链接器、汇编器、文本编辑器,还有很多 API(Application Programming Interface,“应用程序编程接口”。API 是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节)等。

那你要问了:“既然已经有 Unix 这么好的操作系统了,为什么要复刻一个 Unix 出来呢?”

因为 Unix 不是免费的,是商用软件(严格地说一开始是免费的,还可以免费提供学校教学使用,后来不开源了),价格比 Windows 正版还贵一点,简直不能忍。

基于这个原因,Richard Stallman 创立了开源的 GNU 项目,以惠己利人。

补充知识:苹果的 macOS 的内核 Darwin 也是基于类 Unix 系统的(渊源有点复杂,大家有兴趣可以自行搜索)。然而,今天的 Windows 系统却和 DOS 没多大联系了(初代的 Windows 还有 DOS 的遗迹)。

GNU 是自由的操作系统

GNU 不仅是一个免费的操作系统,而且它也是自由的(后来也被称为“开源的”,不过与 Richard Stallman 的初衷已有些许不同了)。

我们说一个软件是自由的,那这和免费的有什么区别呢?

  1. 自由的软件意味着源代码必须公开。例如 Linux 是一个自由的操作系统,我们在网上可以搜索到其所有版本的源代码。而相反,Windows 和 macOS 则不是自由的,而是私有的,它们的源代码你是找不到的,不然微软和苹果就要跳脚了。Windows 和 macOS 这两个操作系统就有点像可口可乐,我们可以享用,但谁也不知道可口可乐的配方。对于不开源的软件,我们无法修改其源代码(源代码就像配方),也不知道内部运作机制;
  2. 自由的软件大部分时候是免费的,但也可以复制、修改和出售。

自由软件的拥护者认为:如果开放源代码,可以使软件得到多方协助,更新速度更快。

自由运动的口号是:“团结就是力量”(我党的真知灼见如此高瞻远瞩)。

Linus Torvalds 霸气侧漏

1991 年,Linus Torvalds(李纳斯·托沃兹,今天在编程领域应该无人不知、无人不晓了吧,就是 Linux 操作系统(严格地说是 Linux 内核)的作者),当时是芬兰赫尔辛基大学的一位学生,他决定在自己的业余时间编写一个类 Unix 的操作系统(内核),最终还真给他开发出了 1.0 版。

Linux 这个名字可以说是 Linus 和 Unix 的合并,也可以说是“Linux Is Not Unix”的递归缩写。下图是 Linus 的照片:

图片描述

正如 GNU 有它的吉祥物,一只牛羚。Linux 也有它的吉祥物:一只名叫 Tux 的萌萌哒雄性企鹅(爷们,24K 纯滴)。

Tux 在英语里是“燕尾服”(正式名称是“男士无尾半正式晚礼服”)的意思,企鹅黑不溜秋的后背是不是很像一件燕尾服呢?而且有点神似 Linus 大叔。

图片描述

关于这个吉祥物还有一个真实的典故。那时候为 Linux 系统设计吉祥物的画家征求广大意见,其他人提议模仿其它软件,用一些霸气的吉祥物,比如鲨鱼,鹰之类。

最后 Linus Torvalds 说:“我以前在澳大利亚被一只企鹅咬过,我觉得企鹅是很有趣的生物”(Linus 可真逗,此邮件目前还保留着)。

所以最后 Linux 的吉祥物就定为了企鹅,还是很可爱的。事实证明,Linus 的决定并没有错,这只呆萌的企鹅不知道萌化了多少程序员的心。至少我对其喜爱有加。

那么 Linux 和 GNU 项目有什么联系呢?

好问题。

可以说这两个项目是互补的:

在 1991 年 Linus 释出 Linux 的第一个版本时,GNU 项目已经创建了不少操作系统的外围软件了,例如:拷贝文件的程序(cp 命令),删除文件的程序(rm 命令),文本编辑器(Emacs),编译器(GCC),调试器(GDB),等一系列的程序,但是还没有自己的内核(Kernel),而 Linux 的出现(Linus 其实就是写了一个类 Unix 的内核,然后移植成功了一些 GNU 的程序)正好填补了这个空缺。

后来完善 Linux 的工作交给了 Linus 和广大开源社区的黑客们,他们一直兢兢业业,才有了今天 Linux 的辉煌。所以 Linus 是站在开源社区巨人肩膀上的“芬兰小毛孩子”。

所以说,GNU 项目(开源的各种程序)+ Linux (操作系统内核)= GNU/Linux 这一个完整的操作系统。

图片描述

生活在非洲大草原上的牛羚和象征芬兰冰天雪地的企鹅,相得益彰,冰火交融,成就了一个传奇(“只是因为在人群中多看了你一眼…”)。

来理清一下思路:

  1. 操作系统的核心称为“内核”,但内核并不就等于操作系统。内核提供系统服务,比如文件管理、虚拟内存、设备 I/O 等。除内核以外,在应用软件与内核之间通常还有些作为中间件的 API,可以供应用程序调用;还包含一些基本的程序,例如文本编辑器、编译器、外壳程序(Shell,如常用的 Bash)等。
  2. 单独的 Linux 内核是没办法工作的,必须要有 GNU 项目的众多应用程序来给它添砖加瓦。你可以想象内核就有点类似房屋的骨架(钢筋混凝土),周边的基本应用程序就相当于房屋的各种设施,这样一幢房子才可以提供不同的人或动物(第三方应用程序,例如 QQ,迅雷等)来使用。Linux 内核的官网是 https://www.kernel.org

因此,Linux 的官方称谓应该是“GNU/Linux”,但是这样的名字有点复杂,发音也不容易,所以一般我们都简称:Linux。

约定:下面的课程中,如果是指 Linux 内核,那么我会使用“Linux 内核”;如果是指 GNU/Linux 这个操作系统整体,那么我会使用“Linux”。

用一张图来总结各个系统的关系吧:

图片描述

现在我们应该对全球三大最常用的桌面操作系统(Windows、Linux 和 macOS)的缘起有了一定认识了吧。

macOS 和 Linux 的设计理念是基于 Unix,Unix 可以说是它们的“祖先”。而 Windows 的祖先是 DOS,虽然我们目前使用的大部分 Windows 版本是基于革命性的 Windows NT 内核。

我们说 macOS 和 Linux 基于Unix,只是说它们复刻了 Unix 的运行模式,源代码是基本不同的,特别是 Linux 的内核,完全是 Linus 从零开始写的。虽然很多代码类似 Unix。而 GNU 项目的很多程序也和 Unix 的类似,连名字都一样,例如 cp 命令、rm 命令、mv 命令等。

说了这么多,希望读者朋友不要嫌我啰嗦,只是为了让大家对这些基本概念有个大体的了解,这样后续课程就比较容易理解了。

3. Linux 发行版

Linux 发展到今天,已经是一个相当复杂和丰富的操作系统了,其大部分源代码还是 GNU 项目的。

因为是开源自由,所以 Linux 不像 Windows 那么死板,你可以自己定制属于自己的 Linux 系统,只要你够厉害,可以自己裁裁剪剪,修修改改 Linux 的源代码。

不过也正因为如此,一些初学者就有点头大了,网上一搜 Linux,版本那么多,用哪一个内核版本呢?然后安装哪些应用程序呢?而且安装方法又不同…

这都是令普通用户作难之处。相比之下,Windows 的选择和安装就简单很多。

为了简化用户安装的过程,以及提供一些基本的软件,例如浏览器,通讯软件,终端,绘图软件,文本编辑器等等,产生了不少的 Linux 发行版,这些 Linux 的操作系统可以说是一整套使用环境:有内核,有 API,有各种预装的应用程序。

这种“发行版”的概念在 Windows 可以说并没有,虽然我们有 Win 10 家庭版和 Win 10 旗舰版,但是不太一样。

不同的 Linux 发行版之间主要区别如下:

  1. 安装方法不一样:有的复杂,有的简单;
  2. 安装应用程序的方式不一样:如果设计得好,那么一个 Linux 发行版安装起应用程序来是非常方便的,比 Windows 下简单快捷多了。我们之后的课程会看到;
  3. 预装的应用程序不一样:就好比 Windows 有预装的软件,比如 IE 浏览器,媒体播放器(Windows Media Player)等,不同的 Linux 发行版也有不同的预装软件。

可以把 Linux 的不同发行版想象成拥有同样核心(Linux 的内核在 Linux 发行版上几乎是差不多的),而有不同装饰的摩登女郎。

不同的 Linux 发行版

全球有很多 Linux 的发行版,五花八门,而又都是免费的(也有个别版本收费,比如 Red Hat 的企业版),很难选择啊。我们接下来简单介绍最常见的 Linux 发行版,然后我会为你做最好的选择。

  • RedHat:红帽。2018 年被 IBM 公司高价收购。国内,乃至是全世界的 Linux 用户所最熟悉、最耳闻能详的发行版想必就是 RedHat 了。性能稳定,老牌的 Linux 发行版。收费的是 RedHat Enterprise Linux(简称 RHEL,也就是 RedHat 的企业版。RHEL 的源代码还是开放的,收费是因为长期升级和更新服务),而正统的 RedHat 版本早已停止技术支持,最后一版是 RedHat 9.0。于是,目前 RedHat 分为两个系列:由 RedHat 公司提供收费技术支持和更新的 RedHat Enterprise Linux,以及由社区开发的免费的 Fedora Core(也就是流行的 Fedora)。
  • Fedora:RedHat 的免费后继版。安装简单,界面华丽。Fedora 也有“帽子”的意思,表示“软呢帽”。Fedora 每半年发行一次,且每次发行都有新功能加入,待测试稳定后将这些新功能添加到 RHEL 版本中,所以 Fedora 有很浓的测试味道。因为其发行频率高、功能更新快所带来的不稳定、高维护成本,企业不太选用 Fedora。
  • CentOS:适用于服务器的 RedHat 版本是 RedHat Enterprise Linux(表示“红帽企业 Linux”,简称 RHEL),这是个收费的操作系统。CentOS 可以算是 RHEL 的克隆版,它最大的好处是免费。CentOS 是 Community Enterprise Operating System 的缩写,表示“社区企业操作系统”,从名字可以看到:CentOS 兼具 Community(“社区”)和 Enterprise(“企业”)的特性,就是融合了 Fedora 和 RedHat 企业版的优点。CentOS 的更新(升级、漏洞修复等)比 RHEL 慢一点。CentOS 因其稳定、长期的升级支持、保守性以及大规模使用性能稳定等因素被企业普遍使用。CentOS 也是我非常推荐的 Linux 发行版,虽然本课采用 Ubuntu 作为演示系统,但大家也可以自己试试 CentOS。
  • Mandriva:最早由 Garl Duval 创建并在 1998 年 7 月发布。以前国内刚开始普及 Linux 时,Mandriva 非常流行。说起 Mandriva 的历史,其实最早 Mandriva 的开发者是基于 Redhat 进行开发的。Redhat 默认采用 GNOME 桌面系统,而 Mandriva 将之改为 KDE。而由于当时的 Linux 普遍比较难安装,不适合第一次接触 Linux 的新手,所以 Mandriva 还简化了安装系统。最后一个版本在 2011 年发行。
  • SUSE:德国最著名的 Linux 发行版,在全世界范围中也享有较高的声誉。SUSE 自主开发的软件包管理系统 YaST 也大受好评。SUSE 于 2003 年年末被 Novell 收购。我以前工作中用过 OpenSUSE,是 SUSE 的社区维护版。
  • Debian:最早由 Ian Murdock 于 1993 年创建。可以算是迄今为止,最遵循 GNU 规范的 Linux 系统。Debian 系统分为三个版本分支(branch):stable,testing 和 unstable。
  • Ubuntu:Debian 的后继或一个分支,也是本课程要使用的 Linux 发行版,之后再详细介绍。
  • Gentoo:最初由 Daniel Robbins(前 Stampede Linux 和 FreeBSD 的开发者之一)创建。Gentoo 的出名是因为其高度的自定制性:因为它是一个基于源代码的(source-based)发行版。尽管安装时可以选择预先编译好的软件包,但是大部分使用 Gentoo 的用户都选择自己手动编译。
  • Slackware:由 Patrick Volkerding 创建于 1992 年。算起来应当是历史最悠久的 Linux 发行版。曾经 Slackware 非常的流行,但是当 Linux 越来越普及,用户的技术层面越来越广后,Slackware 渐渐的被新来的人们所遗忘。
  • MEPIS:由 Warren Woodford 在 2003 年建立。MEPIS 虽然刚建立不久,但是迅速的传播在 Linux 用户间。简单来说,MEPIS 是一个集合了 DebianSid 和 Knoppix 的产物。用户即能将之当作 LiveCD 使用,也能使用常规的图形界面进行安装。
  • Xandros:建立在已经成为历史的 Corel Linux 之上。当初 Corel Linux 的公司由于财政上的困难,被迫终止了 Corel Linux 的开发,而 Xandros 适时地将 Corel Linux 部门买下,于 2002 年 10 月推出全新的 Xandros Desktop。Xandros 的卖点在于极其简单的安装和使用。
  • Deepin:由武汉深之度科技有限公司开发的,为祖国自豪一下。易用。Deepin 不仅仅对最优秀的开源产品进行集成和配置,还开发了基于 HTML5 技术的全新桌面环境、系统设置中心、以及音乐播放器,视频播放器,软件中心等一系列面向日常使用的应用软件。
  • FreeBSD:首先要强调的是:FreeBSD 不是一个 Linux 系统!因为 FreeBSD 的用户也相当多,其许多特性都与 Linux 相类似。事实上,Linux 和 BSD(Berkeley Software Distribution)均是 Unix 的演化分支。并且,Linux 中相当多的特性和功能(比如用于配置 DNS 的 Bind 软件)都是取自于 BSD 的。而 FreeBSD 便是 BSD 家族中最出名,用户数量最多的一个发行版。苹果的 macOS 的内核 Darwin 以前也部分地借鉴了 FreeBSD。

当然了,还有一些 Linux 发行版也很好,鉴于篇幅不能全部介绍。

Debian 这个 Linux 发行版

图片描述

我们会把精力集中在 Debian 这个 Linux 发行版上,因为它算是最符合开源精神的发行版了,也是最符合 GNU 标准,由开源社区维护的。上述不少的 Linux 发行版都是公司来维护的。

Debian 如此成功,所以继承 Debian,又出现了不少 Linux 发行版:

  • Knoppix:由德国的 KlausKnopper 开发的 Knoppix,是一个基于 Debian 的发行版。Knoppix 严格算起来是一款 LiveCD Linux,所谓的 Live CD 就是整个操作系统都在一张光盘上,只要开机从光盘启动,就能拥有一个完整的 Linux 系统,无需安装;
  • Skolelinux:是一份由 Debian Edu 项目制作的 Linux 发行版。作为 Debian Pure Blends 发行版,其为 Debian 正式辅助项目,以提供全面配置好的学校网络环境和学校适用方案;
  • Ubuntu:本课程所要使用的 Linux 发行版;
  • 其它发行版,在此不一一介绍了。

如果您觉得不够清楚,那么下图应该可以帮你理清思路:

图片描述

Ubuntu 这个 Linux 发行版

图片描述

为什么我们要选择 Ubuntu(发音:乌班图)作为本系列课程的 Linux 发行版呢?

有以下几个原因(我不会坑你的,放心):

  1. 简便易用,适合普罗大众:即使是对 Linux 初学者,Ubuntu 系统也已经很简单易用了,除了命令行,Ubuntu 这个名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想;
  2. 更新定期而频繁:每 6 个月就有一个新的 Ubuntu 版本,不会过时;
  3. 使用者众多,支持社区很多,文档完整:使用一个软件(操作系统也是软件)最怕的就是社区支持不够,文档不全,遇到问题没处问。使用 Ubuntu 的你完全没有这类问题。全球有无数的 Ubuntu 用户可以给你提供技术支持;
  4. 标准化:Google 的 Android 源代码的默认编译环境就是 Ubuntu。Google 的人工智能开发框架 TensorFlow 的 Linux 默认支持发行版也是 Ubuntu。
小结
  1. Linux 是开源的,即是说:Linux 的源代码是开放的,所有人都可以看到;相反的,macOS 和 Windows 的源代码则是闭源的,我们不能看到它们的代码;
  2. 有很多不同的 Linux 变体,术语称为“Linux 发行版”;
  3. 在众多的 Linux 发行版中,Ubuntu 是最流行的。它是 Debian 这个 Linux 发行版的大家族的一员,可以说是一个后继。Ubuntu 将成为我们这个课程后续一直使用的 Linux 发行版。

今天的课就到这里,一起加油吧!

}
立即订阅 ¥ 68.00

你正在阅读课程试读内容,订阅后解锁课程全部内容

千学不如一看,千看不如一练

手机
阅读

扫一扫 手机阅读

Linux命令行与Shell脚本编程大全
立即订阅 ¥ 68.00

举报

0/150
提交
取消