2014-02-11 23 views
3

我升級從Capistrano的2至3 Capistrano的,一切似乎除了我看到當它運行這兩個未能成功運行:Capistrano的3個過程失敗

DEBUG [bbfe01ec] Running /usr/bin/env [ -L /var/www/myapp/releases/20140211033611/public/assets ] on myapp.com 
DEBUG [bbfe01ec] Command: [ -L /var/www/myapp/releases/20140211033611/public/assets ] 
DEBUG [bbfe01ec] Finished in 0.146 seconds with exit status 1 (failed). 
DEBUG [26f99b11] Running /usr/bin/env [ -d /var/www/myapp/releases/20140211033611/public/assets ] on myapp.com 
DEBUG [26f99b11] Command: [ -d /var/www/myapp/releases/20140211033611/public/assets ] 
DEBUG [26f99b11] Finished in 0.141 seconds with exit status 1 (failed). 

爲什麼這些失敗,怎麼能我修理它們?

回答

2

我有同樣的問題,這裏是Capistrano的代碼,實現當你收到這些錯誤:

desc 'Symlink linked directories' 
    task :linked_dirs do 
    next unless any? :linked_dirs 
    on release_roles :all do 
     execute :mkdir, '-pv', linked_dir_parents(release_path) 

     fetch(:linked_dirs).each do |dir| 
     target = release_path.join(dir) 
     source = shared_path.join(dir) 
     unless test "[ -L #{target} ]" 
      if test "[ -d #{target} ]" 
      execute :rm, '-rf', target 
      end 
      execute :ln, '-s', source, target 
     end 
     end 
    end 
    end 

至於我能理解這是一個使用命令ln創建符號鏈接。

關於ln(man ln)的閱讀手冊我們知道,在嘗試製作硬鏈接目錄時,命令可能因系統限制而失敗。

-d, -F, --directory 
    allow the superuser to attempt to hard link directories (note: will probably fail 
    due to system restrictions, even for the superuser) 

「LN -d」未能創建硬鏈接,這就是爲什麼以創建符號鏈接(符號鏈接而不是硬鏈接)執行「LN -s」。

所以,不用擔心這個失敗。如果你想避免它只是改變你這樣的部署選項:

set :format, :pretty 
set :log_level, :info 
+1

你是怎麼知道'在/ usr/bin中/ ENV [-L /無功/網絡/ MYAPP /發行/ 20140211033611 /大衆/資產]'試圖創建一個鏈接?我之前在linux中使用過'ln',但不知道這個命令甚至試圖做什麼。 – Catfish

+0

謝謝,我有和你一樣的錯誤,只是想着'部署流程'通過capistrano代碼(http://capistranorb.com/documentation/getting-started/flow/)。它可以幫助我確定發生故障的位置 –