
我给别人的机器装 Debian 这件事做得最多的一次是一个下午连装三台。三台机器用途完全不同一台当家里的小服务器跑 Docker一台给做算法的同事跑训练脚本还有一台是老笔记本纯粹想让它再顶两年。有意思的是三台机器出问题的环节没有一次是安装本身全都出在装完之后的基本使用配置上——网卡没起来、中文输入法不自动启动、apt 源慢得像拨号、虚拟机里图形界面一片黑。所以这篇东西我不打算只讲怎么点下一步而是把 Debian 安装和基本使用连起来讲从选镜像、分区开始一直到网络、远程登录、常用软件栈全部配顺让这台机器真正能干活。刚上手的人可以照着走装过几次但总觉得配置零散的人也能在这里把那些顺手就改了但说不清为什么的地方补上。1. 动手之前先把版本和镜像定下来1.1 stable、testing、sid 三条路为什么我默认只推 stableDebian 的发行方式跟大多数发行版不一样它同时存在三条并行的线很多人第一次接触时会被绕晕。简单说stable是当前正式发布的版本软件版本偏保守testing是下一个 stable 的候选池sidunstable是滚动更新的开发分支。这三条线不是新老关系而是稳定性换新鲜度的取舍。我给生产机器、家里的服务器、以及任何我不想每周花时间修系统的场景一律装 stable。原因很实际stable 的软件包在发布前经历了长时间的冻结和测试apt 升级时几乎不会出现依赖断裂而 testing 和 sid 虽然能拿到新版内核、新版编译器但偶尔会出现包被临时移出仓库所谓 RC bug 被踢、升级卡在半路的情况。你要是在 testing 上装了一堆第三方源某次apt upgrade之后进不去图形界面排查成本会远高于你省下的那点版本差异。提示如果确实需要某个新版本软件优先考虑 backports 仓库、官方容器镜像或者自己编译到/usr/local而不是把整台机器切到 testing。以 Debian 12bookworm为例后续的 13trixie在安装流程上基本一致只是默认改用新的源文件格式并且组件里多了non-free-firmware。这个变化很关键下文还会专门讲。1.2 netinst、完整 DVD、live 镜像到底该拿哪个官网上列了一堆 ISO新手最容易在这里浪费时间。我按实际用途给你分一下镜像类型体积量级适合场景我的建议netinst几百 MB有稳定外网、想装最新包首选安装时联网拉取完整 DVD数 GB网络差、要批量装多台只在无网环境用live 安装器13 GB想先试用桌面再决定想尝鲜可以用正常装机不必要云镜像几百 MB虚拟机、云主机配 cloud-init 时很好用选 netinst 最大的理由是装的时候拿到的就是当前仓库里最新的包省掉装完立刻要滚几百个更新的麻烦。代价是安装过程必须联网而且安装器会从你选的镜像站下载所以镜像站选得好不好直接决定这半小时是舒服还是煎熬。1.3 写盘和固件里两个必须改的开关写盘这一步现在没什么技术含量Windows 下用 Rufus 选 DD 模式写入Linux 下直接dd就行# 确认目标设备名千万别写错 lsblk sudo dd ifdebian-12.x-amd64-netinst.iso of/dev/sdX bs4M statusprogress oflagsyncof后面一定是整块设备如/dev/sdb不是分区/dev/sdb1。写错了把自己硬盘覆盖掉的案例我见过不止一次lsblk一定要先看。插入 U 盘进固件设置有两处必须动一是关闭 Secure Boot二是把启动模式统一。统一的意思是如果你打算装 UEFI 系统那 U 盘和硬盘都按 UEFI 走如果你打算装传统 BIOS 系统就都按 Legacy 走。最容易出问题的组合是硬盘上已经有 UEFI 的 Windows你又用 Legacy 模式启动了 Debian 安装盘最后的结果是装完 Debian 之后 Windows 从引导菜单里消失了。注意如果机器上已经有系统装之前先确认它是 UEFI 还是 Legacy 启动的。Windows 下按 WinR 输入 msinfo32看BIOS 模式那一行写的是 UEFI 就跟着走 UEFI。2. 安装器里真正需要动脑子的三个界面2.1 分区新手最稳妥的一套方案安装器的分区界面给了四种模式全盘自动、全盘单分区、手动、加密 LVM。我的默认选择是手动分区因为它能顺便把后面要用的 swap 和独立/home一次安排好省得装完再折腾。一块 512 GB 的盘我一般这么切/boot/efi512 MB类型 EFI 系统分区UEFI 机器必须有/6080 GBext4swap内存小于 16 GB 时给内存的 12 倍内存大于 32 GB 时给 8 GB 意思一下或者干脆用 swapfile/home剩下的全部ext4单独分/home的好处等你要重装系统或者换发行版的时候就明白了——用户数据、配置文件、下载目录全都原地不动只要装的时候不勾选格式化重装完就跟你没换过系统一样。这个习惯我从第二次重装 Debian 之后就固定下来了属于典型的前期多花两分钟后期省一整天。swap到底要不要留是个老生常谈的问题。我的判断标准是看这台机器会不会跑内存占用不可控的程序。跑容器、编译大型项目、开一堆浏览器标签页那就老老实实给 swap纯当跳板机或者轻量服务swapfile 也够用。具体怎么做在 3.4 节讲。2.2 tasksel 那张勾选表怎么填安装器后面会弹出一个软件选择界面用空格勾选。这里的取舍原则很简单只勾你确定要的其余装完用 apt 补。桌面环境GNOME 资源占用大但开箱即用XFCE 和 LXQt 轻老笔记本选后者SSH server只要这台机器以后可能被远程登录一定勾上标准系统工具保持勾选Web server / print server除非明确要否则不要勾省得开机多两个监听端口我在服务器上装的时候只勾SSH server和标准系统工具桌面环境一个不装装完是一千多个包同样的机器如果勾了 GNOME包数量直接翻倍开机内存占用从 200 MB 涨到 900 MB 出头。这不是说 GNOME 不好而是要把资源花在真正需要的地方。2.3 GRUB 装到哪双系统怎么不打架安装到最后会问 GRUB 引导程序装到哪里。单硬盘机器直接装到主硬盘/dev/sda或/dev/nvme0n1即可不要装到某个分区上否则会出现引导记录在分区里、固件找不到的尴尬情况。双系统用户最关心的是会不会覆盖 Windows 引导。答案是Debian 的 GRUB 会通过os-prober探测到 Windows 引导项然后在菜单里加一条。前提是你在装 Debian 之前 Windows 没开 BitLocker 或者至少记好了恢复密钥——GRUB 改动引导顺序偶尔会触发 BitLocker 要求输入恢复密钥这个坑很隐蔽我第一次遇到时以为硬盘坏了。如果装完之后 GRUB 菜单里没有 Windows可以在 Debian 里执行sudo apt install os-prober sudo os-prober # 看能不能识别出 Windows 分区 sudo update-grub # 重新生成菜单3. 第一次开机后的三十分钟把这台机器变成能用3.1 先把软件源换掉不然一切都很慢刚装完的系统默认源在国内访问经常慢到让人怀疑网卡。别急着装软件先换源。传统格式是编辑/etc/apt/sources.list新版本则可能是/etc/apt/sources.list.d/debian.sources内容是 deb822 风格Types: deb URIs: https://mirrors.example.org/debian/ Suites: bookworm bookworm-updates bookworm-backports Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg换完源执行一次完整更新sudo apt update sudo apt full-upgrade -y这里用full-upgrade而不是upgrade是因为它允许在必要时安装或移除包来解决依赖变化跨小版本升级时更省事。non-free-firmware这个组件一定要留着网卡固件、显卡固件基本都在里面。我见过有人为了纯净把它删掉结果无线网卡直接不识别又得插网线回来加。3.2 中文环境和输入法重点是自启动中文界面本身在安装时选过语言就不需要额外配置真正麻烦的是输入法。目前的推荐组合是 fcitx5sudo apt install fcitx5 fcitx5-chinese-addons \ fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 fcitx5-frontend-qt5 \ fonts-noto-cjk装完之后很多人卡在装完了但切换不出来。原因通常是三件事没做全用im-config -n fcitx5把默认输入法框架指过去然后重新登录环境变量要写进~/.xprofile或~/.pam_environmentGTK 和 Qt 程序走的是不同变量输入法本身要开机自启否则每次登录都得手动拉起第一点最关键im-config是 Debian 用来协调输入法框架的工具手动改环境变量而不告诉它很多程序仍然走默认的 ibus 或者干脆没有输入法。第三点在不同桌面下实现方式不同XFCE 是在会话和启动里加一条 fcitx5GNOME 则通常靠自带的自动启动机制如果失效就手动在~/.config/autostart/放一个 desktop 文件。提示如果输入法在终端里能用、在浏览器里不能用八成是 GTK 系列模块变量没生效检查GTK_IM_MODULEfcitx有没有设置到正确的文件里。3.3 显卡驱动和那些不装就黑屏的固件Intel 核显的情况最简单内核自带的 i915 驱动基本够用你需要补的是固件和 Mesasudo apt install firmware-misc-nonfree mesa-va-drivers intel-media-va-driverNVIDIA 就复杂一些先确认显卡型号再决定装哪个分支nvidia-driver还是带版本号的旧分支装完必须重启不要试图只重启图形界面。装 NVIDIA 驱动最常见的翻车方式是驱动装了但 Secure Boot 还开着内核模块签名不通过于是系统退回开源驱动甚至进不了图形界面。所以上一节让你关 Secure Boot不只是为了安装方便。笔记本用户如果遇到亮度调节失效、休眠唤醒后黑屏加一个内核参数往往能解决# 编辑 /etc/default/grub在 GRUB_CMDLINE_LINUX_DEFAULT 里追加 GRUB_CMDLINE_LINUX_DEFAULTquiet i915.enable_psr0 sudo update-grub这个参数不是万能的但它解决过我好几次唤醒后屏幕全黑、键盘背光还亮着的问题。3.4 关掉休眠和调好虚拟内存桌面机器上的休眠hibernate把内存内容写进磁盘再断电经常是问题源头尤其是 swap 空间不够的时候。如果你的机器不用这个功能最干净的做法是直接屏蔽掉sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target合盖不动作则改/etc/systemd/logind.confHandleLidSwitchignore HandleLidSwitchExternalPowerignore改完sudo systemctl restart systemd-logind。注意桌面环境自己也有电源管理设置两边要一致否则会出现logind 说不睡、GNOME 说必须睡的拉锯。虚拟内存这块如果你装的时候没分 swap 分区事后用 swapfile 补一个就行sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 写入 /etc/fstab 让它开机自动挂载 echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstabfallocate秒建文件比dd快得多。写完用free -h和swapon --show验证。顺便提一句vm.swappiness默认值是 60在有大内存的机器上可以调到 10 左右让系统别急着往 swap 里塞东西但如果是内存很小的老机器就保持默认甚至调高这条没有标准答案。4. apt把这套包管理真正吃透4.1 命令清单和它们背后到底做了什么apt 的命令很好记但很多人只记住装和删不知道它每一步在动什么。下面这张表是我给新人常列的一张命令实际动作什么时候用apt update只刷新包索引每次装东西前apt upgrade升级包不删不换日常维护apt full-upgrade允许增删包解决依赖跨版本、大升级apt install装包并自动处理依赖常规安装apt remove删包保留配置想以后重装apt purge删包连配置一起删彻底清理apt autoremove清掉没人依赖的包定期跑一次apt search/apt show搜索 / 看包详情找包、确认来源apt list --installed列已安装包排查环境最容易被忽略的是apt update和apt upgrade的区别。前者不改变任何已安装软件只是把仓库里现在有什么这个清单拉下来后者才真正动手。所以装不上某个包的第一反应应该是先apt update而不是去网上找第三方源。4.2 源文件格式的两代写法前面提到过Debian 12 及更早主要用单行格式的/etc/apt/sources.list新版本偏向 deb822 格式的.sources文件。两者可以共存但不要对同一个仓库同时用两种写法否则 apt 会报警告甚至重复拉取索引。如果你手上有旧机器想迁到新格式较新的 apt 提供了转换工具sudo apt modernize-sources它会生成.sources文件并备份原来的sources.list。执行完务必apt update验证一遍确认没有报签名错误。第三方源现在推荐放在/etc/apt/sources.list.d/下并配合独立的 keyring 文件例如 Docker 的仓库就是这么做的。把密钥直接apt-key add到全局钥匙串是老做法新版本已经弃用继续用会看到一堆警告。4.3 依赖冲突、被 hold 住的包和先预演再动手的习惯真正会让人紧张的场景只有一类apt full-upgrade提示要移除几十个包。这时候不要直接回车先看清楚它要删什么。如果里面有桌面环境本体、内核、或者你天天用的工具基本都是源配置出了问题。我的习惯是先用预演参数看一遍sudo apt full-upgrade --dry-run sudo apt install --simulate 包名--dry-run等价于-s只算不动输出里能看到所有会被安装、升级、移除的包。这个习惯帮我避免过一次升级时把 xorg 整个卸掉的灾难原因是某个第三方源覆盖了官方仓库的包版本。被 hold 住的包也是常见现象。有些软件自己在/etc/apt/preferences.d/里放了 pin把版本锁住于是apt upgrade永远显示它被保留。想看是谁锁的apt-cache policy 包名输出里的 Pin-Priority 和来源一看就明白。别急着删 pin 文件先搞清楚它为什么被锁通常是上游有兼容性要求。4.4 为什么我不建议随手dpkg -i和乱加第三方源dpkg -i的问题是它不解决依赖装到一半提示依赖未满足时包已经处于半装状态configure 没跑完后面apt install -f修起来未必干净。正确做法是用apt install ./xxx.deb让 apt 从本地文件读包并替你处理依赖。第三方源的安全问题更值得说。每加一个源你就把这个仓库的维护者放进了你的信任链。判断标准我通常看三条是否有独立签名密钥、是否按发行版代号分目录、是否有明确的维护主体。满足不了的话宁可去官方源找替代品或者用容器跑对应的软件——这是我这几年最常用的一招装个容器镜像远比往系统里塞第三方源可控。5. 网络、远程登录让机器不再依赖那台显示器5.1 给机器固定一个 IP两种路子选一个服务器上 DHCP 分到的地址会变一变就没人找得到它。固定 IP 有两条路一是在路由器上做 DHCP 保留最省事机器侧零配置二是在系统里配静态地址。系统侧配置又分两种情况。桌面版通常由 NetworkManager 管用nmcli最直接nmcli con show # 看连接名 sudo nmcli con mod 有线连接 1 \ ipv4.method manual \ ipv4.addresses 192.168.1.50/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns 192.168.1.1 1.1.1.1 sudo nmcli con up 有线连接 1服务器的经典做法是改/etc/network/interfacesauto ens18 iface ens18 inet static address 192.168.1.50/24 gateway 192.168.1.1 dns-nameservers 192.168.1.1改完systemctl restart networking。注意网卡名不要凭记忆写用ip a看清楚虚拟机里经常是ens18、ens33这类名字而不是eth0。注意配静态 IP 最容易把自己锁在门外。远程操作时优先用nmcli或者先写好at/cron回滚任务别一条命令改完重启网络就断联。5.2 SSH 免密登录三步走完SSH 服务端如果安装时勾了就有没勾就补一个sudo apt install openssh-server sudo systemctl enable --now ssh免密登录的本质是把公钥放到服务器上客户端用私钥完成挑战应答。三步# 1. 本地生成密钥推荐 ed25519 ssh-keygen -t ed25519 -C melaptop # 2. 把公钥推上去 ssh-copy-id user192.168.1.50 # 3. 验证 ssh user192.168.1.50能免密进去之后再把密码登录关掉安全性会明显提升。编辑/etc/ssh/sshd_configPermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes改完sudo systemctl reload ssh。这里有个经典顺序错误先把密码登录关了、再发现密钥没配对结果自己被挡在外面。所以一定要先确认密钥登录成功再去关密码。如果是在云主机上控制台一般有 VNC 兜底本地机器就只能接显示器了。嫌记 IP 麻烦就配~/.ssh/configHost dev HostName 192.168.1.50 User myuser IdentityFile ~/.ssh/id_ed25519之后ssh dev一句话登录端口转发、跳板机参数也都能塞在这一段里。6. 开发环境一次配齐顺序很重要6.1 Git 和它那份必须改的配置sudo apt install git git config --global user.name 你的名字 git config --global user.email youexample.com git config --global init.defaultBranch main git config --global core.editor viminit.defaultBranch这条建议一开始就设否则每次git init都会出来一条提示烦人。如果要用 GitHub 之类的平台密钥可以直接复用 SSH 那把cat ~/.ssh/id_ed25519.pub把内容贴到平台的 SSH Keys 设置里即可。别用密码认证的老方式现在主流平台早就关了。6.2 Docker 走官方源别用发行版打包的那个Debian 仓库里的docker.io包能用但版本偏旧、compose 是独立的老版本。要装官方版就走它自己的仓库sudo apt install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod ar /etc/apt/keyrings/docker.gpg echo deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/debian $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin$(. /etc/os-release echo $VERSION_CODENAME)这段是从系统里自动读出代号bookworm、trixie避免手写错成别的版本导致仓库 404——这是新手最常见的错误。装完把当前用户加进 docker 组省得每条命令都 sudosudo usermod -aG docker $USER newgrp docker # 或者重新登录 docker run --rm hello-world加组这个操作等于给了这个用户 root 等价权限自己机器上没问题多人共用的机器上要慎重。6.3 Python系统 Python 千万别动Debian 现在的策略是系统 Python 归系统管直接pip install会被拦下来提示 externally-managed-environment。这不是 Bug是保护机制。正确姿势有三种项目内用python3 -m venv .venv虚拟环境隔离最推荐命令行工具用pipx install 工具名它会自动建独立环境并软链到 PATH需要一整套科学计算环境就用 miniconda装到用户目录sudo apt install python3-venv python3-pip pipx python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt如果某个脚本非要往系统环境装用pip install --user或者加--break-system-packages强行绕过但后者属于明知故犯能不用就不用。6.4 Node.js 用版本管理器不要用 apt 装apt 里的 nodejs 版本通常落后好几个大版本而且跟 npm 的搭配经常出问题。开发用途我统一用 nvmcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash source ~/.bashrc nvm install --lts nvm alias default lts/* node -v npm -v如果是给系统服务用比如跑一个常驻的前端构建服务可以考虑 NodeSource 的仓库装全局版本。两条路各有各的场景但不要在同一个用户下同时用 nvm 和 apt 版本which node一会指这边一会指那边排查起来很折磨。npm 全局包默认装在用户目录如果发现npm i -g后命令找不到检查一下npm config get prefix和 PATH 的关系。6.5 浏览器和编辑器怎么选不纠结Debian 桌面默认给 Firefox ESR稳定但版本偏旧。需要新特性可以加 Mozilla 的仓库或者直接用 flatpak。轻量需求下Chromium 和 GNOME Web 都值得试试后者在内存紧张的机器上表现明显更好。编辑器方面VS Code 官方仓库需要单独加密钥和源嫌麻烦就装code-oss功能核心一致。终端里用 vim 或者 neovim 的人建议顺手把ripgrep、fd-find、fzf装上一套搜索体验完全是另一个层级。这里提一个踩过的坑某些基于 WebKit 的应用在 Debian 上编译时找不到libwebkit2gtk-4.1-0。原因是 Debian 12 里这个包的版本号还是 4.0 系列4.1 是更新版本才有的。遇到这种包名对不上的情况先别怀疑自己命令写错了去 packages.debian.org 查一下这个包在你的发行版里叫什么或者考虑 backports 和容器方案。这是 Debian 上非常典型的一类问题。7. 虚拟机、容器和那些边缘场景7.1 在 VMware/VirtualBox 里装 Debian 的针对性设置虚拟机装 Debian 有两个必做动作。第一是装增强工具VMware 下是sudo apt install open-vm-tools open-vm-tools-desktop装完重启剪贴板共享、分辨率自适应、拖拽文件才会正常。VirtualBox 对应的是virtualbox-guest-utils和virtualbox-guest-x11。第二是关掉 3D 加速或者反过来——这取决于你的桌面环境。GNOME 在部分老版本 VMware 上开 3D 加速会花屏关掉反而稳定XFCE 基本无所谓。遇到花屏先把 3D 加速关了试试这是最省时间的排查路径。内存分配上桌面虚拟机给 4 GB 起只跑命令行服务给 1 GB 就够。磁盘建议用动态分配但要知道它只会长大不会缩小所以别在虚拟机里下几百 GB 的镜像文件。7.2 图形界面起不来按这个顺序查黑屏、卡在登录界面、只有鼠标箭头这类问题的排查顺序我总结成一条固定链路照着走基本都能定位CtrlAltF2切到 TTY能登录说明系统内核没问题问题在图形层systemctl status display-manager看显示管理器是否起来journalctl -b -p err看本次启动的错误日志显卡驱动和固件的报错通常在这里ls /usr/lib/xorg/modules/drivers/确认驱动模块存在如果是装完 NVIDIA 驱动后进不去先用nomodeset内核参数进系统再重装驱动在移动端的容器环境里跑 Debian 加 XFCE 时黑屏多数情况跟显示管理器或者 VNC 配置有关而不是系统本身坏了因为容器里没有真正的显卡设备。这种场景下换轻量窗口管理器比如 openbox往往比死磕 XFCE 更快。7.3 磁盘紧张时先做的事Debian 用久了体积会慢慢涨主要是三处apt 缓存、旧内核、日志。清理顺序sudo apt clean # 清缓存通常能省几百 MB 到数 GB sudo apt autoremove --purge # 清孤儿包和旧内核 sudo journalctl --disk-usage # 看日志占多少 sudo journalctl --vacuum-size200Mautoremove清旧内核这条要留一个保底至少保留当前和上一个可用内核别全清了否则新内核出问题时没有回退选项。8. 几个反复踩到的坑和我的应对习惯第一个坑是装完忘了改主机名。默认主机名在终端提示符里看着别扭而且 SSH 里两台机器同名容易搞混sudo hostnamectl set-hostname dev-box同时检查/etc/hosts里有没有对应的记录只改hostnamectl偶尔会出现 sudo 解析缓慢。第二个坑是时间和时区。虚拟机挂起恢复后时间漂移会导致 apt 报Release file is not valid yet这类看起来莫名其妙的错误。装systemd-timesyncd或者chrony让时间自动同步sudo apt install systemd-timesyncd timedatectl set-timezone Asia/Shanghai timedatectl status第三个坑是没做快照就开始折腾。虚拟机用户在装完系统、配好环境之后先打一个快照再开始装显卡驱动、改源、跑各种一键脚本。物理机没有快照那就退而求其次关键改动前用timeshift或者至少导出一下/etc目录。我吃过一次苦头为了跑某个框架的安装脚本把系统 Python 相关的包升级了一遍结果自带的系统工具挂了一半恢复花了整个晚上。第四个坑跟一键安装脚本有关。这类脚本最大的问题是它会在你不知情的情况下改源、装一堆依赖、覆盖配置文件出问题时你根本不知道它动了哪里。我的做法是先apt install手动走一遍确认每一步在做什么如果某个框架在 Debian 上确实没有官方包这种情况不少因为很多项目的官方支持只覆盖另一个发行版就把它放进容器里跑或者用 conda 之类的用户级环境。容器方案的好处是隔离彻底删掉镜像就干净了不会在宿主系统里留一地碎片。第五个习惯是保持一个自己的配置记录。我有个~/notes/setup.md每次装完机器往里记三件事源换了哪个、装了什么非官方源、改过哪些系统文件。半年后重装或者帮别人配机器的时候这份记录比任何网上教程都好用因为它是针对你实际环境的。最后说一个容易被忽视的细节apt的自动更新。Debian 默认会装unattended-upgrades的一部分组件但不会默认全开。桌面机器上开着挺好安全更新自动打服务器上要谨慎某些业务对内核和库的版本敏感自动升级反而会带来意外重启。开关在/etc/apt/apt.conf.d/20auto-upgrades两个参数分别控制多久检查一次和多久自动升级一次看你的场景决定别照抄别人的配置。我自己这些年用 Debian最大的体会是它不追求点几下就能用而是把每个环节的选择权交给你——源选哪个、要不要 swap、装哪些组件。刚开始会觉得麻烦但一旦把这套东西配顺了机器会稳定到让你几乎忘记它的存在。这也是我一直把它装在服务器和主力开发机上的原因它不会在你赶项目的时候突然给你整活。