2011-03-24 66 views
1

我不知道爲什麼捆綁正在尋找ActionPack的-1.4.0.gem,但它引起我的包update命令就不行了。捆綁更新失敗,神祕的權限被拒絕

這裏是所有相關的成績單(據我所知...)

$ bundle update 
Fetching source index for http://rubygems.org/ 
Using rake (0.8.7) 
Using Ascii85 (1.0.0) 
/opt/local/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb:145:in `initialize': Permission denied - /opt/local/lib/ruby/gems/1.8/cache/actionpack-1.4.0.gem (Errno::EACCES) 
from /opt/local/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb:145:in `open' 
from /opt/local/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb:145:in `download' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/source.rb:255:in `download_gem_from_uri' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/source.rb:72:in `fetch' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/installer.rb:45:in `run' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/spec_set.rb:12:in `each' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/spec_set.rb:12:in `each' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/installer.rb:44:in `run' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/installer.rb:8:in `install' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/cli.rb:275:in `update' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/vendor/thor/task.rb:22:in `send' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/vendor/thor/task.rb:22:in `run' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/vendor/thor.rb:246:in `dispatch' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/lib/bundler/vendor/thor/base.rb:389:in `start' 
from /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.10/bin/bundle:13 
from /opt/local/bin/bundle:19:in `load' 
from /opt/local/bin/bundle:19 

OK,所以它的失敗是由於這條道路上否認了許可,但沒有文件的存在:

/mydev/ElectionManager(export-work)> ls /opt/local/lib/ruby/gems/1.8/cache/actionpack-1.4.0.gem 
ls: /opt/local/lib/ruby/gems/1.8/cache/actionpack-1.4.0.gem: No such file or directory 

好吧,讓我們來看看環境。那裏有什麼可疑的東西嗎?

/mydev/ElectionManager(export-work)> env 
TERM_PROGRAM=Apple_Terminal 
GEM_HOME=/opt/local/lib/ruby/gems/1.8 
TERM=xterm-color 
SHELL=/bin/bash 
TMPDIR=/var/folders/BF/BFIqAzICGVuMEvQQwzRkvE+++TI/-Tmp-/ 
Apple_PubSub_Socket_Render=/tmp/launch-9H2vLV/Render 
TERM_PROGRAM_VERSION=273.1 
USER=pitosalas 
COMMAND_MODE=unix2003 
SSH_AUTH_SOCK=/tmp/launch-4WmMHp/Listeners 
__CF_USER_TEXT_ENCODING=0x1F5:0:0 
PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/mysql/bin/ 
PWD=/mydev/ElectionManager 
EDITOR=mate -w 
LANG=en_US.UTF-8 
PS1=\w$(__git_ps1 "(%s)")> 
SHLVL=1 
HOME=/Users/pitosalas 
LOGNAME=pitosalas 
DISPLAY=/tmp/launch-p24Csr/org.x:0 
OLDPWD=/Users/pitosalas 
_=/usr/bin/env 

沒有什麼可疑的。讓我們來看看所有的代碼,看看是否曾經提到過actionpack-1:

/mydev/ElectionManager(export-work)> grep -r -i "actionpack-1" . 
/mydev/ElectionManager(export-work)> 

沒有提到它。 Gemfile中有什麼?

$ cat Gemfile 


source :gemcutter 

#gem 'rails', "2.3.8" 
gem 'rails' 
gem "sqlite3-ruby", "1.2.5", :require => "sqlite3" 

gem "authlogic" 
gem "prawn", '>= 0.7.2' 
gem 'will_paginate', '~> 2.3.11' 
gem 'tpitale-constant_cache', '>= 0.1.2', :require => 'constant_cache' 
gem 'rubyzip', '>= 0.9.4', :require => 'zip/zip' 
gem 'redgreen', '>=1.2.2' 
gem 'searchlogic', '>=2.4.14' 
gem 'cancan' 
gem 'fastercsv' 

group :development do 
end 

group :test do 
    gem 'thoughtbot-shoulda', '>=2.10.2', :require => 'shoulda' 
    gem 'machinist' 
    gem 'faker' 
    gem 'mocha' 
    gem 'pdf-reader' 
    gem 'awesome_print' 
    gem 'turn' 
    gem 'rspec' 
end 

group 'cucumber' do 
    gem 'machinist' 
    gem 'faker' 
    gem 'cucumber-rails', '>=0.3.0', :require => false 
    gem 'database_cleaner', '>=0.5.0', :require => false 
gem 'webrat', '>=0.7.0', :require => false 
gem 'pickle', :require => false 
end 

group :production do 

end 

好,看起來還不錯。寶石認爲它對軌道寶石瞭解多少?

/mydev/ElectionManager(export-work)> gem list rails 

*當地的寶石*

rails (3.0.4, 2.3.8, 2.3.5, 2.3.4, 2.2.2) 
rails_best_practices (0.6.4, 0.3.26, 0.3.19, 0.3.16) 
/mydev/ElectionManager(export-work)> 

回答

1

ActionPack的是軌道的依賴。當您運行bundle install會發生什麼?這應該安裝相關的actionpack版本。

但是,它似乎像它的尋找老版本的actionpack雖然。

搜索您Gemfile.lockactionpack。這將告訴你它是什麼依賴。

此外,如果捆綁器要安裝到系統中的寶石,你可能需要sudo bundle install雖然你最好給它一個路徑安裝到:

bundle install --path=/something/specific/to/this/project

+0

在嘗試此操作之前,我刪除了我的Gemfile.lock ...捆綁軟件的說明對sudoing進行了嚴格警告... – pitosalas 2011-03-24 15:27:11

+0

捆綁軟件的說明對sudoing進行了嚴格警告,所以我不確定這一點。問題是,爲什麼哦爲什麼bundler在尋找actionpack-1.x。我沒有看到引用它。 – pitosalas 2011-03-24 15:33:40

+0

這就是爲什麼我建議提供一個特定的路徑捆綁器,如果你有權限問題。你有'。/ bundle/config'文件嗎?它的內容是什麼?也有你嘗試'捆綁安裝'而不是'捆綁更新' – lebreeze 2011-03-24 15:42:06

1

你最初安裝使用sudo gem install ...軌?當bundle運行時沒有sudo權限,它將不能夠更新這些。刪除最初安裝的gem並重新運行打包程序。

+0

是的,我原本使用sudo gem install。我會嘗試你所說的,這似乎是一件安全的事情。 – pitosalas 2011-03-24 15:27:51

+0

我試過卸載rails:「$ sudo gem uninstall rails」,但是我仍然得到相同的錯誤:「$ bundle update」給了我「/opt/local/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb:145 :in'initialize':權限被拒絕 - /opt/local/lib/ruby/gems/1.8/cache/actionpack-1.4.0.gem(Errno :: EACCES) 「 – pitosalas 2011-03-24 15:31:01

+0

你必須卸載actionpack,其他依賴關係。 – harald 2011-03-24 15:54:38