其他主流发行版运维指令手册(Debian / openSUSE·SLES / Alpine)

运维指令手册 22.1 KB 原文

其他主流发行版运维指令手册(Debian / openSUSE·SLES / Alpine)

定位:与《Ubuntu 常用运维指令手册》《CentOS 7-10 常规运维指令手册》互补,覆盖三者未涉及的主流发行版。 组织方式:按系统独立成篇,每篇内部结构统一(识别 → 包管理 → 服务 → 网络 → 防火墙与安全 → 日志 → 特有工具 → 避坑)。 原因:这三个系统的初始化体系与包管理器完全不同(Alpine 连 systemd 都没有),横向逐章对比反而难读。 约定:$ 普通用户,# root 或 sudo,<xxx> 占位符。


目录


第 0 章 血统识别与选型

Linux 发行版虽多,运维只需认四条技术线:

技术线 包格式 包管理器 初始化 代表系统
Debian 系 .deb apt / dpkg systemd Debian、Ubuntu、统信 UOS、Deepin、麒麟桌面版
RHEL 系 .rpm yum / dnf systemd CentOS、Rocky、Alma、openEuler、Anolis、TencentOS、麒麟服务器版
SUSE 系 .rpm zypper systemd openSUSE、SLES
Alpine 系 .apk apk OpenRC Alpine、部分容器基础镜像

这个判断决定了 90% 的运维命令。 上手一台陌生 Linux,第一件事就是:

cat /etc/os-release                 # 立刻看 ID 与 ID_LIKE
which apt dnf yum zypper apk 2>/dev/null
which systemctl rc-service 2>/dev/null

ID_LIKE 字段最有用:

ID_LIKE 说明 该用哪套命令
debian Debian 或衍生 apt 篇
rhel fedora / centos RHEL 或衍生(含多数国产服务器系统) CentOS 手册
suse SUSE 或衍生 zypper 篇
(无 / alpine) Alpine apk 篇

国产系统的关键认知:绝大多数国产服务器操作系统(麒麟 V10 服务器版、openEuler、Anolis、TencentOS、红旗)本质是 RHEL 系,直接套用 CentOS 手册即可;桌面版(UOS、Deepin、麒麟桌面)是 Debian 系,套用 Ubuntu 手册。厂商特有命令只占很小部分。详见《国产操作系统运维指令手册》。


第一篇 Debian 12 / 13

Debian 是 Ubuntu 的上游,命令高度一致,但默认策略差异明显,照搬 Ubuntu 文档会踩坑。

1.1 版本与识别

cat /etc/os-release                # VERSION_ID="12" 或 "13"
cat /etc/debian_version            # 12.5 / 13.0
uname -r                           # 12 → 6.1.x,13 → 6.12.x
dpkg --print-architecture          # amd64 / arm64

1.2 与 Ubuntu 的七个关键差异

项目 Debian Ubuntu
默认提权 无 sudo(安装时设了 root 密码则不装 sudo) 有 sudo,root 默认锁定
提权组 sudo(需自行创建) sudo
网络管理 ifupdown(/etc/network/interfaces) netplan
防火墙 无默认前端,裸 nftables ufw
安全模块 AppArmor AppArmor
仓库组件 main contrib non-free non-free-firmware main restricted universe multiverse
升级策略 更保守,稳定版只修 bug 与安全 相对激进

1.3 包管理(apt / dpkg)

sudo apt update
sudo apt upgrade                     # 不删包
sudo apt full-upgrade                # 允许为解决依赖增删包(Debian 常用)
sudo apt install <pkg>
sudo apt install --no-install-recommends <pkg>   # Debian 推荐:不装推荐包,更精简
sudo apt remove <pkg>
sudo apt purge <pkg>
sudo apt autoremove --purge
sudo apt clean

apt list --installed | grep <pkg>
apt list --upgradable
apt-cache policy <pkg>
apt-cache show <pkg>
apt-cache search <kw>

sudo apt --reinstall install <pkg>
sudo apt-mark hold <pkg>             # 锁定版本
apt-mark showhold
sudo apt --fix-broken install
sudo dpkg --configure -a

dpkg 底层

sudo dpkg -i ./pkg.deb
sudo dpkg -i --force-depends ./pkg.deb     # ⚠️ 强装,依赖会断
dpkg -l | grep <pkg>
dpkg -L <pkg>                        # 包内文件
dpkg -S /usr/bin/foo                 # 反查文件属主包
dpkg -s <pkg>                        # 包状态
dpkg -V                              # 校验已装文件是否被篡改
sudo dpkg -r <pkg>

多架构

dpkg --print-foreign-architectures
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install <pkg>:i386

1.4 软件源

/etc/apt/sources.list(Debian 12 起也支持 deb822 格式 .sources):

deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

deb822 等价形式 /etc/apt/sources.list.d/debian.sources:

Types: deb
URIs: http://deb.debian.org/debian
Suites: bookworm bookworm-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
# 国内镜像
sudo sed -i 's|deb.debian.org|mirrors.aliyun.com|g; s|security.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list
sudo apt update

# backports(需要新版本软件时)
echo 'deb http://deb.debian.org/debian bookworm-backports main' | sudo tee /etc/apt/sources.list.d/backports.list
sudo apt update
sudo apt -t bookworm-backports install <pkg>

# 第三方 GPG
curl -fsSL https://example.com/key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/example.gpg

non-free-firmware 是 Debian 12 新增的独立组件。11 之前固件在 non-free 里,12 起必须显式加 non-free-firmware,否则无线网卡、部分阵列卡驱动装不上。

1.5 服务管理

与 Ubuntu 完全一致(systemd):

systemctl status|start|stop|restart|reload|enable|disable <svc>
systemctl list-units --failed
systemctl list-timers --all
systemd-analyze blame
sudo systemctl daemon-reload
sudo systemctl edit <svc>
journalctl -u <svc> -f

Debian 特有:needrestart

sudo apt install needrestart
sudo needrestart -b            # 列出升级后需要重启的服务

needrestart 在 Debian 12 中常已预装,apt upgrade 后自动提示哪些服务仍在用旧库。生产批量升级后用它确认,比盲目重启整机安全。

1.6 网络

方式 A:ifupdown(服务器默认)

/etc/network/interfaces:

auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
    address 192.168.1.10/24
    gateway 192.168.1.1
    dns-nameservers 223.5.5.5 8.8.8.8
sudo systemctl restart networking
sudo ifdown ens18 && sudo ifup ens18
ip a; ip r

方式 B:NetworkManager(桌面或自选)

nmcli device status
sudo nmcli con mod "Wired connection 1" ipv4.method manual \
  ipv4.addresses 192.168.1.10/24 ipv4.gateway 192.168.1.1 ipv4.dns 223.5.5.5
sudo nmcli con up "Wired connection 1"

Debian 服务器默认用 ifupdown,与 Ubuntu 的 netplan 完全不同。别在 Debian 上找 /etc/netplan/,找不到的。

1.7 防火墙与安全

Debian 不预装 ufw、不预装 firewalld,默认就是裸 nftables。

# 裸 nftables(Debian 默认路径)
sudo nft list ruleset
sudo nft add table inet filter
sudo nft add chain inet filter input '{ type filter hook input priority 0; }'
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input tcp dport 22 accept
sudo nft add rule inet filter input drop
sudo nft list ruleset > /etc/nftables.conf     # 持久化
sudo systemctl enable --now nftables

# 想用熟悉的 ufw 就自己装
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable

iptables 在 Debian 10+ 是 nftables 的兼容前端,iptables-save 结果会被 nft list ruleset 覆盖显示。新部署直接用 nft。

AppArmor

sudo aa-status
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx
sudo journalctl -k | grep -i apparmor

1.8 日志

journalctl -xe
journalctl -u <svc> -f
tail -F /var/log/syslog            # Debian 默认有 syslog
tail -F /var/log/auth.log
tail -F /var/log/dpkg.log
zgrep -i error /var/log/syslog.1.gz
journalctl --disk-usage
sudo journalctl --vacuum-time=14d

1.9 Debian 特有工具

# debconf:非交互预配置(批量部署必用)
echo "locales locales/default_environment_locale select zh_CN.UTF-8" | sudo debconf-set-selections
sudo dpkg-reconfigure -f noninteractive tzdata
sudo dpkg-reconfigure locales

# update-alternatives:多版本共存切换
sudo update-alternatives --config java
sudo update-alternatives --display python3

# tasksel:按任务组装软件
sudo tasksel

# apt 详细日志与历史
grep -i install /var/log/apt/history.log

1.10 Debian 避坑

  1. 没装 sudo:su - 切 root 后 apt install sudo usermod -aG sudo <user>,否则一直卡在权限上。
  2. non-free-firmware 漏配:12 起固件在独立组件,漏了就是"网卡/显卡驱动装不上"。
  3. 别找 netplan:Debian 用 /etc/network/interfaces。
  4. apt upgrade 与 full-upgrade 不同:需要升级内核或解决依赖冲突时必须用 full-upgrade,upgrade 会 hold 住。
  5. 默认无防火墙:Debian 装完是"全开放"状态,上线前必须自己配 nftables 或装 ufw。

第二篇 openSUSE Leap / SLES 15

SUSE 系在国内金融、制造、SAP 环境常见。运维核心是 zypper + YaST + snapper 三件套,与 RHEL/Debian 都有明显区别。

2.1 版本与识别

cat /etc/os-release                # ID="opensuse-leap" / "sles"
cat /etc/SuSE-release 2>/dev/null  # 旧版
zypper --version
uname -r
产品 说明
openSUSE Leap 15.6 社区稳定版,与 SLES 15 SP6 同源,免费
openSUSE Tumbleweed 滚动更新,必须用 zypper dup
SLES 15 SPx 企业版,需订阅与注册
Leap Micro / SLE Micro 不可变系统,用 transactional-update

2.2 包管理(zypper)

sudo zypper refresh                  # 简称 ref,刷新元数据
sudo zypper update                   # 简称 up,常规更新
sudo zypper dup                      # 发行版升级 / Tumbleweed 日常更新(关键)
sudo zypper patch                    # 只打安全补丁

sudo zypper install <pkg>            # 简称 in
sudo zypper install -y <pkg>
sudo zypper install --no-recommends <pkg>
sudo zypper remove <pkg>             # 简称 rm,可加 --clean-deps
sudo zypper search <kw>              # 简称 se
sudo zypper search --installed-only <kw>
sudo zypper info <pkg>               # 简称 if
sudo zypper what-provides /usr/bin/foo

仓库管理

zypper repos                        # 简称 lr,列出仓库
sudo zypper addrepo <url> <alias>   # 简称 ar
sudo zypper removerepo <alias>      # 简称 rr
sudo zypper modifyrepo --enable <alias>
sudo zypper modifyrepo --disable <alias>
sudo zypper refresh --force
sudo zypper clean --all

# 用本地 ISO 做源
sudo zypper ar -f /mnt/iso openSUSE-Leap-15.6

包锁定与依赖修复

sudo zypper addlock <pkg>           # 锁定版本
sudo zypper removelock <pkg>
zypper locks

sudo zypper verify                  # 检查依赖完整性
sudo zypper install --force <pkg>   # 强制重装
sudo zypper dup --from <repo>       # 只从某仓库升级

SUSE 特色:zypper ps

sudo zypper ps -s

升级后列出"仍在用已删除旧库的进程",并给出建议的重启方式。这个功能 RHEL/Debian 没有(Debian 靠 needrestart),是 SUSE 运维的日常必用命令。

内核清理

sudo zypper purge-kernels           # 按策略删除旧内核
rpm -qa | grep '^kernel-default' | sort

2.3 服务管理

systemd,与 RHEL 一致:

systemctl status|start|stop|restart|reload|enable|disable <svc>
systemctl list-units --failed
systemd-analyze blame
sudo systemctl daemon-reload
sudo systemctl edit <svc>
journalctl -u <svc> -f

SUSE 传统:/etc/sysconfig/

ls /etc/sysconfig/
# 大量服务仍读 /etc/sysconfig/<service> 里的变量

2.4 YaST(SUSE 的核心差异化能力)

YaST 是 SUSE 的系统管理框架,文本界面在无 GUI 服务器上非常好用:

sudo yast                          # 全屏文本界面(方向键操作)
sudo yast lan                      # 网络配置
sudo yast firewall                 # 防火墙
sudo yast users                    # 用户管理
sudo yast services-manager         # 服务管理
sudo yast sw_single                # 软件管理
sudo yast2 --list                  # 列出所有模块

YaST 改了配置会同步写底层文件,比手改更不容易出错;但手改文件后要用 YaST 复核,否则 YaST 下次打开可能覆盖你的改动。

2.5 网络

方式 A:Wicked(Leap/SLES 服务器默认)

配置文件在 /etc/sysconfig/network/ifcfg-<iface>:

BOOTPROTO='static'
IPADDR='192.168.1.10/24'
GATEWAY='192.168.1.1'
STARTMODE='auto'
sudo wicked show all
sudo wicked ifup ens18
sudo wicked ifdown ens18
sudo systemctl restart wicked

方式 B:NetworkManager

sudo systemctl enable --now NetworkManager
nmcli device status
sudo nmcli con mod <name> ipv4.method manual ipv4.addresses 192.168.1.10/24
sudo nmcli con up <name>

方式 C:YaST(推荐,会同时处理路由与 DNS)

sudo yast lan

2.6 防火墙

sudo systemctl status firewalld
sudo firewall-cmd --state
sudo firewall-cmd --list-all
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

与 CentOS 的 firewalld 用法完全一致,参见《CentOS 手册》第 10 章。

版本差异:Leap 15 之前用 SuSEfirewall2(/etc/sysconfig/SuSEfirewall2),15 起改为 firewalld。老环境看到 SuSEfirewall2 说明是 42.x 时代,命令完全不同(yast firewall 或直接改 sysconfig)。

2.7 安全模块

openSUSE / SLES 默认 AppArmor(不是 SELinux):

sudo aa-status
sudo systemctl status apparmor
sudo yast apparmor
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx
journalctl -k | grep -i apparmor

SLES 15 SP4 起可选启用 SELinux,但默认仍是 AppArmor。运维前先确认:getenforce 有输出说明是 SELinux,否则是 AppArmor。

2.8 snapper 与 btrfs 快照(SUSE 招牌)

openSUSE 默认根分区为 btrfs,配合 snapper 自动快照,升级出问题可秒回滚。

sudo snapper list                          # 列出快照
sudo snapper -c root list
snapper list-configs
sudo snapper create -d "before upgrade"
sudo snapper -c root create --description "before upgrade" --cleanup-algorithm number

# 对比快照差异
sudo snapper -c root status 100..0

# 撤销单个文件
sudo snapper -c root undochange 100..0 /etc/nginx/nginx.conf

# 回滚到某快照(需重启)
sudo snapper -c root rollback 100
sudo reboot

配置在 /etc/snapper/configs/root,关键项:TIMELINE_CREATE、TIMELINE_CLEANUP、NUMBER_LIMIT。

这是 SUSE 相对 RHEL 的最大优势:zypper dup 前会自动建快照,出问题 grub 里直接选旧快照启动。但 btrfs 空间管理需要注意:btrfs filesystem usage /,快照会占用空间。

2.9 日志

journalctl -xe
journalctl -u <svc> -f
tail -F /var/log/messages
tail -F /var/log/secure             # 认证
ls /var/log/YaST2/                  # YaST 操作日志(排 YaST 问题必看)
tail -F /var/log/zypper.log         # 包管理日志

2.10 SLES 注册与不可变系统

# SLES 需注册才能获取更新
sudo SUSEConnect -r <registration-code>
sudo SUSEConnect -s                 # 查看状态
sudo SUSEConnect --de-register
sudo SUSEConnect --list-extensions

# SLE Micro / Leap Micro(不可变根文件系统)
sudo transactional-update dup
sudo transactional-update pkg install <pkg>
sudo transactional-update shell     # 临时可写环境
sudo reboot                         # 变更需重启生效

2.11 SUSE 避坑

  1. Tumbleweed 必须 zypper dup,用 zypper up 会导致系统半升级、依赖错乱。
  2. zypper 默认会装 recommends,精简部署加 --no-recommends。
  3. btrfs 快照吃掉空间:btrfs filesystem usage / 看到 Unallocated 很小要清理快照。
  4. YaST 与手改文件互相覆盖:定一套流程,别混用。
  5. 服务器默认 wicked 不是 NetworkManager,nmcli 可能不可用。
  6. AppArmor 不是 SELinux,别照搬 semanage。

第三篇 Alpine Linux

Alpine 以 5MB 镜像和安全性著称,是容器基础镜像的主流选择,也用于路由器、边缘设备。它与前三者最大的不同:没有 systemd,用 OpenRC;不用 glibc,用 musl。

3.1 版本与识别

cat /etc/os-release                # ID=alpine,VERSION_ID=3.20
cat /etc/alpine-release
uname -r                           # 常见 6.6.x(lts)
apk --version
ldd --version                      # 显示 musl libc
echo $SHELL                        # /bin/ash(不是 bash)

3.2 与常规发行版的五个根本差异

项目 Alpine 常规发行版
init 系统 OpenRC systemd
C 库 musl glibc
基础工具 BusyBox(精简版) GNU coreutils
默认 shell ash bash
提权 默认 root,doas 可选 sudo

这意味着:systemctl 不存在;glibc 编译的二进制直接跑不了;sed -i、grep -P、ps aux 等参数可能缺失。

3.3 包管理(apk)

apk update                         # 刷新索引
apk upgrade                        # 升级全部
apk add <pkg>
apk add --no-cache <pkg>           # 不写本地索引缓存(容器镜像必用)
apk add --virtual .build-deps gcc musl-dev make    # 临时依赖组
apk del .build-deps                # 用完即删
apk del <pkg>
apk search <kw>
apk info <pkg>
apk info -L <pkg>                  # 包内文件
apk info -a <pkg>                  # 详细信息 + 依赖
apk policy <pkg>                   # 可用版本与仓库来源
apk version -l '<'                 # 列出可升级的包
apk fix                            # 修复损坏的包
apk audit                          # 检查被修改的系统文件

仓库 /etc/apk/repositories:

https://mirrors.aliyun.com/alpine/v3.20/main
https://mirrors.aliyun.com/alpine/v3.20/community
# edge / testing 源(谨慎,等同滚动)
# https://mirrors.aliyun.com/alpine/edge/testing

apk update

离线与本地包

apk fetch <pkg>                    # 只下载不安装
apk fetch --recursive <pkg>        # 含依赖
apk add --allow-untrusted ./pkg.apk

3.4 OpenRC 服务管理(替代 systemctl)

rc-service nginx start
rc-service nginx stop
rc-service nginx restart
rc-service nginx status
rc-status                          # 所有服务状态
rc-status --all

rc-update add nginx default        # 开机自启(加入 runlevel)
rc-update del nginx default
rc-update show                     # 当前 runlevel 的服务

ls /etc/init.d/                    # 服务脚本目录

与 systemd 的对应关系

需求 systemd OpenRC
启动服务 systemctl start x rc-service x start
开机自启 systemctl enable x rc-update add x default
查看状态 systemctl status x rc-service x status
列出全部 systemctl list-units rc-status --all
失败服务 systemctl --failed rc-status --crashed
重载配置 systemctl reload x rc-service x reload
日志 journalctl -u x /var/log/messages 或应用自身日志

编写自定义服务 /etc/init.d/myapp:

#!/sbin/openrc-run

name="myapp"
description="My Application"
command="/opt/myapp/bin/server"
command_user="app:app"
command_background=true
pidfile="/run/${RC_SVCNAME}.pid"
output_log="/var/log/myapp.log"
error_log="/var/log/myapp.err"

depend() {
    need net
    after firewall
}
sudo chmod +x /etc/init.d/myapp
sudo rc-service myapp start
sudo rc-update add myapp default

3.5 网络

/etc/network/interfaces:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    gateway 192.168.1.1
rc-service networking restart
# 或
ifup eth0
ifdown eth0
ip a; ip r

DNS:直接写 /etc/resolv.conf,或用 setup-alpine 配置。

3.6 防火墙

Alpine 有 awall( Alpine Wall,声明式防火墙):

apk add awall
cat > /etc/awall/optional/base.json <<'EOF'
{
  "filter": [
    { "in": "INPUT",  "action": "accept", "service": "ssh" },
    { "in": "INPUT",  "action": "drop",   "conn-state": "new" },
    { "out": "OUTPUT", "action": "accept" }
  ]
}
EOF
awall enable base
awall activate
awall list

或直接用 nftables / iptables(Alpine 默认带 iptables):

apk add nftables
rc-update add nftables default
rc-service nftables start
nft list ruleset

3.7 日志

Alpine 默认没有 syslog 服务,日志主要靠:

dmesg                              # 内核日志
# 装 syslog 才有文件日志
apk add busybox-extras rsyslog
rc-update add rsyslog default
rc-service rsyslog start
tail -F /var/log/messages

容器里的 Alpine 通常不跑 syslog,应用日志直接输出到 stdout(docker logs 看),这是云原生场景的正确做法。

3.8 Alpine 特有工具

# 系统初始化向导(磁盘安装必用)
setup-alpine

# 本地备份(磁盘安装版特色:把改动打包,可还原)
lbu status
lbu commit -d                     # 提交当前改动
lbu list-backup
lbu revert <file>

# 时区(默认 UTC,需装 tzdata)
apk add tzdata
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone

# 用 doas 替代 sudo
apk add doas
# /etc/doas.conf: permit persist :wheel

3.9 Alpine 避坑

  1. systemctl 不存在,所有网上教程的 systemd 命令全部失效。
  2. glibc 二进制跑不了:报 not found 但文件明明存在,就是 musl 不兼容。解法:用 apk 装 Alpine 版,或装 gcompat 兼容层,或在容器里用 glibc 基础镜像。
  3. BusyBox 参数精简:ps aux 可能不识别、sed -i 无备份后缀、grep -P 不可用。需要完整版装 coreutils、findutils、grep。
  4. --no-cache 是容器纪律:写 Dockerfile 必须用 apk add --no-cache,否则镜像里留一堆索引。
  5. 无 bash:#!/bin/bash 脚本会失败,改 #!/bin/sh 或装 apk add bash。
  6. 时间默认 UTC:容器里时间不对先装 tzdata。

第四篇 RHEL 生态补充(Rocky / Alma)

Rocky Linux 与 AlmaLinux 是 CentOS Linux 停更后的 RHEL 1:1 重建版本,命令与 CentOS 8/9 完全一致,直接使用《CentOS 7-10 常规运维指令手册》。

4.1 识别

cat /etc/os-release
# ID="rocky" / ID="almalinux",ID_LIKE="rhel centos fedora"
cat /etc/rocky-release
cat /etc/almalinux-release

4.2 与 CentOS 的差异(都属配置层面,命令不变)

项目 说明
仓库地址 各自官方镜像,mirrors.rockylinux.org / mirrors.almalinux.org
版本号 Rocky 8/9/10、Alma 8/9/10,与 RHEL 小版本对齐
迁移工具 migrate2rocky(CentOS/Alma → Rocky)、almalinux-deploy(CentOS → Alma)
EPEL 完全兼容,dnf install epel-release 可用
SELinux 同 RHEL,默认 enforcing

4.3 从 CentOS 迁移

# CentOS 8 → Rocky 8
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
sudo bash migrate2rocky.sh -r

# CentOS 7/8 → AlmaLinux
curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh
sudo bash almalinux-deploy.sh

迁移前务必:全量快照 + rpm -qa > pkgs.txt 留档 + 确认第三方源与自编译软件的兼容性。


附录 四系速查对照表

A.1 包管理

操作 Debian RHEL 系 SUSE Alpine
刷新索引 apt update dnf makecache zypper ref apk update
安装 apt install dnf install zypper in apk add
卸载 apt remove dnf remove zypper rm apk del
彻底卸载 apt purge — zypper rm --clean-deps apk del
全量升级 apt full-upgrade dnf upgrade zypper dup apk upgrade
搜索 apt search dnf search zypper se apk search
详情 apt-cache show dnf info zypper if apk info -a
反查命令属主包 dpkg -S dnf provides zypper what-provides apk info -L
列出包内文件 dpkg -L dnf repoquery -l rpm -ql apk info -L
清理缓存 apt clean dnf clean all zypper clean -a apk cache clean
锁版本 apt-mark hold dnf versionlock zypper addlock apk add pkg=ver
本地包安装 dpkg -i rpm -ivh / dnf install ./x.rpm zypper in ./x.rpm apk add ./x.apk
依赖修复 apt --fix-broken install dnf check zypper verify apk fix
包格式 .deb .rpm .rpm .apk

A.2 服务与系统

操作 systemd 系(Debian/RHEL/SUSE) Alpine(OpenRC)
启动 systemctl start x rc-service x start
开机自启 systemctl enable x rc-update add x default
状态 systemctl status x rc-service x status
全部状态 systemctl list-units rc-status --all
看日志 journalctl -u x -f tail -F /var/log/messages
服务定义 /etc/systemd/system/x.service /etc/init.d/x

A.3 网络

系统 网络管理 配置文件 重载命令
Ubuntu netplan /etc/netplan/*.yaml netplan apply
Debian ifupdown /etc/network/interfaces systemctl restart networking
CentOS 7 network-scripts /etc/sysconfig/network-scripts/ifcfg-* systemctl restart network
CentOS 8+ NetworkManager /etc/NetworkManager/system-connections/*.nmconnection nmcli con up
SUSE wicked /etc/sysconfig/network/ifcfg-* wicked ifup
Alpine ifupdown-ng /etc/network/interfaces rc-service networking restart

A.4 防火墙与安全模块

系统 防火墙 安全模块
Ubuntu ufw AppArmor
Debian 裸 nftables(无前端) AppArmor
CentOS / RHEL 系 firewalld(7 为 iptables 后端,8+ nftables) SELinux
SUSE firewalld(15+) AppArmor
Alpine awall / nftables 无

A.5 日志路径

系统 系统日志 认证日志 包管理日志
Ubuntu / Debian /var/log/syslog /var/log/auth.log /var/log/dpkg.log
RHEL 系 /var/log/messages /var/log/secure /var/log/dnf.log(7 为 yum.log)
SUSE /var/log/messages /var/log/secure /var/log/zypper.log
Alpine 默认无,需装 rsyslog /var/log/messages 无

A.6 一句话记忆

  • Debian:像 Ubuntu,但没有 netplan、没有 sudo、没有 ufw。
  • SUSE:像 RHEL,但用 zypper、有 YaST、默认 btrfs + 快照、安全模块是 AppArmor。
  • Alpine:什么都不一样,先记住"没有 systemd、没有 glibc、没有 bash"。
  • Rocky/Alma:就是 CentOS,直接用 CentOS 手册。

配套文档:《Ubuntu 常用运维指令手册》《CentOS 7-10 常规运维指令手册》《国产操作系统运维指令手册》。