Software-Installation

無法使用無節點編譯簡單的 Less 文件

  • January 2, 2013

我正在嘗試編譯一個非常簡單的less文件,它只包含 Bootstrap:

/* application.less: The most awesomely complicated file in the whole world. */
@import "bootstrap/bootstrap.less";

我使用的是 Ubuntu 12.04 衍生版本,我嘗試使用包lessc中的編譯器node-less

$ sudo apt-get install node-less
...done!
$ ( cd /path/of/less/file/ && lessc application.less )
TypeError: Cannot call method 'charAt' of undefined
   at getLocation (/usr/lib/nodejs/less/parser.js:204:34)
   at new LessError (/usr/lib/nodejs/less/parser.js:213:19)
   at Object.toCSS (/usr/lib/nodejs/less/parser.js:379:31)
   at /usr/bin/lessc:103:28
   at /usr/lib/nodejs/less/parser.js:428:40
   at /usr/lib/nodejs/less/parser.js:94:48
   at /usr/lib/nodejs/less/index.js:113:15
   at /usr/lib/nodejs/less/parser.js:428:40
   at /usr/lib/nodejs/less/parser.js:94:48
   at /usr/lib/nodejs/less/index.js:113:15

不容易被嚇倒,然後我嘗試使用 Ruby 版本的 lessc。

$ sudo apt-get remove --purge node-less
$ sudo gem install less
...done!
[WARNING] Please install gem 'therubyracer' to use Less.
/usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- v8 (LoadError)
   from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require'
   from /var/lib/gems/1.8/gems/less-2.2.2/lib/less/java_script/v8_context.rb:2
   from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
   from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require'
   from /var/lib/gems/1.8/gems/less-2.2.2/lib/less/java_script.rb:9:in `default_context_wrapper'
   from /var/lib/gems/1.8/gems/less-2.2.2/lib/less/java_script.rb:17:in `context_wrapper'
   from /var/lib/gems/1.8/gems/less-2.2.2/lib/less/loader.rb:10:in `initialize'
   from /var/lib/gems/1.8/gems/less-2.2.2/lib/less.rb:14:in `new'
   from /var/lib/gems/1.8/gems/less-2.2.2/lib/less.rb:14
   from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
   from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require'
   from /var/lib/gems/1.8/gems/less-2.2.2/bin/lessc:3
   from /usr/local/bin/lessc:19:in `load'
   from /usr/local/bin/lessc:19

快點!Ruby 不知道如何管理依賴項?!任何。美好的。

$ sudo gem install therubyracer
/usr/bin/ruby1.8 extconf.rb
checking for main() in -lpthread... yes
checking for v8.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
   --with-opt-dir
   --without-opt-dir
   --with-opt-include
   --without-opt-include=${opt-dir}/include
   --with-opt-lib
   --without-opt-lib=${opt-dir}/lib
   --with-make-prog
   --without-make-prog
   --srcdir=.
   --curdir
   --ruby=/usr/bin/ruby1.8
   --with-pthreadlib
   --without-pthreadlib
   --enable-debug
   --disable-debug
   --with-v8-dir
   --without-v8-dir
   --with-v8-include
   --without-v8-include=${v8-dir}/include
   --with-v8-lib
   --without-v8-lib=${v8-dir}/lib
/var/lib/gems/1.8/gems/therubyracer-0.11.0/ext/v8/build.rb:42:in `build_with_system_libv8': unable to locate libv8. Please see output for details (RuntimeError)
   from extconf.rb:22
   The Ruby Racer requires libv8 ~> 3.11.8
   to be present on your system in order to compile
   and link, but it could not be found.

   In order to resolve this, you will either need to manually
   install an appropriate libv8 and make sure that this
   build process can find it. If you install it into the
   standard system path, then it should just be picked up
   automatically. Otherwise, you'll have to pass some extra
   flags to the build process as a hint.

   If you don't want to bother with all that, there is a
   rubygem that will do all this for you. You can add
   following line to your Gemfile:
       gem 'libv8', '~> 3.11.8'

   We hope that helps, and we apologize, but now we have
   to push the eject button on this install.

   thanks,
   The Mgmt.

我已經完成了。有什麼簡單的方法可以在我的發行版上安裝一個工作較少的編譯器?這越來越荒謬了。

在@Deer Hunter 的大力幫助下,我很快就啟動並執行了它。

$ sudo apt-get install npm
$ sudo npm install --global less
$ sudo ln -s /usr/local/lib/node_modules/less/bin/lessc /usr/local/bin

螢幕的這一側:

$ node --version
v.0.8.16
$ npm --version
1.1.69
$ npm install less
npm http GET https://registry.npmjs.org/less
npm http 200 https://registry.npmjs.org/less
npm http GET https://registry.npmjs.org/less/-/less-1.3.3.tgz
npm http 200 https://registry.npmjs.org/less/-/less-1.3.3.tgz
npm http GET https://registry.npmjs.org/ycssmin
npm http 200 https://registry.npmjs.org/ycssmin
npm http GET https://registry.npmjs.org/ycssmin/-/ycssmin-1.0.1.tgz
npm http 200 https://registry.npmjs.org/ycssmin/-/ycssmin-1.0.1.tgz
less@1.3.3 node_modules/less
└── ycssmin@1.0.1
$ ln --symbolic ~/node_modules/.bin/lessc ~/bin/lessc
$ lessc --version
lessc 1.3.3 (LESS Compiler) [JavaScript]

安裝工作。但無法執行您的test.less文件(未bootstrap安裝)。總結一下:你為什麼不使用npmnode你安裝的是什麼版本的?

引用自:https://unix.stackexchange.com/questions/60011