Eu estou tendo um tempo horrível para obter um software para compilar em uma caixa do CentOS, e o problema que listei abaixo é específico, mas eu espero que a abordagem correta que vem do problema seja aquela que pode ser aplicado a problemas semelhantes, pois isso não parece ser específico para apenas este software. Chegando ao ponto embora ...
Eu estive preso com um problema de compilação ao construir uma máquina virtual padronizada no CentOS 5.4, e eu estou no escuro aqui a respeito de a) por que esse erro está ocorrendo eb) como corrigi-lo e a esperança de que alguém tropeça nesse problema também, espero que alguém possa me ajudar a encontrar a solução aqui.
Estou recebendo um erro configure: error: newly created file is older than distributed files!
ao tentar compilar o Ruby Enterprise como abaixo, quando tento executar o instalador e as soluções oferecidas nos fóruns (de verificar o dente e tocar nos arquivos para atualizar o tempo associados a eles) não parecem estar ajudando aqui.
Que passos posso dar para descobrir qual a causa deste 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 required 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
Esta é uma máquina virtual em execução no VirtualBox, e a hora do host e da máquina virtual são idênticas e atualizadas. Eu também tentei executar isso depois de atualizar o tempo com um cliente ntp, então não adiantou. Eu tentei isso depois de ler este post aqui de alguém tendo um problema semelhante
[vagrant@vagrant-centos-5 ruby-enterprise-1.8.7-2009.10]$ date
Tue Apr 27 08:09:05 BST 2010
A outra abordagem que tentei é tocar no nível superior dos arquivos na pasta de compilação como sugerido aqui , mas isso também não funcionou (para ser honesto, não sei por que teria funcionado também)
[vagrant@vagrant-centos-5 ruby-enterprise-1.8.7-2009.10]$ sudo touch ruby-enterprise-1.8.7-2009.10/*
Não tenho certeza do que posso fazer a seguir aqui - o problema parece ser o script de configuração bash que retorna este erro error: newly created file is older than distributed files!
, na linha: 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 considered "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
o que torna isso realmente frustrante é que esse script funciona algumas vezes, quando a VM está em funcionamento há uma hora ou mais, mas não na inicialização. Não há nada que eu veja no crontab que sugira que quaisquer tarefas por hora sejam executadas, o que pode mudar o estado do sistema, o suficiente para fazer a diferença para esse script funcionar.
Eu estou totalmente em uma perda quando se trata de depuração além daqui. Qual é a melhor abordagem para levar aqui?
Obrigado