摘要

Debian 作为“通用操作系统基石”,以其稳定性著称;Ubuntu 基于 Debian Sid(不稳定分支)开发,旨在提供“人性化的 Linux”。两者在命令层面上看似同源(均使用 apt 体系),但在底层实现、默认配置、服务管理、网络栈及社区哲学上存在显著差异。本文将深入剖析从包管理到系统运维的全方位命令对比。


第一章:哲学渊源与版本对照

1.1 开发模型的区别

  • Debian(上游稳定派)

    • 严格遵循开源精神(DFSG)。

    • 版本分为:Stable(稳定)、Testing(测试)、Sid(不稳定)。

    • 命令习惯:倾向于原生、脚本化、手动配置。

  • Ubuntu(下游易用派)

    • 基于 Debian Sid 快照,每6个月发布一个版本(LTS 每2年)。

    • 命令习惯:封装复杂逻辑,提供人性化交互(如 do-release-upgrade)。

1.2 命令生态的核心差异点

虽然 Bash 是共同的 Shell,但两边的默认工具链存在分歧:

  • 包管理:Debian 坚守 apt + dpkg 原生;Ubuntu 引入了 apt 的改进版、snap(严格沙箱)以及 universe 仓库的治理差异。

  • 网络配置:Debian 传统使用 ifupdown (/etc/network/interfaces);Ubuntu 从 18.04 起强推 netplan (基于 YAML)。

  • 服务管理:虽然都已迁移到 Systemd,但 Ubuntu 对 systemd 做了定制化(如 systemd-resolved 的处理逻辑不同)。


第二章:包管理命令的“同源异构”

这是两者区别最集中的领域。虽然都有 apt,但行为细节天差地别。

2.1 apt vs apt-get 的演化

  • Debian

    • 保留 apt-get 作为底层脚本的主力。

    • apt 命令在 Debian 中作为“用户友好”封装,但输出相对克制,严格遵循 POSIX 兼容性。

    • 命令示例:

      bash

      # Debian 习惯
      apt-get update && apt-get upgrade -y  # 生产脚本首选
      apt install nginx                     # 交互式使用
  • Ubuntu

    • 大力推广 apt,甚至修改了 apt 的源码,使其拥有进度条(彩色)、自动提示(如提示 apt autoremove)。

    • 默认开启了 APT::Get::AutomaticRemove 在某些版本中的行为差异。

2.2 软件源(Repository)管理的命令差异

操作 Debian 命令/文件 Ubuntu 命令/文件 深度解析
源列表 /etc/apt/sources.list /etc/apt/sources.list + /etc/apt/sources.list.d/ Ubuntu 更倾向于将 PPA 拆分到独立 .list 文件。
添加第三方源 手动编辑文件,或使用 apt-add-repository(需安装 software-properties-common add-apt-repository ppa:user/name Ubuntu 独有的 PPA (Personal Package Archive) 机制,Debian 原生不支持,需改 deb 行。
仓库组件 maincontribnon-free mainuniverserestrictedmultiverse 核心哲学差异:Debian 严格区分自由软件(main)和非自由(non-free);Ubuntu 为了易用性,默认包含受限制驱动(restricted)。

2.3 dpkg 的深层行为

  • 通用:底层安装 .deb 包均使用 dpkg -i

  • 区别

    • 依赖处理:在 Debian 上,dpkg -i 遇到依赖缺失时,必须手动 apt-get -f install。Ubuntu 在图形化层面或新版 apt 中提供了更智能的依赖修复提示。

    • 配置保留:Debian 在升级软件包时,dpkg 极其保守,会频繁弹出交互界面询问是否修改配置文件;Ubuntu 默认倾向于使用维护者的新配置(非交互式安装 DEBIAN_FRONTEND=noninteractive 在 Ubuntu 的 Docker 镜像中更为常见)。

2.4 Snap 与 Flatpak 的分水岭

  • Ubuntu

    • 从 16.04 开始,强推 Snap

    • 命令如 snap install chromium

    • 影响:在 Ubuntu 22.04 及以后,使用 apt install chromium 实际上会调用 snap(伪装)。这是两者命令行为最令人困惑的“陷阱”。

  • Debian

    • 坚持传统 .deb 原生包,默认不包含 Snap。

    • 倾向于 Flatpak(需手动安装)作为补充沙箱方案。


第三章:系统服务与初始化命令

3.1 Systemd 的封装

两者均使用 systemctl,但 Ubuntu 引入了一些特有的封装命令以降低难度。

功能 Debian 原生命令 Ubuntu 特有/推荐命令 解析
服务状态 systemctl status ssh service ssh status service 是 SysVinit 时代的遗留,在 Ubuntu 中依然完美兼容且更短。Debian 中虽然也有,但文档更推荐 systemctl
开机启动 systemctl enable ssh update-rc.d ssh enable Ubuntu 保留了 update-rc.d 作为兼容层,Debian 则逐步淘汰。
日志查看 journalctl -u ssh journalctl -u ssh (通用) Ubuntu 的日志默认存储在 /var/log/journal(持久化),Debian 默认仅存储在内存(易失)除非手动创建目录。

3.2 网络服务管理的核心分歧

Debian 方式:ifupdown

bash

# 重启网络
systemctl restart networking   # 或 /etc/init.d/networking restart
# 配置命令
ifup eth0
ifdown eth0
  • 配置文件/etc/network/interfaces(经典的网状配置)。

Ubuntu 方式:netplan (从 18.04 LTS 起)

bash

# 应用网络配置
netplan apply
# 生成配置
netplan generate
  • 配置文件/etc/netplan/*.yaml

  • 后端:netplan 将 YAML 渲染为两种后端:NetworkManager(桌面版)或 systemd-networkd(服务器版)。

  • 深度解析:在 Debian 上使用 ip addr 命令管理临时地址是通用的,但持久化配置的命令和文件格式完全不同。Ubuntu 用户若直接 SSH 修改 /etc/network/interfaces 会发现重启后被覆盖(因为 netplan 接管)。

3.3 主机名与解析

  • Debian

    • 修改 /etc/hostname + hostnamectl set-hostname

    • DNS 解析:直接编辑 /etc/resolv.conf(虽然会被 resolvconf 服务覆盖)。

  • Ubuntu

    • 引入了 systemd-resolved

    • DNS 命令:resolvectl status

    • 陷阱:直接修改 /etc/resolv.conf 会发现它是一个指向 /run/systemd/resolve/stub-resolv.conf 的软链接,修改无效。必须通过 netplan 或 systemd-resolved 命令配置。


第四章:用户与权限管理

4.1 sudo 的默认策略

  • Debian

    • 安装时若不设置 root 密码,默认禁用 root,但通常 Debian 安装程序会要求设置 root 密码。

    • sudo 默认未安装(最小化安装)。用户若想使用 sudo,需要先 su - 切换到 root,然后 apt install sudo 并手动将用户加入 sudo 组。

  • Ubuntu

    • 默认禁用 root 账户(root 密码随机)。

    • 第一个用户自动拥有完整的 sudo 权限,无需配置。

    • 命令习惯:Ubuntu 用户几乎永远不碰 su -,所有管理操作均前置 sudo

4.2 用户组命令

  • 通用useraddusermodgroupadd

  • 辅助脚本区别

    • Debian:提供 adduser(交互式 Perl 脚本,更友好)作为推荐命令。

    • Ubuntu:同样拥有 adduser,但 Ubuntu 的桌面版集成了 AccountsService,使用 gnome-control-center 修改用户时,命令层会触发 D-Bus 信号,而 Debian 仅操作本地文件。


第五章:防火墙命令 (iptables vs ufw)

5.1 底层均为 Netfilter

两者底层都使用 iptables 或 nftables

5.2 上层管理工具

  • Debian

    • 通常直接使用 iptables 配合 iptables-save 和 iptables-restore

    • 持久化机制:安装 iptables-persistent 包,通过 netfilter-persistent save 命令保存规则。

  • Ubuntu

    • 大力推广 ufw (Uncomplicated Firewall)

    • 命令示例:

      bash

      ufw allow 22/tcp
      ufw enable
    • 深度联系ufw 本质上是 iptables 的前端封装。Ubuntu 的 ufw 在 Debian 上也能安装,但并非默认标配。Ubuntu 的云镜像(AWS/Azure)默认启用了 ufw 作为安全基线。


第六章:系统更新与发行版升级

这是两者用户操作习惯分歧最大的地方。

6.1 安全更新

  • Debian

    • apt update && apt upgrade(仅更新软件包版本,不升级内核?实际上 upgrade 会更新内核,但不会删除旧内核)。

    • 长期稳定:Debian Stable 用户很少做 dist-upgrade,因为容易引入依赖冲突。

  • Ubuntu

    • apt update && apt upgrade

    • 引入了 unattended-upgrades 包,默认启用安全自动更新(尤其是 LTS 服务器版)。

6.2 跨版本升级命令

  • Debian

    • 修改 /etc/apt/sources.list 将版本代号(如 bullseye 改为 bookworm)。

    • 执行 apt update && apt upgrade --without-new-pkgs && apt full-upgrade

    • 特点:极容易出错,通常建议使用 debootstrap 或重装。

  • Ubuntu

    • 提供专用工具:do-release-upgrade

    • 该命令会检查镜像源、处理第三方 PPA 禁用、自动处理 Systemd 服务迁移。

    • 命令细节do-release-upgrade -d 升级到开发版;-c 检查是否有新版本。


第七章:硬件与内核命令

7.1 内核版本策略

  • Debian

    • 内核极其保守(如 Debian 11 使用 5.10 LTS,Debian 12 使用 6.1 LTS)。

    • 命令:uname -r

    • 安装新内核:apt install linux-image-amd64(元包)。

  • Ubuntu

    • HWE (Hardware Enablement) 栈:Ubuntu LTS 版本每6个月推出新版内核。

    • 命令:apt install linux-generic-hwe-22.04

    • 深度解析:Ubuntu 服务器的内核更新频率远高于 Debian Stable。

7.2 固件管理

  • Debian

    • 默认不包含非自由固件(除非下载非官方 non-free 镜像)。

    • 命令 dmesg | grep firmware 查看缺失。

    • 安装固件:apt install firmware-linux-nonfree

  • Ubuntu

    • 默认包含大量专有固件,开箱即用。

    • 命令 ubuntu-drivers devices 查看推荐显卡驱动。

    • 特有命令ubuntu-drivers autoinstall(自动安装 NVIDIA 等闭源驱动)。


第八章:日常运维命令场景对比

场景 1:查找哪个包提供了某个文件

  • Debian/Ubuntu 通用apt-file search /path/to/file (需安装 apt-file)

  • Ubuntu 特有dpkg -S $(which command) 更常用。

  • 区别:Debian 用户更倾向于 apt-file update 建立索引;Ubuntu 的 apt 命令行搜索更快。

场景 2:编译安装软件

  • Debianapt-get build-dep nginx(安装编译依赖)

  • Ubuntuapt build-dep nginx(简洁写法)

  • 源码获取

    • Debian: apt-get source nginx

    • Ubuntu: apt source nginx(需开启 deb-src 源,Ubuntu 默认禁用,需手动启用)

场景 3:查看系统版本

  • Debiancat /etc/debian_version (输出如 11.7)

  • Ubuntulsb_release -a (输出详细代号,如 Jammy),或 cat /etc/os-release

场景 4:清理空间

  • Debian

    • apt-get clean (清理 /var/cache/apt/archives)

    • apt-get autoremove

  • Ubuntu

    • apt autoremove 更积极。

    • apt autoclean

    • 额外命令:Ubuntu 桌面版有 ubuntu-cleaner 工具(非官方),服务器版常用 snap list 清理 snap 旧版本。


第九章:容器与虚拟化命令

9.1 Docker 与 LXC

  • 通用:安装 docker.io 或 docker-ce 命令一致。

  • 区别

    • Debian:默认使用 cgroups v1(在 Debian 11 及以前),兼容性较好。

    • Ubuntu:从 22.04 开始默认启用 cgroups v2,可能导致某些旧版 Docker 脚本需要调整参数。

    • 命令systemd-cgls 查看控制组树,两者输出结构不同。

9.2 LXD (Ubuntu 的优势领域)

  • Ubuntu:Canonical 开发了 LXD(容器虚拟化)。

    • 命令:lxc listlxc launch ubuntu:22.04 my-container

  • Debian:虽然可以安装 LXD,但不是生态核心。Debian 更倾向于原生 LXC 或直接使用 KVM (libvirt)。


第十章:故障排查与急救命令

10.1 救援模式与 Live CD

  • Debian

    • Grub 菜单进入恢复模式(Recovery Mode)时,默认进入 只读 root shell

    • 必须执行 mount -o remount,rw / 才能修复系统。

  • Ubuntu

    • 恢复模式提供更友好的菜单(dpkg 修复、root 提示)。

    • 命令:fsck 在 Ubuntu 的 initramfs 中更自动。

10.2 日志分析

  • 通用journalctl

  • Debian/var/log/syslog 依然存在,且包含丰富信息。

  • Ubuntu/var/log/syslog 同样存在,但 Ubuntu 桌面版大量日志被转发到 journald。使用 gnome-logs GUI 工具是 Ubuntu 特有的。


第十一章:总结——命令选择的智慧

11.1 什么时候该用 Debian 的命令习惯?

  • 服务器生产环境:追求极简、稳定。避免使用 ufwnetplan 等封装,直接操作 iptables 和 /etc/network/interfaces 配合配置管理工具(Ansible)。

  • 嵌入式/容器:Debian 的镜像更小,命令更原生,没有 snapd 这类后台进程消耗资源。

11.2 什么时候该用 Ubuntu 的命令习惯?

  • 开发环境:利用 add-apt-repository 快速获取最新软件。

  • 机器学习/GPU 环境:利用 ubuntu-drivers 自动解决闭源驱动问题,无需手动编译。

  • 云原生:Ubuntu 的 cloud-init 更成熟,do-release-upgrade 适合自动化升级。

11.3 通用法则

尽管存在上述区别,但以下核心命令在脚本中保持高度兼容(只要避免使用 PPA 和 snap):

  1. apt update && apt upgrade -y (在 Debian 和 Ubuntu 上均能正确工作)

  2. systemctl 系列命令

  3. grepawksed 等文本处理命令


附录:速查对照表

功能分类 Debian 命令/文件 Ubuntu 命令/文件 备注
包更新 apt-get update apt update Ubuntu 推荐 apt,Debian 脚本常用 apt-get
安装软件 apt-get install <pkg> apt install <pkg> 命令相同,但 Ubuntu 可能悄悄安装 Snap
搜索软件 apt-cache search <keyword> apt search <keyword> 格式差异
网络配置 /etc/network/interfaces
ifup/ifdown
/etc/netplan/*.yaml
netplan apply
这是最具破坏性的差异
防火墙 iptables + iptables-save ufw 底层相同,前端不同
DNS 解析 /etc/resolv.conf (直接编辑) systemd-resolve --flush-caches Ubuntu 需要处理 stub resolver
发行版升级 修改 sources.list + apt dist-upgrade do-release-upgrade Ubuntu 自动化程度高
内核更新 apt install linux-image-amd64 apt install linux-generic-hwe-22.04 HWE 是 Ubuntu 特色
添加软件源 手动编辑 sources.list add-apt-repository ppa:xxx Debian 不支持 PPA
清理无用包 apt-get autoremove apt autoremove Ubuntu 默认建议自动删除旧内核

结语

Debian 与 Ubuntu 如同“C 语言”与“Python”的关系。Debian 命令更接近上游、更显式、更稳定,适合构建不可变的基础设施;Ubuntu 命令更注重开发者体验、封装细节、开箱即用。对于系统管理员而言,理解这两者的区别,本质上是在理解 “稳定优先” 与 “易用优先” 两种哲学在命令行层面的最终体现。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐