12/10 更新:今天已经把服务器更新到 Ubuntu 17.10 了,一切顺利,甚至还自动帮我更新了 php-fpm。

最近在学正则表达,有一个不错的正则表达式检测工具 ⌜Regexper⌝,提供了源码,然而是基于 Node 的,因为原网站访问速度不理想,抱着试一试的心态在 Vultr 上开了一个 Instance 试试,发现 Vultr 很赶潮流地已经支持 Ubuntu 17.10 了,于是没多想地开了。在 Ubuntu 17.10 的新子机上试了一下,包括 Node.js、npm、yarn 在内的一切安装很顺利,于是准备按一样的操作在目前使用的 Ubuntu 17.04 服务器上重新安装一遍,结果各种问题,即使最后问题解决了,我仍想说 Ubuntu 17.04 是一个大坑,不要用!有空我一定会更新系统的!

简单说,遇到的问题是 Node.js 与 yarn 无法安装最新版。

问题的表现是执行 yarn install 操作时显示:

ERROR: [Errno 2] No such file or directory: 'install'

yarn 网站查了一下文档才发现有一行小字说明:

Note: Ubuntu 17.04 comes with cmdtest installed by default. If you’re getting errors from installing yarn, you may want to run sudo apt remove cmdtest first. Refer to this for more information.

亲测仅仅移除 cmdtest 还没有用,到 this 里面看了一下,按照 3 楼的操作终于安装上了新版的 yarn。

回到工作目录,再次 yarn install,这一次 yarn 直接提示 Nodejs 版本太旧,仍然执行失败。版本太旧?回忆最开始安装 Node、npm、yarn 的操作是:

sudo apt-get install nodejs
sudo apt-get install npm
sudo apt-get update && sudo apt-get install yarn

莫非是和 yarn 类似的原因?nodejs -v 检测了一下版本是 4.7.2,还真是,于是 sudo apt-get remove nodejs 把旧版本卸载,然后切换为官方安装源:

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

注意上面的安装源不是最新的,这里是最新官方源,就我安装的时候已经有 9.x 版了,但是因为所安装的 yarn 显示的 nodejs 支持版本中没有 9.x ,所以新随便装个旧的(但绝对不是 4.7.2 这种老古董!)。

另外还想提一个问题,那就是 yarn start 另一个程序时,遇到了直接被 kill 的情况:

root@vultr:/var/www/node/stackedit# yarn start
yarn run v1.3.2
$ node build/dev-server.js
> Starting dev server...
Killed
error Command failed with exit code 137.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

StackOverflow 找到可能的原因是内存不足,果然 1G RAM 就是要狗带吗?

OK,以上是全部过程,最后还是想说不要用 Ubuntu 17.04,在用的尽快更新。PS. 我挺喜欢 yarn 的 LOGO 的说。?
yarn.png

Q.E.D.