这个问题说来比较绕,主要是因为我系统上的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了。不得不说,有些终端命令真的是太傻了。