diff --git a/wiki/operating-system/Linux/文化/Linux 是什么.md b/wiki/operating-system/Linux/文化/GNU&Linux 历史与发展.md similarity index 74% rename from wiki/operating-system/Linux/文化/Linux 是什么.md rename to wiki/operating-system/Linux/文化/GNU&Linux 历史与发展.md index bf6096bf..cb099bdb 100644 --- a/wiki/operating-system/Linux/文化/Linux 是什么.md +++ b/wiki/operating-system/Linux/文化/GNU&Linux 历史与发展.md @@ -1,23 +1,29 @@ --- -id: Linux 是什么 -title: Linux 是什么 +title: GNU&Linux 历史与发展 +description: GNU&Linux 历史与发展 +keywords: +- GNU +- Linux +- 历史 +- 发展 +tags: +- Linux sidebar_position: 1 -data: 2022年8月5日 +author: 7Wate +date: 2023-03-15 --- ## 概述 -Linux 是一个开源操作系统和 IT 基础架构平台。它由 Linus Torvalds 于 1991 年构思设计而成,最初这只是他的一项兴趣爱好。如今,它不仅是公共互联网服务器上最常用的操作系统,还是速度排名前 500 的超级电脑上使用的唯一一款操作系统;同时,它也广泛地运用在智能移动设备和嵌入式终端上。 +GNU/Linux 是一个开源操作系统和 IT 基础架构平台。Linux 内核由 Linus Torvalds 于 1991 年构思设计而成,最初这只是他的一项兴趣爱好。如今,GNU/Linux 不仅是公共互联网服务器上最常用的操作系统,还是速度排名前 500 的超级电脑上使用的唯一一款操作系统;同时,GNU/Linux 也广泛地运用在智能移动设备和嵌入式终端上。 -Linux 也是自由软件和开放源代码软件发展中最著名的例子。只要遵循 GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用 Linux 的所有底层源代码,也可以自由地修改和再发布。大多数 Linux 系统还包括像提供 GUI 的 X Window 之类的程序。 +GNU/Linux 也是自由软件和开放源代码软件发展中最著名的例子。只要遵循 GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用 GNU/Linux 的所有底层源代码,也可以自由地修改和再发布。大多数 GNU/Linux 系统还包括像提供 GUI 的 X Window 之类的程序。 -## 渊源 +如果提及 GNU/Linux 就不得不了解 **UNIX** 与 **GUN** 计划,以及它们之间是如何相爱相杀、互相成就的。 -提及 Linux 就不得不了解 **UNIX** 与 **GUN** 计划,以及它们之间是如何相爱相杀、互相成就的。 +## Unix 的诞生和演变 -### UNIX - -UNIX(非复用信息和计算机服务,Uniplexed Information and Computing Service,UnICS)操作系统,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由肯·汤普逊、丹尼斯·里奇和道格拉斯·麦克罗伊于 1969 年在 AT&T 的贝尔实验室开发。 +[UNIX](https://unix.org/)(非复用信息和计算机服务,Uniplexed Information and Computing Service,UnICS)操作系统,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由肯·汤普逊、丹尼斯·里奇和道格拉斯·麦克罗伊于 1969 年在 AT&T 的贝尔实验室开发。 目前它的**商标权由国际开放标准组织所拥有,只有符合单一 UNIX 规范的 UNIX 系统才能使用 UNIX 这个名称,否则只能称为类 UNIX(UNIX-like)。** @@ -37,41 +43,31 @@ UNIX(非复用信息和计算机服务,Uniplexed Information and Computing S ![Unix_history-simple](https://static.7wate.com/img/2022/08/05/e52dd5d5baf26.svg) -### GUN +## GNU 项目的历史和目标 1983 年,AT&T 发布了 Unix 最新版 system V,这是一个商业化版本,付费才能使用,并且不得传播源码。正是因为看到了 Unix 被商业化,所以 **1983 年 9 月 27 日由理查德·斯托曼在麻省理工学院公开发起 GNU 计划。** -GNU 计划的基本目标和一贯目标是提供一个和 Unix 兼容的 100% 自由软件的操作系统。不是 95%、也不是 99.5%、而是 100% 自由。这个系统的名字叫 **GNU,是 GNU's Not Unix 的首字母递归缩写**——这是对 Unix 的技术思想致敬的一种方法,同时表达 GNU 有所不同。从技术上说,GNU 很像 Unix。但是它不同于 Unix,GNU 给予其用户自由。 - ->关于自由软件,开源软件,商业软件究竟有什么区别? -> -> - 自由软件:反对脑力劳动成果私有化、反知识产权的左翼运动。 -> - 商业软件:支持脑力劳动成果私有化,支持知识产权的右翼运动。 -> - 开源软件:保护脑力劳动成果私有化,保护支持产权同时有条件的开放软件版权的左倾运动。 +[GNU 计划](https://www.gnu.org/)的基本目标和一贯目标是提供一个和 Unix 兼容的 100% 自由软件的操作系统。不是 95%、也不是 99.5%、而是 100% 自由。这个系统的名字叫 **GNU,是 GNU's Not Unix 的首字母递归缩写**——这是对 Unix 的技术思想致敬的一种方法,同时表达 GNU 有所不同。从技术上说,GNU 很像 Unix。但是它不同于 Unix,GNU 给予其用户自由。 1985 年,理查德·斯托曼创立了自由软件基金会来为 GNU 计划提供技术、法律以及财政支持。到了 1990 年,GNU 计划已经开发出的软件包括了一个功能强大的文字编辑器 Emacs、C 语言编译器 GCC 以及大部分 UNIX 系统的程序库和工具。**唯一依然没有完成的重要组件,就是操作系统的内核(称为HURD)。** -**1991 年,Linus Torvalds 编写出了与 UNIX 兼容的 Linux 操作系统内核并在 GPL 下发布。**Linux 之后在网上广泛流传。1992 年,Linux 与其他 GNU 软件结合,完全自由的操作系统正式诞生。许多程序员参与了 Linux 的开发与修改,也经常将 Linux 当成开发 GNU 计划软件的平台。该操作系统往往被称为“GNU/Linux”或简称 Linux。 +**1991 年,Linus Torvalds 编写出了与 UNIX 兼容的 Linux 操作系统内核并在 GPL 下发布。**GNU/Linux 之后在网上广泛流传。1992 年,Linux 与其他 GNU 软件结合,完全自由的操作系统正式诞生。许多程序员参与了 Linux 的开发与修改,也经常将 Linux 当成开发 GNU 计划软件的平台。该操作系统往往被称为“GNU/Linux”或简称 Linux。 **但 Linux 本身不属于 GNU 计划的一部分,GNU 计划自己的内核 Hurd 依然在开发中,目前已经发布 Beta 版本。** -## Linux +## Linux 的诞生和发展 1991 年,Linus Torvalds 在赫尔辛基大学上学时,对操作系统很好奇。他对 MINIX 只允许在教育上使用很不满(在当时 MINIX 不允许被用作任何商业使用),于是他便开始写他自己的操作系统,这就是后来的 Linux 内核。 > Linus Torvalds 曾笑言:我要是知道有 BSD,那我就不开发 Linux 了。 -Linux 的标志和吉祥物是一只名字叫做 Tux 的企鹅,标志的由来有一说是因为 Linus 在澳洲时曾被一座动物园里的企鹅咬了一口,便选择企鹅作为 Linux 的标志,但更容易被接受的说法是:**企鹅代表南极,而南极又是全世界所共有的一块陆地**。这也就代表 Linux 是所有人的 Linux。 - -### 发展现状 +[Linux](https://www.linux.org/) 的标志和吉祥物是一只名字叫做 Tux 的企鹅,标志的由来有一说是因为 Linus 在澳洲时曾被一座动物园里的企鹅咬了一口,便选择企鹅作为 Linux 的标志,但更容易被接受的说法是:**企鹅代表南极,而南极又是全世界所共有的一块陆地**。这也就代表 Linux 是所有人的 Linux。 1994 年 3 月,Linux1.0 版正式发布,Marc Ewing 成立 **Red Hat 软件公司**,成为最著名的 Linux 经销商之一。 今天由 Linus Torvalds 带领下,众多开发人员共同参与开发和维护 Linux 内核。理查德·斯托曼领导的自由软件基金会,继续提供大量支持 Linux 内核的 GNU 组件。一些个人和企业开发的第三方的非 GNU 组件也提供对 Linux内核的支持,这些第三方组件包括大量的作品,有内核模块和用户应用程序和库等内容。 -### 发行版本 - -Linux 发行版指的就是通常所说的”Linux操作系统”,它一般是由一些组织、团体、公司或者个人制作并发行的。 +Linux 发行版指的就是通常所说的 **Linux 操作系统**,它一般是由一些组织、团体、公司或者个人制作并发行的。 Linux 内核主要作为 Linux 发行版的一部分而使用。通常来讲,一个 Linux 发行版包括 Linux 内核,以及将整个软件安装到电脑上的一套安装工具,还有各种 GNU 软件,和其他的一些自由软件,在一些 Linux 发行版中可能会包含一些专有软件。 @@ -79,7 +75,7 @@ Linux 内核主要作为 Linux 发行版的一部分而使用。通常来讲, ![Linux_Distribution_Timeline_Dec._2020](https://static.7wate.com/img/2022/08/05/681bed08d91c5.svg) -## Linux 的优点 +## GNU/Linux 的特点和优势 ### 跨平台的硬件支持 @@ -144,13 +140,3 @@ Linux 系统拥有一个团结且友好型的社区。由于 Linux 在桌面系 ### 开源 因为开源的特性,多数 Linux 发行版都会去中心化在全球部署镜像,平时在 Windows 和 macOS 的更新下载不稳定?在 Linux 设置中更换为本地的镜像源便无须担心。 - -## Linux 的缺点 - -### 游戏绝缘体 - -Linux 基本和游戏无缘。 - -### 不支持部分商业应用 - -微信、QQ 等等这些生活中常见的商业软件,虽然 Wine 可以支持 Windows 应用的运行,但是没有 Windows 和 Mac 好用。 diff --git a/wiki/operating-system/Linux/文化/Linux 主流社区.md b/wiki/operating-system/Linux/文化/GNU&Linux 社区与文化.md similarity index 96% rename from wiki/operating-system/Linux/文化/Linux 主流社区.md rename to wiki/operating-system/Linux/文化/GNU&Linux 社区与文化.md index 0bc260a4..1b65a36c 100644 --- a/wiki/operating-system/Linux/文化/Linux 主流社区.md +++ b/wiki/operating-system/Linux/文化/GNU&Linux 社区与文化.md @@ -1,8 +1,16 @@ --- -id: Linux 主流社区 -title: Linux 主流社区 +title: GNU&Linux 社区与文化 +description: GNU&Linux 社区与文化 +keywords: +- GNU +- Linux +- 社区 +- 文化 +tags: +- Linux sidebar_position: 2 -data: 2022年8月8日 +author: 7Wate +date: 2023-03-15 --- ## 官方社区 @@ -11,6 +19,10 @@ data: 2022年8月8日 内核归档社区:[https://www.kernel.org](https://www.kernel.org/) +GNU 项目社区:[https://www.gnu.org](https://www.gnu.org/) + +自由软件基金会:[https://www.fsf.org](https://www.fsf.org/) + ## 开源社区 ### Debian 社区 @@ -111,7 +123,7 @@ Arch 拥有丰富的 [wiki](https://wiki.archlinux.org/) 文档供使用,几 | `pacman -Qi ` | 检索包的详细信息 | | `pacman -Ql ` | 检索包的文件列表 | | `pacman -Sw ` | 下载包(不安装) | -| `pacman -Sc` | 清理未安装的包文件(/var/cache/pacman/pkg/ 目录) | +| `pacman -Sc` | 清理未安装的包文件(/var/cache/pacman/pkg/ 目录) | | `pacman -Scc` | 清理所有的缓存文件 | #### 社区评价 @@ -185,16 +197,16 @@ RPM 软件包分为**二进制包(Binary)、源代码包(Source)和 Delt | DNF | yum | 说明 | | ------------------------- | ------------------------- | ---------------------------- | | `dnf repolist all` | `yum repolist all` | 显示所有仓库 | -| `dnf search ` | `yum search ` | 检索包 | +| `dnf search ` | `yum search ` | 检索包 | | `dnf list installed` | `yum list installed` | 列出所有安装的包 | -| `dnf info ` | `yum info ` | 查看软件包详情 | +| `dnf info ` | `yum info ` | 查看软件包详情 | | `dnf install ` | `yum install ` | 安装软件包及其所需的所有依赖 | -| `dnf update ` | `yum update ` | 升级软件包 | -| `dnf remove ` | `yum remove ` | 删除软件包 | +| `dnf update ` | `yum update ` | 升级软件包 | +| `dnf remove ` | `yum remove ` | 删除软件包 | | `dnf reinstall ` | `yum reinstall ` | 重新安装特定软件包 | | `dnf distro-sync` | `yum distro-sync` | 更新软件包到最新的稳定发行版 | | `dnf check-update` | `yum check-update` | 检查系统所有软件包的更新 | -| `dnf update` | `yum update` | 升级所有系统软件包 | +| `dnf update` | `yum update` | 升级所有系统软件包 | | `dnf clean all` | `yum clean all` | 删除缓存 | ### Ubuntu 社区 diff --git a/wiki/operating-system/Linux/文化/_category_.json b/wiki/operating-system/Linux/文化/_category_.json index aa0aa574..7225720a 100644 --- a/wiki/operating-system/Linux/文化/_category_.json +++ b/wiki/operating-system/Linux/文化/_category_.json @@ -3,6 +3,6 @@ "position": 1, "link": { "type": "generated-index", - "title": "基础" + "title": "文化" } } \ No newline at end of file diff --git a/wiki/operating-system/Linux/文化/开源软件的概念与重要性.md b/wiki/operating-system/Linux/文化/开源软件的概念与重要性.md new file mode 100644 index 00000000..8a7e3a10 --- /dev/null +++ b/wiki/operating-system/Linux/文化/开源软件的概念与重要性.md @@ -0,0 +1,130 @@ +--- +title: 开源软件的概念与重要性 +description: 开源软件的概念与重要性 +keywords: +- 开源 +- 概念 +- 重要性 +tags: +- 开源 +sidebar_position: 3 +author: 7Wate +date: 2023-03-15 +--- + +开源软件的发展始于上世纪80年代,起初是由一些计算机爱好者和学术研究人员开发的。随着互联网的发展,越来越多的人开始加入到开源软件开发的行列中。 + +开源软件是指能够公开查看、使用、复制、修改和分发源代码的软件。**源代码开放的软件并不一定是开源软件,开源软件有着严格统一的的定义,封闭软件(Closed Software)、自由软件(Free software)和开源软件(Open source software)有着显著地区别。** + +| 区别 | 自由软件 | 开源软件 | 商业软件 | +| :------: | :--------: | :--------: | :------: | +| 私有化 | 反对 | 保护 | 支持 | +| 知识产权 | 反对 | 有条件保护 | 支持 | +| 使用条件 | 无限制 | 开放源代码 | 有条件 | +| 商业模式 | 可能不支持 | 支持 | 支持 | + +自由软件与商业软件是两种截然不同的软件开发思想,前者反对脑力劳动成果私有化、反知识产权,强调软件的使用和传播应该是自由的,所有人都有权使用和修改软件。而商业软件则支持脑力劳动成果私有化,主张软件的使用应该受到一定的控制和限制,开发者有权对软件进行专利保护和商业化运营。 + +开源软件则是介于两者之间的一种软件开发思想,它保护脑力劳动成果私有化和支持知识产权,但同时强调开放源代码和使用条件的公开和透明,允许其他人使用、修改和分发软件,同时也允许商业化运营,但在使用和分发上有一些条件限制。 + +在商业模式方面,自由软件和开源软件可能不支持商业模式,或者支持不同类型的商业模式,例如服务、咨询和技术支持等。而商业软件则通常支持商业模式,并通过销售软件许可证等方式获取商业利益。 + +## 开源软件的定义 + +[开源软件促进协会](https://opensource.org/) OSI 对开源软件有明确的定义,OSI 对开源软件的定义一共有十个条款: + +``` markdown +1. 自由再发布(Free Redistribution) +2. 源代码(Source Code) +3. 派生作品(Derived Works) +4. 作者源代码的完整性(Integrity of The Author's Source Code) +5. 不能歧视任何个人和团体(No Discrimination Against Persons or Groups) +6. 不能歧视任何领域(No Discrimination Against Fields of Endeavor) +7. 许可证的发布(Distribution of License) +8. 许可证不能针对某个产品(License Must Not Be Specific to a Product) +9. 许可证不能约束其他软件(License Must Not Restrict Other Software) +10. 许可证必须技术中立(License Must Be Technology-Neutral) +``` + +通过开源软件定义的十个条款,可以清楚的看到 OSI 所坚持的原则: + +- **坚持开放,鼓励最大化地参与和协作** +- **尊重作者权利,同时保证程序的完整性** +- **尊重独立和中立,避免任何可能影响这种独立性的事物** + +有了这样一个清晰而又完整的定义,在法律层面保证了开源软件的开放性,独立性和继承性。 + +## 开源软件的优点 + +如今,开源软件已经成为了计算机行业的重要组成部分。在云计算、大数据、人工智能、区块链等领域,开源软件已经成为了主流。开源软件具有以下优点: + +1. 降低成本:使用开源软件可以降低企业和个人的软件开发和使用成本,促进信息技术的普及和发展。 +2. 提高软件质量:由于开源软件可以被众多开发者修改和维护,因此往往拥有更高的质量和稳定性。 +3. 促进创新:开源软件允许任何人自由修改和定制,因此可以促进创新和技术进步。 +4. 社区贡献:开源软件的发展离不开庞大的社区支持和贡献。开源社区的力量可以帮助开源软件更快地发展和成长。 + +## 开源社区的贡献和影响 + +开源社区是指一群志同道合的开发者和用户,他们自愿地为开源软件的发展做出贡献。开源社区的贡献和影响包括: + +1. 代码贡献:开源社区的开发者可以为开源软件贡献代码和新功能,为软件的发展和改进做出贡献。 +2. 社区支持:开源社区的用户可以为其他用户提供支持和帮助,帮助他们解决问题和改进软件。 +3. 文档贡献:开源社区的用户可以为开源软件编写文档和教程,帮助其他用户更好地了解和使用软件。 +4. 测试贡献:开源社区的用户可以为开源软件测试和反馈问题,帮助开发者发现和修复软件中的漏洞和问题。 +5. 社区文化:开源社区的文化包括开放、透明、协作和互助,这种文化对软件开发和技术创新产生了重要影响。 + +开源社区的贡献和影响不仅限于软件本身,还可以促进技术创新和知识共享。例如,一些开源社区的成员通过协作和分享知识,共同解决了一些重大技术难题,为社会的进步做出了贡献。同时,开源社区的文化也对软件行业和互联网文化产生了重要影响,激发了人们对于开放、自由和协作的追求。 + +### 著名的开源社区 + +1. [Linux 开源社区](https://www.linuxfoundation.org/):Linux 是一个开源操作系统,由一群志愿者开发和维护,Linux 开源社区是 Linux 开发和用户社区的总称,包括 Linux 内核开发者、Linux 发行版开发者和 Linux 用户等。 +2. [Apache Software Foundation](https://www.apache.org/):Apache Software Foundation 是一个非营利组织,致力于支持开源软件项目的开发和维护,旗下拥有众多著名的开源软件项目,如 Apache HTTP Server、Hadoop、Tomcat 等。 +3. [GitHub 开源社区](https://github.com/):GitHub 是一个代码托管和开源社区平台,用户可以在 GitHub 上创建和维护开源项目,并与其他开发者协作开发和维护项目。 +4. [Eclipse 开源社区](https://www.eclipse.org/):Eclipse 开源社区是一个致力于开发和维护 Eclipse 开源软件的社区,Eclipse 是一个跨平台的集成开发环境(IDE),被广泛用于 Java 开发和其他编程语言的开发。 +5. [Mozilla 开源社区](https://www.mozilla.org/en-US/):Mozilla 开源社区是一个致力于推广开放网络和开源软件的组织,旗下拥有著名的开源软件项目,如 Firefox 浏览器、Thunderbird 邮件客户端等。 + +这些开源社区不仅在技术上做出了巨大贡献,还形成了独特的开源文化和价值观,成为了全球开源社区的重要组成部分。 + +## 开源软件的风险 + +开源软件主要风险在于`管理维护`和`技术支持`以及`许可证法律纠纷`,由于开源软件采用的协作方式,你可能无法追究某一处代码的作者(部分协议要求作者著名)。以及如果出现问题,你可能无法寻找官方的技术支持,更多的支持可能来自于社区,可这种支持不是每次都有好人跳出来帮忙。还有如果你不了解许可证可能会带来的法律风险(部分国家法律不同,如果源代码无许可证,默认著作权属于作者)。 + +## 开源许可证简介 + +开源许可证并不只是保护作者的权利,更多是赋予用户各项权利,许可证规定了使用主体,方式,用途。明确说明了用户可以是个人或者公司等,怎么修改和运行以及是否可以用来进行其他合法用途。 + +在使用开源软件要做的第一步就是找出开源软件中所涉及的所有许可证。每个开源软件的不同版本可能会使用不同的许可证,同时还有注意许可证的版本,以及有些开源软件会采用双重或多重许可(dual-license)的模式。 + +在 OSI 的网站上列出的 [**流行并广泛使用且拥有广泛社区的许可证**](https://opensource.org/licenses/category),分别是: + +- [Apache 许可证 2.0](https://www.apache.org/licenses/LICENSE-2.0) +- [BSD 许可证 3-Clause](https://opensource.org/licenses/BSD-3-Clause) +- [BSD 许可证 2-Clause](https://opensource.org/licenses/BSD-2-Clause) +- [GNU 通用公共许可证(简称 GPL)](https://opensource.org/licenses/gpl-license) +- [GNU 宽通用公共许可证(简称 LGPL)](https://opensource.org/licenses/lgpl-license) +- [MIT 许可证](https://opensource.org/licenses/MIT) +- [Mozilla 公共许可证 2.0(简称 MPL)](https://opensource.org/licenses/MPL-2.0) +- [通用开发和发布许可证 1.0(简称 CDDL)](https://opensource.org/licenses/CDDL-1.0) +- [Eclipse 公共许可证 2.0(简称 EPL)](https://opensource.org/licenses/EPL-2.0) + +开源软件许可证规定了软件代码的使用、修改和分发等方面的条款和条件,不同的许可证可能有不同的限制和要求。在使用开源软件时,需要仔细阅读和理解相应的许可证,确保自己的使用行为符合许可证的要求。 + +## 许可证的兼容性 + +目前经过 ISO 认证的许可证多达 70 多种,被自由软件基金会认可的自由软件许可证也有数十种,而它们的条款又各不相同,有些甚至互相矛盾。这种兼容性问题被称为`许可证增值问题(License proliferation)`。 + +怎么样才算兼容呢?如果使用许可证 A 的代码和使用许可证 B 的代码能在一个广域作品中结合在一起,那么 A 和 B 就是兼容的,否则就是不兼容的。更近一步,如果结合后的广义作品可以用许可证 A 发布,那么许可证 B 就是许可证 A 兼容的(A-compatible)。反之亦然,但需要注意的是兼容性并**不可逆**。 + +### 如何选择许可证 + +![开源许可证.png](https://static.7wate.com/img/2020/07/02/fe11588b073bf.png) + +- **[开源许可证选择工具](https://kaiyuanshe.cn/license-tool/)** + +如今开源软件早已经成为了软件领域不可或缺的重要组成部分,要以辨证的观点看待开源软件。它自由,平等,协作的精神实践了信息和知识共享的理念,并且实现了知识产权保护和分享之间的微妙平衡。同时开源带来的自由,免费有可能也是最贵的。 + +> 参考: +> 《开源软件之道》 +> [开源社——开源许可证选择器](https://kaiyuanshe.cn/license-tool/) +> [Open Source Initiative](https://opensource.org/) +> [阮一峰《如何选择开源许可证》](http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html)