npm -v 返回分段错误

Tam*_*n C 8 sudo nodejs npm

nodejs,npm 在. 当我尝试升级它时

sudo npm cache clean -f
sudo npm install -g n
sudo n stable
Run Code Online (Sandbox Code Playgroud)

和类型npm -v,它抛出"Segmentation fault"。我重新启动系统并再次键入相同的命令,它再次显示相同的错误。因此,我通过ubuntu 软件中心ubuntu 14.04 中删除了 nodejs 和 npm 包,然后重新安装。

然后我尝试使用命令通过 npm 包安装phonegap

sudo npm install -g phonegap
Run Code Online (Sandbox Code Playgroud)

但它没有返回任何进展。所以我检查了 npm 版本,它抛出一个错误“分段错误”。我也试试sudo npm -v。它什么都不返回。

所以我决定使用命令从 ubuntu 14.04 中删除 npm

sudo apt-get remove npm 
Run Code Online (Sandbox Code Playgroud)

然后我输入sudo npm install -g phonegap它不能抛出 npm package is not available。

节点

我的问题是:

  1. 包不在那里,那么为什么我输入npm -v,它返回“分段错误”
  2. 如果包没有删除,那么当我输入时sudo npm install -g phonegap,为什么它不能安装phonegap。

帮我解决这个问题。或者提供一种卸载nodejs、npm、phonegap、expressjs、不太干净的方法并重新安装的方法。

编辑:

电话沟

编辑1:

根据@chj1axr0 的回答,脚本在 nodejs 安装后抛出错误

在此处输入图片说明

chj*_*xr0 2

我用谷歌搜索了一下,似乎(对于某些人来说)Nodejs 的最新 Ubuntu 软件版本中存在一个错误,导致您遇到分段错误

安装它的最佳方法是从源代码获取节点并编译它。

我在Github gist上设置了一个简单的脚本来处理它。

#!/bin/sh
# Update System
echo "System Update"
apt-get -y update
echo "Update completed"
# Installing the applications needed to build Nodejs
apt-get -y install libssl-dev git-core pkg-config build-essential curl gcc g++ checkinstall
# Download & Unpack Node.js - v7.3.0
echo "Download Node.js - v7.3.0"
mkdir /tmp/node-install
cd /tmp/node-install
wget https://nodejs.org/dist/latest/node-v7.3.0.tar.gz
tar -zxf node-v7.3.0.tar.gz
echo "Node.js download & unpack completed"
# Install Node.js
echo "Compiling and installing Node.js"
cd node-v7.3.0
./configure && make && checkinstall --install=yes --pkgname=nodejs --pkgversion "7.3.0" --default
echo "Node.js install completed! Deleting The /tmp files"
rm -rf /tmp/node-install
echo "If you have made it this far in the script with no errors popping up all is well have a good day" 
Run Code Online (Sandbox Code Playgroud)

确保并使用sudo chmod a+x /path/to/file/install_nodejs_latest.sh以确保它会启动。然后使用sudo sh /path/to/file/install_nodejs_latest.sh它来启动它。(我必须使用 sudo 运行才能正确触发所有命令)

该脚本删除旧的nodejs、npm 和所有节点模块。

它将在脚本末尾更新 npm。

建议每隔一段时间就这样做sudo npm install -g npm(如果你想要最新的),因为 npm 的升级速度比 Node js 更快

脚本完成后,运行npm -vnode -v如果弹出版本sudo npm install -g phonegap,则运行sudo npm install -g cordovasudo npm install -g less如果您想将来更新任何模块,您所要做的就是再次安装它,这将覆盖以前的模块。expressjs是针对应用程序基础的应用程序,因此不建议全局安装它