Ubuntu更新Node.js时遇到的“由于没有公钥,无法验证下列签名: NO_PUBKEY”的解决方法

博主在尝试升级Node.js到16.x版本时遇到了GPG错误和源签名问题。他们试图通过删除旧的PPA源来解决问题,但未成功。最终,通过在终端中删除souffle-lang的PPA源文件并执行相关命令,成功安装了Node.js。此博客详细记录了解决这一问题的步骤。
摘要由CSDN通过智能技术生成

这个问题说来比较绕,主要是因为我系统上的node.js版本太低了,想安装新的版本,参考这里的说明:https://github.com/nodesource/distributions/blob/master/README.md

首先输入:

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -

结果就报了下面的错:

错误:4 https://packagecloud.io/souffle-lang/souffle/ubuntu focal InRelease
  由于没有公钥,无法验证下列签名: NO_PUBKEY ADFF805033AAE0B5
正在读取软件包列表... 完成
W: GPG 错误:https://packagecloud.io/souffle-lang/souffle/ubuntu focal InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY ADFF805033AAE0B5
E: 仓库 “https://packagecloud.io/souffle-lang/souffle/ubuntu focal InRelease” 没有数字签名。
N: 无法安全地用该源进行更新,所以默认禁用该源。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
Error executing command, exiting

我这里特别想吐槽一下:这个源不能用就不用了呗,为啥就exit了,这是什么傻叉逻辑???于是得想办法解决这个报错。

看到一些朋友说是加入签名,更新/etc/apt/sources.list文件,删除软件源等等(例如:sudo apt-get update出错:N: 无法安全地用该源进行更新,所以默认禁用该源 - SegmentFault 思否),我试了一下,都不起作用。仔细看了一下,似乎是我以前装souffle的时候添加的,类似于这个网页:Install Soufflé | Soufflé • A Datalog Synthesis Tool for Static Analysis

sudo wget https://souffle-lang.github.io/ppa/souffle-key.public -O /usr/share/keyrings/souffle-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/souffle-archive-keyring.gpg] https://souffle-lang.github.io/ppa/ubuntu/ stable main" | sudo tee /etc/apt/sources.list.d/souffle.list
sudo apt update
sudo apt install souffle

看到有朋友说可以通过删除ppa源的方式解决:在Ubuntu中添加和删除PPA的软件源 - 走看看

sudo add-apt-repository -r ppa:user/ppa-name

不过,有哪位朋友能告诉我,我按照souffle网页执行的那些命令,ppa-name叫什么吗?另外,apt-get有个命令能列出所有的ppa源吗??觉得这些命令都太傻了!只能另外想办法,于是在这里看到了:apt 删除 PPA 方法_Bpazy的博客-CSDN博客

在/etc/apt/sources.list.d文件夹中打开终端,直接输入:

sudo rm -rf souffle-lang_souffle.list

然后update一下(我也不知道有没有用,但是我这么做了):

sudo apt-get clean
sudo apt-get update

然后再分别运行:

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs

就可以正常安装16.x版本的Node.js了。不得不说,有些终端命令真的是太傻了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值