# GNU/Linux

LLMS index: [llms.txt](/wikis/llms.txt)

---

<div class="pageinfo pageinfo-primary">

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

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

但确实有些Linux系统不使用GNU工具链：
- Alpine Linux：使用更轻量化的 musl libc 和 BusyBox 代替 GNU 工具链，因此它被称为“Linux 发行版”而非“GNU/Linux”。
- Android，基于 Linux 内核，但不包含 GNU 工具链，而是采用了 Google 自己的工具（如 bionic libc），因此严格来说，它并非 GNU/Linux。

</div>

### 什么是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 能够支持几乎所有的硬件。


<div class="pageinfo pageinfo-primary">

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

</div>


### 不同 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>`。
  - `yaourt` 或 `yay`：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`，依赖源码编译，适合对系统有深入了解的用户。


<div class="pageinfo pageinfo-primary">

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

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

</div>

---

Section pages:

- [](/wikis/linux/audit_report/)
- [🎟️Linux](/wikis/linux/linux/)
