news 2026/10/5 6:31:23

NodeSource Node.js 二进制发行版完全指南:基于 .deb 与 .rpm 的安装、手动配置与常见问题排障

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NodeSource Node.js 二进制发行版完全指南:基于 .deb 与 .rpm 的安装、手动配置与常见问题排障
  • 开发工具
  • 运维

【免费下载链接】distributions

NodeSource Node.js Binary Distributions

项目地址:https://gitcode.com/gh_mirrors/di/distributions
点击查看免费下载

本文以 NodeSource 官方仓库的旧版 README(OLD_README.md)为骨架,系统讲解如何通过 NodeSource 的 .deb / .rpm 二进制仓库在 Debian/Ubuntu 系与 Enterprise Linux 系发行版上安装、卸载 Node.js,并借助仓库内的 setup 脚本源码(scripts/deb、scripts/rpm)深入剖析脚本的底层工作原理。读完本文,你将掌握curl | bash快速安装、四步手动安装、签名密钥与仓库配置、版本选择(LTS / Current / 指定大版本)、彻底卸载以及常见问题(代理、版本钉住、缓存、GPG 错误等)的排查思路。

文档版本说明:本仓库根目录的 README.md 已指向新版文档 DEV_README.md,而 OLD_README.md 是旧版完整指南。本文围绕旧版指南展开,内容以旧版文档为准,源码佐证以当前仓库为准。

仓库定位:Node.js 二进制发行版 + setup/support 脚本

该仓库承载的是NodeSource Node.js Binary Distributions的配套文档与安装脚本:通过 .rpm 与 .deb 两种包格式向主流 Linux 发行版分发预编译的 Node.js 二进制包,同时提供 setup 与 support 脚本,把「配置签名密钥、写入软件源、刷新包索引」等一系列操作自动化。

仓库中实际维护的脚本文件即为佐证:

  • Debian/Ubuntu 系:setup_16.x、setup_18.x、setup_20.x、setup_21.x、setup_22.x、setup_23.x、setup_24.x、setup_25.x、setup_lts.x、setup_current.x(位于 scripts/deb);
  • Enterprise Linux 系:同名的一套脚本(位于 scripts/rpm)。

当前仓库中setup_lts.x指向 Node.js 24.x、setup_current.x指向 25.x(见各脚本内的NODE_VERSION变量,例如 scripts/deb/setup_lts.x 与 scripts/rpm/setup_current.x)。旧版指南中出现的 v19.x 等示例属于历史版本存档,如今不再维护。

Debian 与 Ubuntu 系发行版(.deb)

可用架构

NodeSource 持续维护以下架构,未来可能增加:

  • amd64(64 位)
  • armhf(ARM 32 位硬浮点,ARMv7 及以上:arm-linux-gnueabihf)
  • arm64(ARM 64 位,ARMv8 及以上:aarch64-linux-gnu)

支持的 Ubuntu 版本

NodeSource 维护 Canonical 仍在积极支持范围内的 Ubuntu 发行版,包括 LTS 与中间版本。划掉(删除线)的版本带有警告:BUILD SYSTEM CURRENTLY BROKEN FOR NODEJS 18+(Node.js 18+ 的构建系统当前损坏):

  • Ubuntu 16.04 LTS (Xenial Xerus)
  • Ubuntu 18.04 LTS (Bionic Beaver)
  • Ubuntu 18.10 (Cosmic Cuttlefish)
  • Ubuntu 19.04 (Disco Dingo)
  • Ubuntu 19.10 (Eoan Ermine)
  • Ubuntu 20.04 LTS (Focal Fossa)
  • Ubuntu 20.10 (Groovy Gorilla)
  • Ubuntu 21.04 (Hirsute Hippo)
  • Ubuntu 21.10 (Impish Indri)
  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 22.10 (Kinetic Kudu)

支持的 Debian 版本

由于 Debian 发布周期较长,大量用户运行 testing 与 unstable,因此 NodeSource 对 stable、testing 与 unstable 均提供支持:

  • Debian 9 / oldoldstable (Stretch)(Node.js 18+ 构建系统损坏)
  • Debian 10 / oldstable (Buster)
  • Debian 11 / stable (Bullseye)
  • Debian unstable (Sid)
  • Debian testing (Bookworm)

支持的衍生发行版

NodeSource 为众多基于 Debian/Ubuntu 的衍生系统提供(或曾经提供)支持,多数衍生版通过其上游基础版本获得支持:

  • Linux Mint:18 "Sarah"、18.1 "Serena"、18.2 "Sonya"、18.3 "Sylvia"(via Ubuntu 16.04 LTS)、LMDE 2 "Betsy"(via Debian 8)、19 "Tara"、19.1 "Tessa"、19.2 "Tina"、19.3 "Tricia"(via Ubuntu 18.04 LTS)、20 "Ulyana"、20.1 "Ulyssa"、20.2 "Uma"、20.3 "Una"(via Ubuntu 20.04 LTS)、21 "Vanessa"、21.1 "Vera"(via Ubuntu 22.04 LTS)、LMDE 3 "Cindy"(via Debian 9)、LMDE 4 "Debbie"(via Debian 10)、LMDE 5 "Elsie"(via Debian 11)
  • Devuan:Ascii / oldoldstable(via Debian 9)、Beowulf / oldstable(via Debian 10)、Chimaera / stable(via Debian 11)、Ceres / unstable(via Debian unstable)
  • elementary OS:0.4 Loki、5 Juno、5.1 Hera(via Ubuntu 18.04 LTS)、6 Odin、6.1 Jolnir(via Ubuntu 20.04 LTS)、7 horus(via Ubuntu 22.04 LTS)
  • Trisquel:8 "Flidas"、9 "Etiona"
  • BOSS:7.0 "Drishti"(via Debian 9)、8.0 "Unnati"(via Debian 10)、9.0 "Urja"(via Debian 11)
  • BunsenLabs:Helium(via Debian 9)、Lithium(via Debian 10)
  • MX Linux:MX-17 Horizon、MX-18 Continuum(via Debian 9)、MX-19 Patito Feo(via Debian 10)、MX-21 Wildflower(via Debian 11)
  • Sparky Linux:4.x "Tyche"(via Debian 9)、5.x "Nibiru"(via Debian 10)、6.x "Po Tolo"(via Debian 11)
  • PureOS:9.0 "Amber"(via Debian 10)、10.0 "Byzantium"(via Debian 11)
  • Astra Linux CE:2.12 "Orel"(via Debian 9)
  • Ubilinux:4.0 "Dolcetto"(via Debian 9)
  • Parrot OS:5.0 "Electro Ara"(via Debian 11)
  • Deepin:20 "Apricot"(via Debian 10)

(上述带删除线且标注BUILD SYSTEM CURRENTLY BROKEN FOR NODEJS 18+的版本,表示旧版本文档发布时其构建系统无法为 Node.js 18+ 产出包,选用时需自行确认。)

快速安装(curl 管道方式)

旧版指南给出的标准安装方式是将 setup 脚本通过管道交给 bash 执行,随后用包管理器安装nodejs包。

Node.js v20.x

Ubuntu:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - &&\ sudo apt install -y nodejs

Debian(以 root 身份):

curl -fsSL https://deb.nodesource.com/setup_20.x | bash - &&\ apt install -y nodejs

Node.js v19.x(历史版本示例)

# Ubuntu curl -fsSL https://deb.nodesource.com/setup_19.x | sudo -E bash - &&\ sudo apt install -y nodejs # Debian(root) curl -fsSL https://deb.nodesource.com/setup_19.x | bash - &&\ apt install -y nodejs

Node.js v18.x

# Ubuntu curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\ sudo apt install -y nodejs # Debian(root) curl -fsSL https://deb.nodesource.com/setup_18.x | bash - &&\ apt install -y nodejs

Node.js v16.x

# Ubuntu curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - &&\ sudo apt install -y nodejs # Debian(root) curl -fsSL https://deb.nodesource.com/setup_16.x | bash - &&\ apt install -y nodejs

Node.js LTS(v18.x):setup_lts.x始终指向当前 LTS 版本线。

# Ubuntu curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - &&\ sudo apt install -y nodejs # Debian(root) curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - &&\ apt install -y nodejs

Node.js Current(v20.x):setup_current.x始终指向当前最新版本线。

# Ubuntu curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash - &&\ sudo apt install -y nodejs # Debian(root) curl -fsSL https://deb.nodesource.com/setup_current.x | bash - &&\ apt install -y nodejs

可选:安装构建工具

如需从 npm 编译原生(native)模块,需要安装编译工具链。Ubuntu 下使用sudo,Debian 下以 root 运行:

apt install -y build-essential
setup 脚本的底层原理(源码解读)

以 scripts/deb/setup_20.x 为例,该脚本的执行流程可以分为以下几个阶段,与旧版文档的说明完全对应:

  1. OS 校验:check_os检查/etc/debian_version是否存在,否则拒绝执行(提示仅支持 Debian 系系统);
  2. 前置依赖安装:install_pre_reqs依次执行apt update、安装apt-transport-https ca-certificates curl gnupg、创建/usr/share/keyrings目录、清理可能存在的旧nodesource.gpg与旧 sources 文件,然后通过curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor把 NodeSource 签名公钥解 armor 后写入/usr/share/keyrings/nodesource.gpg,并chmod 644确保所有用户可读;
  3. 仓库配置:configure_repo先用dpkg --print-architecture校验架构(仅允许amd64与arm64),再以 deb822 格式写入/etc/apt/sources.list.d/nodesource.sources(含Types: deb、URIs、Suites: nodistro、Components: main、Architectures、Signed-By指向 keyring 文件),随后为nsolid与nodejs两个包各写一份/etc/apt/preferences.d/下的 pin 配置(Pin-Priority: 600,Pin: origin deb.nodesource.com),以保证从 NodeSource 仓库获得较高优先级;
  4. 刷新索引:执行apt update并提示用户运行apt install nodejs -y完成安装。

可见脚本内部会自动完成密钥导入与 sources 配置,这正是文档要求「安装后即可直接apt install nodejs」的原因。

卸载 nodejs(Ubuntu / Debian 包)

彻底移除通过上述 deb.nodesource.com 方式安装的 Node.js:

# Ubuntu 使用 sudo,Debian 以 root 运行 apt purge nodejs &&\ rm -r /etc/apt/sources.list.d/nodesource.list

注意:新版脚本(如 scripts/deb/setup_20.x)实际写入的是 deb822 格式的/etc/apt/sources.list.d/nodesource.sources与/usr/share/keyrings/nodesource.gpg,若你使用新版脚本安装,卸载时还建议一并清理这两个文件(详见新版文档 DEV_README.md 的卸载章节)。

手动安装(四步)

如果你不喜欢curl <url> | bash -的管道执行方式,或正在使用不受支持的发行版,可以手动完成安装。以下步骤假设系统存在sudo;部分极简发行版默认没有sudo,此时应安装sudo或su切换 root 后直接执行。

第 1 步:移除旧 PPA(如存在)

仅当你此前使用过 Chris Lea 的 Node.js PPA 时才需要:

# 部分 Ubuntu 版本可能没有 add-apt-repository: # sudo apt install python-software-properties sudo add-apt-repository -y -r ppa:chris-lea/node.js &&\ sudo rm -f /etc/apt/sources.list.d/chris-lea-node_js-*.list &&\ sudo rm -f /etc/apt/sources.list.d/chris-lea-node_js-*.list.save

第 2 步:添加 NodeSource 包签名密钥

KEYRING=/usr/share/keyrings/nodesource.gpg curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | sudo tee "$KEYRING" >/dev/null # 也可以用 wget: # wget --quiet -O - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | sudo tee "$KEYRING" >/dev/null gpg --no-default-keyring --keyring "$KEYRING" --list-keys chmod a+r /usr/share/keyrings/nodesource.gpg

密钥 ID 为9FD3B784BC1C6FC31A8A0A1C1655A0AB68576280。

第 3 步:添加所需的 NodeSource 仓库

# 替换为你要安装的 Node.js / io.js 分支:node_8.x、node_16.x 等 VERSION=node_16.x # 若密钥环路径不同,替换为上面的 KEYRING KEYRING=/usr/share/keyrings/nodesource.gpg # 下面命令会自动设置 DISTRO;若没有 lsb_release,可手动指定: # - Debian 发行版:jessie、sid 等 # - Ubuntu 发行版:xenial、bionic 等 # - Debian/Ubuntu 衍生版:建议使用其上游基础版本对应的 codename, # 这是高级场景;若你的发行版不在本文支持列表中,则不受官方支持。 DISTRO="$(lsb_release -s -c)" echo "deb [signed-by=$KEYRING] https://deb.nodesource.com/$VERSION $DISTRO main" | sudo tee /etc/apt/sources.list.d/nodesource.list echo "deb-src [signed-by=$KEYRING] https://deb.nodesource.com/$VERSION $DISTRO main" | sudo tee -a /etc/apt/sources.list.d/nodesource.list

第 4 步:更新包列表并安装 Node.js

sudo apt update sudo apt install nodejs

手动安装使用经典的 one-line sources 格式(deb [signed-by=...] ...),与新版自动脚本写入的 deb822 格式(见 scripts/deb/setup_20.x 中的nodesource.sources)在原理上等价:都是告诉 apt「从 NodeSource 的哪个仓库、哪个发行版代号、哪个组件获取包,并由哪把公钥验证签名」。

Enterprise Linux 系发行版(.rpm)

可用架构

  • x86_64(64 位)
  • arm64(ARM 64 位,ARMv8 及以上:aarch64-linux-gnu)

支持的版本

  • Red Hat Enterprise Linux:RHEL 7(Node.js 18+ 构建系统损坏)、RHEL 8(64 位)
  • CentOS:CentOS 7、CentOS 8、CentOS 8 Stream
  • AlmaLinux:AlmaLinux 8(64 位)
  • Mageia:Mageia 7、Mageia 8(64 位)
  • Rocky Linux:Rocky 8(64 位)
  • CloudLinux:CloudLinux 6(Node <= 10.x 时为 32 位,其余 64 位)
  • Fedora:33、34、35、36(均为 64 位)
  • Amazon Linux:Amazon Linux、Amazon Linux 2、Amazon Linux 2023(旧版文档发布时标记为构建损坏/待定)

如果你使用 RHEL 6 或 CentOS 6,可参考仓库内的 OLDER_DISTROS.md:这些系统自带的 C++ 编译器无法构建现代 V8 引擎,需要借助 SoftwareCollections 的 devtoolset(GCC)与 python27 集合才能编译原生模块。

快速安装(curl 管道方式)

适用于 RHEL、CentOS、CloudLinux、Amazon Linux 或 Fedora。RPM 包的签名密钥位于https://rpm.nodesource.com/pub/el/NODESOURCE-GPG-SIGNING-KEY-EL。

Node.js v20.x

# 以 root 运行 curl -fsSL https://rpm.nodesource.com/setup_20.x | bash - # 无 root 权限 curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -

Node.js v19.x(历史版本示例)

# 以 root 运行 curl -fsSL https://rpm.nodesource.com/setup_19.x | bash - # 无 root 权限 curl -fsSL https://rpm.nodesource.com/setup_19.x | sudo bash -

Node.js v18.x

# 以 root 运行 curl -fsSL https://rpm.nodesource.com/setup_18.x | bash - # 无 root 权限 curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -

Node.js v16.x

# 以 root 运行 curl -fsSL https://rpm.nodesource.com/setup_16.x | bash - # 无 root 权限 curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -

Node.js LTS(18.x)

# 以 root 运行 curl -fsSL https://rpm.nodesource.com/setup_lts.x | bash - # 无 root 权限 curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -

Node.js Current(20.x)

# 以 root 运行 curl -fsSL https://rpm.nodesource.com/setup_current.x | bash - # 无 root 权限 curl -fsSL https://rpm.nodesource.com/setup_current.x | sudo bash -

可选:安装构建工具

编译 npm 原生模块需要 C++ 工具链:

yum install gcc-c++ make # 或:yum groupinstall 'Development Tools'
setup 脚本的底层原理(源码解读)

以 scripts/rpm/setup_20.x 为例,RPM 侧脚本的关键逻辑包括:

  1. 系统校验:检查/etc/redhat-release是否存在,或/etc/system-release中是否包含 "Amazon Linux",否则拒绝执行;
  2. 清理旧仓库:删除/etc/yum.repos.d/nodesource*.repo,避免旧配置残留;
  3. 架构校验:通过uname -m获取架构,仅允许aarch64与x86_64;
  4. 写入仓库文件:生成[nodesource-nodejs]段写入/etc/yum.repos.d/nodesource-nodejs.repo,baseurl指向https://rpm.nodesource.com/pub_${NODE_VERSION}/nodistro/nodejs/$SYS_ARCH,并设置priority=9、enabled=1、gpgcheck=1、gpgkey指向新签名公钥、module_hotfixes=1;
  5. LTS 额外配置:若NODE_VERSION为 18.x/20.x/22.x 等 LTS 线,还会额外写入nodesource-nsolid.repo(N|Solid Runtime 仓库);
  6. 包管理器适配:自动检测dnf、yum、microdnf,调用对应命令的makecache --disablerepo="*" --enablerepo="nodesource-nodejs"刷新缓存,并提示用户执行dnf/yum install nodejs -y完成安装。

这套逻辑正是文档中「运行 setup 脚本后即可直接安装 nodejs 包」的实现基础。

卸载 nodejs(Enterprise Linux 包)

彻底移除通过 rpm.nodesource.com 方式安装的 Node.js:

# 使用 sudo 或以 root 运行 yum remove nodejs &&\ rm -r /etc/yum.repos.d/nodesource*.repo &&\ yum clean all

验证安装(Tests)

仓库提供了在线测试端点,用于验证安装是否正常(同时验证 setup 脚本本身是否工作):

curl -fsSL https://deb.nodesource.com/test | bash -

FAQ:常见问题与解答

Q:位于代理(proxy)之后如何使用本仓库?A:代理环境下的用法需要参考仓库对应的 issue 讨论,核心思路是让curl/apt/yum正确走代理变量(如http_proxy/https_proxy),并确保代理能放行 deb.nodesource.com / rpm.nodesource.com 域名。

Q:如何把 Node.js 钉住(pin)到特定版本?A:可以在包管理器中对该版本施加 hold / pin 策略。apt 系可使用apt-mark hold nodejs,或通过 preferences 文件设置优先级;rpm 系可在 yum/dnf 中对该版本做版本锁定(versionlock 插件)。

Q:用脚本升级到新的 Node.js 大版本后,安装的还是旧版本?A:通常是包管理器的缓存问题,需要清空包缓存后重试(apt 的/var/cache/apt或 yum/dnf 的缓存目录)。

Q:在 CentOS 5 / RHEL 5 上安装 Node.js 失败?A:由于 EL5 编译器工具链的局限及其通用支持已结束,不再支持这些系统。

Q:提示 "Your distribution, identified as '.i686' or '.i386, is not currently supported"?A:Node.js 4.x 及更新版本的 rpm 包要求 64 位系统(x86_64),i686/i386 不受支持。

Q:为什么某些平台/发行版的 Node.js 停止更新?A:新版本 V8 引擎需要现代编译器工具链;部分平台(如 ARM wheezy)缺少该工具链,因此无法继续提供新版本包。

Q:为什么我安装到的 Node.js 版本比脚本对应的版本更新?A:很可能是包管理器从其他软件源安装了更新的 Node.js 版本,需要检查系统软件源优先级,确保来自 NodeSource 的包优先。

Q:IPv6 支持现状如何?A:IPv6 支持状态随基础设施与仓库演进,具体现状以仓库官方 issue 讨论为准。

Q:在 Debian Jessie 或 Ubuntu Trusty Tahr 上遇到 GPG 错误无法安装?A:这类 GPG 签名校验错误与旧系统上的密钥处理方式(apt-key / keyring 路径)相关,需核对当前签名密钥与Signed-By配置是否匹配。

社区请求的发行版支持

NodeSource 团队没有足够资源支持并测试所有 Linux 发行版,因此依赖社区贡献。以下是社区曾请求支持、但尚未正式提供的发行版清单,感兴趣的同学可以从这里入手参与贡献:

  • OpenSUSE、Scientific Linux、TANGLU Bartholomea、Korora、FreePBX、PopOS、Kylin、MakuluLinux、GuixSD、XCP-ng、VzLinux

维护方式:脚本生成器

仓库内为 deb 与 rpm 各维护了一份「模板 + 生成器」结构(见 scripts/deb/script_generator 与 scripts/rpm/script_generator):

  • base_script.sh 是模板,版本号占位符为NODE_VERSION="XX.x";
  • generator.sh 通过sed "s/NODE_VERSION=\"XX.x\"/NODE_VERSION=\"$version.x\"/g"批量生成各版本脚本并chmod +x;deb 侧当前版本列表为 20/22/24/25(LTS=24、Current=25),rpm 侧为 23/24/25(LTS=24、Current=25);
  • 生成后可通过 AWS CLI 同步部署到 S3(如aws s3 sync scripts/deb/ s3://deb.nodesource.com/ --exclude "*/**",详见 scripts/deb/script_generator/README.md)。

这意味着setup_lts.x/setup_current.x指向哪个版本、仓库维护哪些版本线,都会随着生成器版本列表的变化而更新——这正是文档中 LTS/Current 版本号随文档版本漂移的原因。

版权与许可

本文涉及的资料版权归 NodeSource 所有,采用 MIT 许可,详见仓库根目录的 LICENSE.md。本项目的 Node.js 二进制发行版与 Debian、Ubuntu、Red Hat、CentOS、Fedora 等发行版官方无隶属关系;Ubuntu 是 Canonical Ltd. 的注册商标,Debian 是 Software in the Public Interest, Inc. 持有的注册商标,Red Hat、CentOS、Fedora 是 Red Hat, Inc. 的商标,CloudLinux 是 Cloud Linux, Inc 的商标。

  • 开发工具
  • 运维

【免费下载链接】distributions

NodeSource Node.js Binary Distributions

项目地址:https://gitcode.com/gh_mirrors/di/distributions
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/5 6:29:54

Ludusavi与其他备份工具对比分析:为什么选择这款开源神器

Ludusavi与其他备份工具对比分析&#xff1a;为什么选择这款开源神器 【免费下载链接】ludusavi Backup tool for PC game saves 项目地址: https://gitcode.com/GitHub_Trending/lu/ludusavi 在当今游戏备份工具市场中&#xff0c;Ludusavi作为一款跨平台开源备份神器&…

作者头像 李华
网站建设 2026/10/5 6:29:52

Ludusavi:终极PC游戏存档备份神器,轻松保护你的游戏进度

Ludusavi&#xff1a;终极PC游戏存档备份神器&#xff0c;轻松保护你的游戏进度 【免费下载链接】ludusavi Backup tool for PC game saves 项目地址: https://gitcode.com/GitHub_Trending/lu/ludusavi 你是否曾经因为系统重装、游戏崩溃或更换电脑而丢失了宝贵的游戏存…

作者头像 李华
网站建设 2026/10/5 6:25:24

Python车牌检测与识别实战:YOLO+CRNN全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/5 6:25:04

ADS射频功率放大器设计全流程:从负载牵引到EM仿真

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/5 6:24:43

嵌入式以太网接口详解:MAC、PHY与MII家族演进

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华