2012-09-13 35 views
9

estoy corriendo en un problema cuando se construye el siguiente paquete: https://github.com/yoni/rbundlerrbundler error de compilación: "no puede abrir archivo 'startup.Rs': No existe el fichero o directorio"

Mis test intentos para ejecutar comandos de rbundler bundle en un paquete trivial que tiene una sola dependencia. La prueba pasa en mi máquina OSX, pero falla en mi servidor Jenkins x86_64-redhat-linux-gnu. Ambas máquinas ejecutan R 2.15.1 con devtools 0.7.1, que incluye this bug fix.

La salida de prueba completa se puede encontrar en this gist.

He aquí un breve resumen de error que estoy viendo:

Error in file(filename, "r", encoding = encoding) : 
    cannot open the connection 
Calls: local ... eval.parent -> eval -> eval -> eval -> eval -> source -> file 
In addition: Warning message: 
In file(filename, "r", encoding = encoding) : 
    cannot open file 'startup.Rs': No such file or directory 
Execution halted 

El fondo de esto es que estoy tratando de construir un sistema de gestión de la dependencia para R. La idea es que un R proyecto debería poder ejecutarse sin utilizar bibliotecas de todo el sistema o de todo el usuario. Más bien, el proyecto R tendrá su propia biblioteca instalada en su directorio raíz.

Por mi anterior pregunta desbordamiento de pila relacionada con gestión de la dependencia en R, ver Dependency management in R

Respuesta

5

En mi caso este problema se debía a la variable de entorno R_TESTS que se establece en startup.Rs

Cuando se ejecuta otro proceso R desde dentro de sus pruebas (en mi caso se envía a través del OGS qsub), la presencia de esta variable de entorno causa problemas.

+1

Para realizar un seguimiento, la solución es desarmar la variable con 'Sys.setenv (" R_TESTS "=" ")' –

0

No puedo responder a su pregunta directamente, pero hay dos cosas que puede intentar obtener más información acerca de lo que está sucediendo.

  1. uso 'env' para volcar las variables de entorno en el equipo OSX y el anfitrión Jenkins
  2. ejecutar el proceso a través de strace en Linux y dtruss en OSX para atrapar el sistema llama

strace/dtruss debería revelar los lugares en los que está buscando el inicio. Los resultados de Rs y env probablemente le darán una variable de entorno que difiere entre la contabilidad del sistema para el resultado diferente.

+0

Gracias por las sugerencias de depuración. Originalmente probé # 1 y nunca descubrí el problema. Aún no he probado los rastros del proceso. – yoni

Cuestiones relacionadas