当我尝试在 Ubuntu 13.10 机器下安装 less css 编译器时,我收到以下消息,并且 lescss 不起作用。我该如何修复此问题?我执行:
sudo npm install -g less
此后,我收到包含 OK 消息的电子列表:
npm http 304 https://registry.npmjs.org/cryptiles
npm http 304 https://registry.npmjs.org/ctype/0.5.2
npm http 304 https://registry.npmjs.org/combined-stream
npm http GET https://registry.npmjs.org/delayed-stream/0.0.5
npm http 304 https://registry.npmjs.org/sntp
npm http 304 https://registry.npmjs.org/boom
npm http 304 https://registry.npmjs.org/delayed-stream/0.0.5
列表结束如下:
/usr/local/bin/lessc -> /usr/local/lib/node_modules/less/bin/lessc
[email protected] /usr/local/lib/node_modules/less
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
此后当我尝试以下命令时:
echo "@foo: 25px; #foobar{font-size: @foo};" > style.less
sudo lessc ./style.less ./style.css
我收到以下错误:
/usr/bin/env: node: No such file or directory
在我执行之后
ln -s /usr/bin/node /usr/local/bin/nodejs
并创建了符号链接,没有错误,但 lessc 编译器无法正常工作。我创建了文件进行测试。其内容为:
cat style.less
@color: #4D926F;
#header {
color: @color;
}
h2 {
color: @color;
}`
并尝试之后
lessc styles.less > styles.css
已创建文件 - style.css,但文件为空。我还尝试了之前尝试过的命令 - 请参阅帖子顶部。但它不起作用。我将非常感谢任何建议和推荐。
此致。
答案1
sudo ln -s /usr/bin/nodejs /usr/bin/node
我以其他方式执行的操作似乎为我创建了一个损坏的符号链接。
这应该证明一切正常:
file $(which node)
/usr/bin/node: symbolic link to `/usr/bin/nodejs'
(请注意,它没有说符号链接损坏)
不幸的是,我相信 terdon 的答案实际上会阻止正确答案发挥作用
# Don't do this:
sudo apt-get install node
file $(which node)
/usr/sbin/node: symbolic link to `ax25-node'
apt-cache show node|grep Description-en
Description-en: Amateur Packet Radio Node program (transitional package)
(我想你想要的是 nodejs 而不是业余分组无线电 :) )
卸载该节点包应该可以解决这个问题
-有用信息结束(除非你喜欢业余无线电)-
编辑:所以整个问题在于 Debian 中已经有一个名为“node”的包,Debian 对 nodejs 感到不满,因为它没有检查名为 node 的命令是否已被另一个包(业余无线电程序)占用。因此 Debian 有效地破坏了 node 程序,因为像 less 这样的包会查找名为“node”的命令。
lessc
如果您碰巧使用了业余无线电包,那么您可以更改文件中的 shebang 行,而不是创建符号链接,#!/usr/bin/env nodejs
正如 terdon 在下面的评论中所说的那样。
请注意,如果您使用其他 npm 包,则可能必须更改很多 shebang 行,因此只有当您真正使用业余无线电时才这样做 :)
更新:好吧,我多读了一下 yorodm 的链接,发现 debian 已经将 Ham radio 软件包更改为https://packages.debian.org/sid/ax25-nodeTrusty 确实使用了它!
因此,如果您使用业余无线电,只需删除/usr/bin/node
一个符号链接,并用一个符号链接/usr/bin/ax25-node
替换它,如本答案顶部所示,如果您只是安装业余无线电,则需要再次执行此操作,因为它会覆盖。 node
/usr/bin/nodejs
现在如果你想要业余无线电,请使用“ax25-node”作为命令:D
底线是,使用 nodejs 的“node”来对抗政治很容易。
更新记录/档案
这篇文章主要针对那些sudo apt-get install nodejs
在 Ubuntu 14.04(trusty Tahr)中安装了官方软件包的人,该软件包通过将命令“node”更改为“nodejs”来消除兼容性。
当时,实际更好的解决方案是在启动板上安装 Chris Lea 的 ppa,但现在他又将其移到了其他位置,这是 Chris Lea 提供的最佳(无需处理符号链接)开箱即用的解决方案:
curl -sL https://deb.nodesource.com/setup | sudo bash -
(目前已为 Debian 和 Ubuntu 设计)
参考: https://github.com/joyent/node/wiki/installing-node.js-via-package-manager https://nodesource.com/blog/chris-lea-joins-forces-with-nodesource
这就是 joyent 在其网站上链接的内容,所以我正在使用它 :D
答案2
根据这Debian 将节点二进制文件的名称更改为 nodejs(即 /usr/bin/node 和 /usr/bin/nodejs)要修复代码中的任何问题,只需在 /usr/local/bin 中创建一个符号链接
sudo ln -s /usr/bin/node /usr/local/bin/nodejs
答案3
如果您从官方存储库安装 nodejs,您也可以安装 nodejs-legacy 包,这将添加缺少的节点命令。