“Errno :: EACCESS …权限被拒绝”运行指南针手表

我只是将我的项目文件迁移到D:驱动器上的新PC上,而我的程序(Git,Node Js,Ruby等)则位于C:驱动器上。

编辑SASS文件后,我试图运行compass watch ,但遇到这个错误:

 Errno::EACCES on line ["897"] of C: Permission denied - <D:/project_dir/stylesheets/app.css20140323-10532-gziux, D:/project_dir/stylesheets/app.css> Run with --trace to see the full backtrace 

在命令行我是一个Ruby的新手(因为我只用于Web开发的目的)。 我需要做什么来允许权限?

请让我知道,如果我可以提供更多的信息。

编辑:这是运行compass watch --trace后返回什么 – compass watch --trace

 D:\project_dir>compass watch --trace >>> Change detected at 21:53:53 to: app.scss overwrite stylesheets/app.css Errno::EACCES on line ["897"] of C: Permission denied - (D:/project_dir/stylesheets/app.css20140323-14712-11v62k7, D:/project_dir/stylesheets/app.css) C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/sass-3.2.18/lib/sass/util.rb:897:in `atomic_create_and_write_file' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/actions.rb:58:in `write_file' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:143:in `compile' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:118:in `compile_if_required' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:103:in `block (2 levels) in run' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:101:in `each' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:101:in `block in run' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:126:in `timed' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/compiler.rb:100:in `run' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/commands/watch_project.rb:147:in `recompile' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/commands/watch_project.rb:68:in `perform' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/commands/base.rb:18:in `execute' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/commands/project_base.rb:19:in `execute' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/exec/sub_command_ui.rb:43:in `perform!' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/lib/compass/exec/sub_command_ui.rb:15:in `run!' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/bin/compass:30:in `block in <top (required)>' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/bin/compass:44:in `call' C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/compass-0.12.4/bin/compass:44:in `<top (required)>' C:/Ruby200-x64/bin/compass:23:in `load' C:/Ruby200-x64/bin/compass:23:in `<main>' >>> Compass is polling for changes. Press Ctrl-C to Stop. 

我不知道该怎么做。

从做一些阅读( https://github.com/chriseppstein/compass/issues/1406 )我相信这是与'Ruby'和'ruby'的权限或path,但我不知道该怎么办解决这个问题。

Solutions Collecting From Web of "“Errno :: EACCESS …权限被拒绝”运行指南针手表"

为了让它在32或64位窗口中工作,我完成了Min Ren的建议,但是我也必须手动清理gem仓库( C:\Users\myusername\.gem\specs\rubygems.org%443\quick\Marshal.4.8 )所有的sass和指南针gemspec文件在卸载步骤之后。 指南针前我也安装了sass。

 gem uninstall compass gem uninstall sass 

手动清理.gem

 gem install sass --version "3.2.10" gem install compass --version "0.12.2" 

我有这个问题一段时间,最终手动修复。 经过一番挖掘,问题似乎是在util.rb中,临时文件在文件关闭之前被重命名。 在Windows中,这显然是不允许的(虽然不知道为什么我突然开始在过去的工作后才开始解决问题)。

对我来说,修正是编辑util.rb(PATH_TO_RUBY \ lib \ ruby​​ \ gems \ 1.9.1 \ gems \ sass-3.2.18 \ lib \ sass \ util.rb)。 我把关闭临时文件的行复制到行897权限更改+重命名之前。这里是更新的函数,因为我现在拥有它:

 def atomic_create_and_write_file(filename, perms = 0666) require 'tempfile' tmpfile = Tempfile.new(File.basename(filename), File.dirname(filename)) tmpfile.binmode if tmpfile.respond_to?(:binmode) result = yield tmpfile tmpfile.flush # ensure all writes are flushed to the OS begin tmpfile.fsync # ensure all buffered data in the OS is sync'd to disk. rescue NotImplementedError # Not all OSes support fsync end tmpfile.close if tmpfile # Make file readable and writeable to all but respect umask (usually 022). File.chmod(perms & ~File.umask, tmpfile.path) File.rename tmpfile.path, filename result ensure # close and remove the tempfile if it still exists, # presumably due to an error during write tmpfile.close if tmpfile tmpfile.unlink if tmpfile end 

在这里一个重要的警告是,我不是一个红宝石的人,我相信可能有更好的方法。 但是我只是很快尝试了这个mod,而且工作的很好,所以我没有更多的介绍。

它看起来像最新版本的Sass中的一个错误。

卸载Sass和Compass并安装旧版本可以解决问题。

可能有更新的版本可以工作,但这是我已经测试和知道的作品。

 gem uninstall compass gem uninstall sass gem install compass -v "0.12.2" gem install sass -v "3.2.13" 

看起来问题在SASS 3.2.19中解决

所以你需要的只是gem update compass

我得到了一个类似的错误,但有一个完全不同的解决方案,所以我认为这是值得分享的情况下,其他人遇到我的情况。

我其实是获得权限被拒绝,因为我的源代码管理已经使我的.css文件只读。 该解决方案很简单,只是检查出的CSS文件,一切恢复正常。

我有同样的问题。 我做了建议 – 卸载并安装–pre,但是这并没有解决我的问题。 之后我遇到了另一个问题。 那么,我做的是:我已经卸载了指南针和sass宝石了。 我删除了ruby / gems / ruby​​1.9.1 / gems文件夹下的所有指南针相关的gem文件夹(这可能不是必须的,不太确定),比我安装:gem install compass –version“0.12.2”and gem install sass – 版本“3.2.10”。 我不认为这里的版本太重要了,只要不是这两个版本的最新版本。 现在重要的一点是:gem卸载sass。 它会问你要清除哪个版本,或者全部清除。 删除较新的一个。 这里的技巧是指南针自动安装最新版本的sass。 所以,如果你安装一个较旧的那个,这并不重要,因为已经有一个新的罗盘将被使用。 尝试一下。

卸载SASS: gem uninstall sass

卸载COMPASS: gem uninstall compass

安装–pre COMPASS版本: gem install compass --pre

安装–pre SASS版本: gem install sass --pre

我遇到了类似的问题,我可以通过卸载指南针和sass来解决它:

 gem uninstall compass gem uninstall sass 

那么,你需要做的就是安装指南针:

 gem install compass 

sass是指南针安装的一部分,因此不需要单独安装。 看来我所面对的问题是作为罗盘安装的一部分安装的版本和手动安装的版本之间存在冲突。

当我以管理员身份运行cygwin命令提示符窗口时问题得到解决。