¿Qué pasos puede tomar para asegurar ambientes de construcción sanos al comstackr el software?

Estoy teniendo un horrible time para get un pedazo de software para comstackr en una caja de CentOS, y el problema que he enumerado a continuación es específico, pero espero que el enfoque correcto que sale de esto es uno que se puede aplicar a problemas similares, ya que esto no parece ser uno que es específico para sólo esta pieza de software. Llegar al punto sin embargo …

He estado atascado con un problema de compilation al build una máquina virtual estandarizada en CentOS 5.4, y estoy en la oscuridad aquí como a) por qué este error está ocurriendo, y b) cómo arreglarlo, y con la esperanza de que alguien tropieza con este problema también, espero que alguien me ayude a encontrar la solución aquí.

Estoy recibiendo un configure: error: newly created file is older than distributed files! error al intentar comstackr Ruby Enterprise como abajo cuando bash funcionar el instalador, y las soluciones ofrecidas a en los foros (de comprobar el tine, y de tocar los files para poner al día el time asociado con ellos) no parecen estar ayudando aquí.

¿Qué pasos puedo tomar para averiguar cuál es la causa de este problema?

 [vagrant@vagrant-centos-5 ruby-enterprise-1.8.7-2009.10]$ sudo ./installer Welcome to the Ruby Enterprise Edition installer This installer will help you install Ruby Enterprise Edition 1.8.7-2009.10. Don't worry, none of your system files will be touched if you don't want them to, so there is no risk that things will screw up. You can expect this from the installation process: 1. Ruby Enterprise Edition will be compiled and optimized for speed for this system. 2. Ruby on Rails will be installed for Ruby Enterprise Edition. 3. You will learn how to tell Phusion Passenger to use Ruby Enterprise Edition instead of regular Ruby. Press Enter to continue, or Ctrl-C to abort. Checking for requinetworking software... * C compiler... found at /usr/bin/gcc * C++ compiler... found at /usr/bin/g++ * The 'make' tool... found at /usr/bin/make * Zlib development headers... found * OpenSSL development headers... found * GNU Readline development headers... found -------------------------------------------- Target directory Where would you like to install Ruby Enterprise Edition to? (All Ruby Enterprise Edition files will be put inside that directory.) [/opt/ruby-enterprise] : -------------------------------------------- Compiling and optimizing the memory allocator for Ruby Enterprise Edition In the mean time, feel free to grab a cup of coffee. ./configure --prefix=/opt/ruby-enterprise --disable-dependency-tracking checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... configure: error: newly created file is older than distributed files! Check your system clock 

Se trata de una máquina virtual que se ejecuta en virtualbox, y la hora del host y la máquina virtual son idénticas y actualizadas. También he intentado ejecutar esto después de actualizar el time con un cliente ntp, por lo que no sirvió. He intentado esto después de leer este post aquí de alguien que tiene un problema similar

 [vagrant@vagrant-centos-5 ruby-enterprise-1.8.7-2009.10]$ date Tue Apr 27 08:09:05 BST 2010 

El otro acercamiento que he intentado es tocar el nivel superior los files en la carpeta de la estructura como sugerido aquí , pero esto no ha trabajado tampoco (una para ser honesto, no estoy seguro de porqué habría trabajado cualquiera)

 [vagrant@vagrant-centos-5 ruby-enterprise-1.8.7-2009.10]$ sudo touch ruby-enterprise-1.8.7-2009.10/* 

No estoy seguro de lo que puedo hacer aquí – el problema parece ser el guión de configuration bash que devuelve este error de error: newly created file is older than distributed files! , en línea: 2214

 { echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considenetworking "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi ### PROBLEM LINE #### # this line is the problem line - this is returned true, sometimes it isn't and I can't # see a pattern that that determines when this will test will pass or not. test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi 

lo que hace esto realmente frustrante es que este script funciona a veces, cuando la VM ha estado funcionando durante una hora o así que funciona, pero no en el arranque. No hay nada que veo en el crontab que sugiera que se ejecuten tareas horarias que puedan cambiar el estado del sistema lo suficiente como para que este script funcione.

Estoy totalmente en una pérdida cuando se trata de depurar más allá de aquí. ¿Cuál es el mejor enfoque para tomar aquí?

Gracias

3 Solutions collect form web for “¿Qué pasos puede tomar para asegurar ambientes de construcción sanos al comstackr el software?”

Hoy he experimentado exactamente este problema en una caja recién instalada mientras instalo ree-1.8.7-2011.03.

Después de configurar ntpd, comprobando el reloj del hardware y excluyendo los problemas reales con el reloj y tima el post de error persistió. Finalmente rastreé este error al directory google-perftools incluido. Después de tocar ese script de configuration , el problema acaba de resolver y Ruby Enterprise Edition instalado sin ningún problema.

 [mark@host347 ~]$ cd src/ree-1.8.7-2011.03/source/ [mark@host347 source]$ touch ./distro/google-perftools-1.7/configure 

La "comprobación de la sanidad de la date" en que la escritura de la shell del arreglo parece borked a mí, necesita la fijación. Mira este:

 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then 

Así que toca un file y luego intenta averiguar si su mtime es más reciente que el mtime de $srcdir/configure , y lo hace invocando ls y luego comparando la salida con una cadena fija. Los autores escriben

  # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considenetworking "sane". 

pero creo que es basura. Hay demasiadas versiones / sabores de ls y maneras de alterar la salida de ls (incluso nombran uno) para estar seguro sobre el formatting de salida de ls .

De todos modos, hay manera más elegante de hacer esto. Por ejemplo, en bash (ver help test ):

 if [ $FILE1 -nt $FILE2 ] ; then echo "$FILE1 is newer than $FILE2" elif [ $FILE2 -nt $FILE1 ] ; then echo "$FILE2 is newer than $FILE1" else echo "$FILE1 and $FILE2 are equally new" fi 

O averiguar si algún mtime es en el futuro directamente!

 find -L $FILE -newermt now -exec echo THE FILE {} IS COMING FROM THE FUTURE \; 

o

 find -L $FILE -mtime -0 -exec echo THE FILE {} IS COMING FROM THE PRESENT OR THE FUTURE \; 

Ahora escriba el parche usted mismo 🙂

Usted no habla mucho sobre el performance del reloj del sistema. En lugar de mirar el problema de compilation, ¿qué tal probar el performance del reloj del sistema? NTP puede ayudar con la deriva del reloj, pero no arreglará algo errático. Si el reloj del hardware se interrumpe, es posible que necesite una nueva placa base. Aquí hay una testing que podría ayudar:

 for i in `seq 1 60` do date sleep 60 done 

Esto debería dar salida a la date exactamente cada minuto. Si la salida no se parece a la siguiente:

  Tue Apr 27 13:33:28 ADT 2010 Tue Apr 27 13:34:28 ADT 2010 Tue Apr 27 13:35:28 ADT 2010 ... 

entonces usted tiene un problema de reloj de hardware. Combatirlo con herramientas como NTP podría no funcionar. El hardware es la mejor solución si tienes un problema de hardware.

  • Cómo utilizar monit para asegurarse de que sólo se ejecuta una instancia de process
  • Carga de dependencies para funciones de títeres personalizadas
  • Configuración de una dirección MAC desde un file para una máquina virtual
  • Amazon Elastic Beanstalk: ¿Cómo personalizar un Ruby AMI?
  • Problemas para instalar grifos de Heroku usando RVM
  • Bundler (o Ruby) mangling requieren paths
  • Solución de foro en Ruby o Python
  • Bucle de redirect de Nginx cuando se utiliza proxy_pass a través de SSL
  • Instalación de networkingmine en ubuntu 10.10
  • Obteniendo "Insecure world writable dir / home / chance" en PATH, modo 040777 para Rails y Gem en Ubuntu 10.10
  • Continuar la installation del Bundler
  • ¿Hay un bash equivalente a "algún contenido # {foo}" con ruby?
  • Cómo arreglar "la installation de Ruby está faltando psych (para la salida YAML)." En CentOS?
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.