2011-06-03 12 views
6

Tengo un problema intermitente al implementar mi aplicación de rieles con capistrano. Después de cargar el archivo .gz en el servidor, el registro muestra un error proveniente de tar, que indica que la marca de tiempo está en el futuro (consulte el resultado a continuación). Este mensaje se repite para lo que parece ser cada archivo en la aplicación.Capistrano/Mercurial/tar "sello de tiempo en el futuro" Mensaje

He comparado el tiempo del servidor con el nombre numérico del archivo .tar.gz, y de hecho está unos minutos por delante. Pero, ¿cómo se correlaciona esto con la marca de tiempo real en los archivos? ¿Y cómo puedo hacer que mis cambios se implementen correctamente?

** sftp upload /var/folders/lo/loIUAyGAHFWqSREiNHhm-E+++TI/-Tmp-/20110603143429.tar.gz -> /tmp/20110603143429.tar.gz 
    [123.45.67.890] /tmp/20110603143429.tar.gz 
    [123.45.67.890] done 
* sftp upload complete 
* executing "cd /home/blah/releases && tar xzf /tmp/20110603143429.tar.gz && rm /tmp/20110603143429.tar.gz" 
    servers: ["123.45.67.890"] 
    [123.45.67.890] executing command 
** [out :: 123.45.67.890] tar: 20110603143429/.autotest: time stamp 2011-06-03 14:34:33 is 368.72042712 s in the future 
** [out :: 123.45.67.890] tar: 20110603143429/.bundle: time stamp 2011-06-03 14:34:33 is 368.719540808 s in the future 
** [out :: 123.45.67.890] tar: 20110603143429/.hgignore: time stamp 2011-06-03 14:34:33 is 368.719465444 s in the future 
** [out :: 123.45.67.890] tar: 20110603143429/app: time stamp 2011-06-03 14:34:34 is 369.719382175 s in the future 

** [out :: 123.45.67.890] tar: 20110603143429: time stamp 2011-06-03 14:34:49 is 383.369448435 s in the future 
    command finished in 1616ms 
    * executing `deploy:finalize_update' 
    * executing "chmod -R g+w /home/blah/releases/20110603143429" 
    servers: ["123.45.67.890"] 
    [123.45.67.890] executing command 
    command finished in 193ms 
    * executing "rm -rf /home/blah/releases/20110603143429/log /home/blah/releases/20110603143429/public/system /home/blah/releases/20110603143429/tmp/pids &&\\\n  mkdir -p /home/blah/releases/20110603143429/public &&\\\n  mkdir -p /home/blah/releases/20110603143429/tmp &&\\\n  ln -s /home/blah/shared/log /home/blah/releases/20110603143429/log &&\\\n  ln -s /home/blah/shared/system /home/blah/releases/20110603143429/public/system &&\\\n  ln -s /home/blah/shared/pids /home/blah/releases/20110603143429/tmp/pids" 
    servers: ["123.45.67.890"] 
    [123.45.67.890] executing command 
    command finished in 257ms 
    * executing "find /home/blah/releases/20110603143429/public/images /home/blah/releases/20110603143429/public/stylesheets /home/blah/releases/20110603143429/public/javascripts -exec touch -t 201106031435.03 {} ';'; true" 
    servers: ["123.45.67.890"] 
    [123.45.67.890] executing command 
    command finished in 1911ms 
    triggering after callbacks for `deploy:update_code' 
    * executing `bundle:install' 
    * executing "ls -x /home/blah/releases" 
    servers: ["123.45.67.890"] 
    [123.45.67.890] executing command 
    command finished in 140ms 
    * executing "bundle install --gemfile /home/blah/releases/20110603143429/Gemfile --path /home/blah/shared/bundle --deployment --quiet --without development test" 
    servers: ["123.45.67.890"] 
    [123.45.67.890] executing command 
** [out :: 123.45.67.890] sh: bundle: not found 
    command finished in 158ms 
*** [deploy:update_code] rolling back 
    * executing "rm -rf /home/blah/releases/20110603143429; true" 
    servers: ["123.45.67.890"] 
    [123.45.67.890] executing command 
    command finished in 261ms 
failed: "sh -c 'bundle install --gemfile /home/blah/releases/20110603143429/Gemfile --path /home/blah/shared/bundle --deployment --quiet --without development test'" on 123.45.67.890 

Respuesta

5

Parece que tiene clock-skew. Todas las computadoras involucradas en el proceso: ¿las que se comprometen, las que envían y las que reciben/despliegan sincronizadas?

+0

Los servidores de preparación/producción que despliego están en una zona horaria diferente a la de mi máquina local, pero así es como siempre ha sido. Capistrano tiene en cuenta las diferencias de zona horaria, ¿no? –

+0

Estoy seguro de que tiene en cuenta las zonas horarias, pero todavía puede tener sesgo de reloj. Si uno piensa que son las 8:01 del este y el otro cree que son las 7:02 centrales, tiene un reloj de bolsillo. –

+1

Este fue el problema para mí. El reloj de mi máquina estaba ganando tiempo. Mostraba la fecha de 10 minutos en el futuro. Ejecute 'date' en su máquina local y luego SSH en su servidor y ejecute' date' allí. Si compara las salidas y nota un desplazamiento mayor, puede sincronizar sus relojes con, por ejemplo, NTP: '$ sudo ntpdate -s time.nist.gov' – amoebe

Cuestiones relacionadas