You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下升级Node.js遇UEFI Secure Boot启用问题求助

Fixing Node.js Upgrade Issues with UEFI Secure Boot & dpkg

Hey there, let's work through this Node.js upgrade problem you're hitting—dealing with UEFI Secure Boot enabled and dpkg-related errors can be tricky, but we've got a few solid paths to fix it.

First, let's break down the root cause: UEFI Secure Boot blocks any unsigned software components (like kernel modules or deb packages) from being installed or loaded. That outdated v4.2.6 version you ended up with is likely from your system's default repo, and newer Node.js packages might be getting rejected because they lack proper signatures, or your dpkg state is messed up from previous failed upgrade attempts.

Here are step-by-step solutions to try:

1. Confirm Secure Boot Status

First, double-check that Secure Boot is indeed enabled (since that's the hint your error is giving):

mokutil --sb-state

This will output either SecureBoot enabled or SecureBoot disabled. We'll proceed assuming it's enabled, since that's the issue you flagged.

2. Option A: Temporarily Disable Secure Boot (Quick Fix)

If you can access your UEFI/BIOS settings, this is the fastest way to bypass the signature check:

  • Restart your computer and press the key to enter UEFI/BIOS (usually F2, F10, Del, or Esc—check your motherboard's splash screen for the exact key).
  • Look for the Secure Boot option (usually under "Security" or "Boot" tabs).
  • Toggle it to Disabled, save your changes, and restart.
  • Now try upgrading Node.js using your preferred method (we'll cover a reliable official method below if you don't have one).
  • Once the upgrade is done, you can re-enable Secure Boot if needed—just note that future Node.js upgrades might hit the same issue unless you use signed packages.

3. Option B: Use Signed Official Node.js Packages (No Secure Boot Disable Needed)

The default system repositories often carry outdated Node.js versions. Instead, use the official NodeSource repository, which provides signed packages that play nice with Secure Boot:

Step 1: Clean Up the Old Installation

First, remove the existing v4.2.6 version to avoid conflicts:

sudo apt-get purge nodejs npm
sudo apt-get autoremove && sudo apt-get autoclean

Step 2: Import the NodeSource Signing Key

This tells your system to trust packages from the official repo:

curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg

Step 3: Add the Node.js Repository

Pick the version you want (replace 20.x with your target version, like 18.x for LTS):

echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list

Step 4: Install the Updated Node.js

Update your package list and install the new version:

sudo apt-get update
sudo apt-get install nodejs

Verify it worked:

node --version
npm --version

4. Option C: Repair a Broken dpkg State

If you're still getting dpkg errors (like broken packages or signature failures), try fixing the dpkg database first:

sudo dpkg --configure -a
sudo apt-get install -f

If that doesn't resolve it, and you're confident in the package you're installing, you can force dpkg to accept it (use this as a last resort—it bypasses some safety checks):

sudo dpkg --force-all -i /path/to/your/nodejs-package.deb
sudo apt-get install -f

If none of these steps work, sharing the exact error message from dpkg would help narrow down the issue even more!

内容的提问来源于stack exchange,提问作者Bryan A. Trinidad Carrero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:02:12