GNU/Linux

在技术应用领域,很多人确实将 GNU/Linux 简称为“Linux”,这是一种广泛接受的简化方式,尤其是在非正式场合。

但在自由软件社区和正式讨论中,更严谨的表达是“GNU/Linux”,以尊重所有组成部分的贡献。

但确实有些Linux系统不使用GNU工具链:

  • Alpine Linux:使用更轻量化的 musl libc 和 BusyBox 代替 GNU 工具链,因此它被称为“Linux 发行版”而非“GNU/Linux”。
  • Android,基于 Linux 内核,但不包含 GNU 工具链,而是采用了 Google 自己的工具(如 bionic libc),因此严格来说,它并非 GNU/Linux。

什么是GNU?

GNU 是 GNU’s Not Unix 的递归缩写,指代一个自由软件操作系统项目。它由自由软件基金会(Free Software Foundation,简称 FSF)创立,目标是开发一个完全自由(用户可以自由地运行、修改和分发软件,而无需支付版权许可费。)的类 Unix 操作系统。

  • GNU 提供了操作系统所需的基础工具和软件,包括编译器(GCC)、文本编辑器(Emacs)、命令行工具(如 Bash、coreutils)等。

  • 但 GNU 缺少一个内核。虽然开发了自己的内核(GNU Hurd),但 Hurd 发展较慢,未能成为主流。

什么是 Linux?

Linux 是一个开源的类 Unix 操作系统,它是由 Linus Torvalds 于 1991年首次发布的。Linux 基于 Unix 系统的设计理念,但与其他 Unix 系统不同,Linux 是完全免费和开源的,任何人都可以自由使用、修改和分发其源代码。

  • Linux 作为内核,负责底层任务,如硬件管理、进程调度、内存管理和文件系统操作,但它不是完整的操作系统。

GNU/Linux 的特点:

  1. 开源免费
    GNU/Linux 的源代码是公开的,在 GPL 许可下发布,确保其免费和开放性,任何人都可以查看、修改和分发。这使得 GNU/Linux 成为一个非常灵活的操作系统,用户可以根据需要定制系统。

  2. 高稳定性和可靠性
    GNU/Linux 被广泛应用于服务器和嵌入式设备,因其高稳定性和可靠性而受到青睐。它对硬件资源的要求较低,可以长时间运行而不需要重启。

  3. 多任务和多用户支持
    GNU/Linux 支持多任务处理和多用户环境,多个用户可以同时在同一系统上操作,而不会互相干扰。它能够同时处理多个任务,使其适合运行高负载和复杂的应用程序。

  4. 强大的安全性
    GNU/Linux 提供了强大的安全机制,例如用户权限控制、访问控制列表(ACLs)、SELinux(由 NSA 开发) 和 AppArmor 等安全工具,使得 GNU/Linux 系统在保护数据和防范攻击方面非常出色。

  5. 广泛的硬件支持
    GNU/Linux 支持各种硬件平台,从个人电脑到大型服务器,再到嵌入式设备,甚至手机、平板电脑等设备。通过开源驱动,GNU/Linux 能够支持几乎所有的硬件。

  • 大多数 Linux 发行版 是 GNU/Linux,因为它们结合了 Linux 内核和 GNU 工具链。
  • 特例(如 Alpine Linux、Android)不使用 GNU 工具链,因此不是严格意义上的 GNU/Linux,但仍是 Linux 系统的一种。

不同 Linux 发行版的包管理和命令行区别

不同的 Linux 发行版采用了不同的包管理工具和命令行接口,这直接影响了软件安装、更新和管理的方式。以下是一些常见的发行版及其包管理工具的区别:

1. Debian 系列 (Ubuntu, Linux Mint, etc.)

  • 包管理工具APT (Advanced Package Tool)
  • 命令行工具
    • apt-get:用于安装、升级、删除包。例如:sudo apt-get install <package-name>
    • apt-cache:用于查询包信息。例如:apt-cache search <package-name>
    • dpkg:低级工具,用于直接安装 .deb 包。例如:sudo dpkg -i <package-file>.deb
  • 特点
    • 使用 .deb 格式的软件包。
    • 广泛的社区支持和软件仓库。
    • 软件管理较为简单,适合初学者。

2. Red Hat 系列 (RHEL, CentOS, Fedora,国产操作系统(兼容) etc.)

  • 包管理工具YUM (Yellowdog Updater, Modified) 或 DNF (Dandified YUM, 用于 Fedora)
  • 命令行工具
    • yum:用于安装、更新、删除包。例如:sudo yum install <package-name>
    • dnf:Fedora 使用的更新版 yum,功能相似但更高效。例如:sudo dnf install <package-name>
    • rpm:低级工具,用于直接安装 .rpm 包。例如:sudo rpm -i <package-file>.rpm
  • 特点
    • 使用 .rpm 格式的软件包。
    • 适用于企业级环境,稳定且高效。
    • 通过 dnf 提供更快的软件包管理。 兼容该体系的国产操作系统
    • 龙蜥 Anolis OS(Alibaba)
    • OpenEuler(华为)
    • 麒麟 Kylin Server
    • 银河麒麟服务器版
    • 阿里云 Linux
    • 腾讯的 Tlinux

3. Arch Linux 系列

  • 包管理工具Pacman
  • 命令行工具
    • pacman:用于安装、更新、删除包。例如:sudo pacman -S <package-name>
    • pacman -Q:查询已安装的包。例如:pacman -Q <package-name>
    • yaourtyay:AUR(Arch User Repository)工具,用于安装 AUR 中的软件包。
  • 特点
    • 使用 .pkg.tar.xz 格式的软件包。
    • 精简的包管理,追求最小化和高度定制化。
    • 适合高级用户和希望定制系统的用户。

4. openSUSE

  • 包管理工具zypper
  • 命令行工具
    • zypper:用于安装、更新、删除包。例如:sudo zypper install <package-name>
    • rpm:低级工具,用于直接安装 .rpm 包。例如:sudo rpm -i <package-file>.rpm
  • 特点
    • 使用 .rpm 格式的软件包。
    • 提供强大的系统配置工具 YaST,方便用户进行系统管理。
    • 适用于企业环境及系统管理员。

5. Slackware

  • 包管理工具pkgtool
  • 命令行工具
    • installpkg:用于安装 .tgz 包。例如:sudo installpkg <package-file>.tgz
    • removepkg:用于卸载已安装的包。
    • Slackware 并不依赖于传统的包管理工具,用户常常需要手动管理依赖和包的安装。
  • 特点
    • 极简主义设计,不依赖复杂的包管理系统。
    • 适合高级用户和 Linux 极客,注重手动控制和灵活配置。

6. Gentoo

  • 包管理工具Portage
  • 命令行工具
    • emerge:用于安装、更新、删除包。例如:sudo emerge <package-name>
    • equery:用于查询包的安装状态和信息。
  • 特点
    • 使用源码编译安装软件包,具有极高的定制性。
    • 适合那些愿意花时间编译和优化软件的高级用户。

总结

  • Debian 系列(如 Ubuntu)使用 APT 管理 .deb 包,适合新手。
  • Red Hat 系列(如 RHEL、CentOS)使用 YUM/DNF 管理 .rpm 包,广泛应用于企业环境。
  • Arch Linux 使用 pacman,追求简单和高度定制化,适合高级用户。
  • openSUSE 使用 zypper.rpm 包,适用于企业和系统管理员。
  • Slackware 没有传统的包管理工具,适合需要完全控制系统的高级用户。
  • Gentoo 使用 Portage,依赖源码编译,适合对系统有深入了解的用户。

商业 Linux 操作系统在技术上是 GNU/Linux,因为它们的基础仍然是 GNU 工具链和 Linux 内核。但哲学上,根据自由软件运动的定义,它们可能部分偏离 GNU/Linux 的自由理念。

如果要更严格地区分,可以用“基于 GNU/Linux 的商业操作系统”来描述商业 Linux 操作系统。