减少 css 和 node js 的麻烦

减少 css 和 node js 的麻烦

当我尝试在 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 包,这将添加缺少的节点命令。

相关内容