{"id":131257,"date":"2011-06-05T20:07:00","date_gmt":"2011-06-05T19:07:00","guid":{"rendered":"http:\/\/www.madrimasd.org\/blogs\/bioinformatica\/?p=131257"},"modified":"2011-06-05T20:07:00","modified_gmt":"2011-06-05T19:07:00","slug":"instalando-rsperl-e-intentando-no-morir-en-el-intento","status":"publish","type":"post","link":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/2011\/06\/05\/131257","title":{"rendered":"Instalando RSPerl (e intentando no morir en el intento)"},"content":{"rendered":"<p><a href=\"http:\/\/www.omegahat.org\/RSPerl\/\" target=\"_blank\">RSPerl<\/a> es un paquete que intenta tender un puente bidireccional entre <a href=\"http:\/\/www.perl.org\/\" target=\"_blank\"> Perl<\/a> y <a href=\"http:\/\/www.r-project.org\/\" target=\"_blank\">R<\/a>, de forma que desde un programa escrito en Perl se pueda llamar  funciones de R, y desde un programa en R se puedan usar c\u00f3digo y  m\u00f3dulos de Perl. Suena como un sue\u00f1o, \u00bfno?<\/p>\n<p>Mi compa\u00f1era de trabajo Kristina estuvo hace unos d\u00edas intentando instalar <a title=\"RSPerl\" href=\"http:\/\/www.omegahat.org\/RSPerl\/\" target=\"_blank\">RSPerl<\/a> en la \u00faltima versi\u00f3n disponible de <a title=\"Ubuntu Website\" href=\"http:\/\/www.ubuntu.com\/\" target=\"_blank\">Ubuntu<\/a> (11.04, Natty), pero el instalador no terminaba de funcionar (varios errores). Me piqu\u00e9, e intent\u00e9 hacer lo mismo en un ordenador con <a title=\"Gentoo Website\" href=\"http:\/\/www.gentoo.org\/\" target=\"_blank\">Gentoo<\/a>, y me daba errores diferentes&#8230; Como esto empezaba a parecerse a un Expediente X, con lo aprendido he decidido escribir esta entrada de blog, para que si ten\u00e9is la necesidad <strong>imperiosa<\/strong> de instalar este paquete, no os tropec\u00e9is con los mismos muros.<\/p>\n<p>Lo primero de todo es que la \u00faltima <em>release<\/em> de RSPerl es antediluviana (0.92-1 del 2 de Agosto de 2007, casi 4 a\u00f1os), lo que indica que no est\u00e1 siendo mantenido. Para m\u00e1s INRI desde entonces ha llovido mucho en el lado de Perl. Es un milagro que el paquete todav\u00eda funcione, teniendo en cuenta que este paquete compila una extensi\u00f3n nativa al ser instalado. Personalmente recomiendo usar directamente llamadas a <a title=\"R website\" href=\"http:\/\/www.r-project.org\/\" target=\"_blank\">R<\/a> o Rscript (<a href=\"http:\/\/cran.r-project.org\/doc\/contrib\/Lemon-kickstart\/kr_scrpt.html\" target=\"_blank\">aqu\u00ed ten\u00e9is un tutorial para iniciaros en el <em>scripting<\/em> en R<\/a>), o desde el lado de Perl usar el paquete <a title=\"Statistics::R\" href=\"http:\/\/search.cpan.org\/~bricas\/Statistics-R\/lib\/Statistics\/R.pm\" target=\"_blank\">Statistics::R<\/a>, que s\u00ed que est\u00e1 siendo mantenido y no tiene tantas dependencias.<\/p>\n<p>Para Ubuntu, sobre el papel las precondiciones son instalar los paquetes de Ubuntu <em>libperl-dev<\/em>, <em>r-base<\/em> y <em>r-base-dev<\/em>, ya sea mediante <a href=\"http:\/\/www.nongnu.org\/synaptic\/\" target=\"_blank\">Synaptic<\/a> o por l\u00ednea de comandos con <em>apt-get install<\/em>. Una vez instalados los paquetes, siguiendo las instrucciones de la <a href=\"http:\/\/www.omegahat.org\/RSPerl\/\" target=\"_blank\">p\u00e1gina de RSPerl<\/a> todo deber\u00eda funcionar&#8230; pero aqu\u00ed nos tropezamos con la realidad. Siguiendo los mismos pasos en distintas instalaciones similares (pero no iguales) de Ubuntu 11.04, en unas funcionaba y en otras daba errores dif\u00edciles de descifrar (y de resolver).<\/p>\n<p>Intentando instalar RSPerl en Gentoo descubr\u00ed adem\u00e1s que el siguiente problema lo vais a tener si intent\u00e1is instalar RSPerl en una m\u00e1quina UNIX o Linux con Perl 5.12 (o superior):<\/p>\n<blockquote><p>i686-pc-linux-gnu-gcc -std=gnu99 -I\/usr\/lib\/R\/include -I.\u00a0 -fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64\u00a0 -I\/usr\/lib\/perl5\/5.12.3\/i686-linux\/CORE\u00a0 -DPERL_POLLUTE\u00a0\u00a0 -D_R_=1 -DUSE_R=1 -DUSE_TOPLEVEL_EXEC=1 -DWITH_R_IN_PERL=1 -I\/usr\/local\/include\u00a0\u00a0\u00a0 -fpic\u00a0 -march=core2 -O2 -fomit-frame-pointer -falign-functions=64 -pipe -c Converters.c -o Converters.o<br \/>\nConverters.c: In function &#8216;PerlAddHomogeneousElement&#8217;:<br \/>\nConverters.c:1056: error: duplicate case value<br \/>\nConverters.c:1041: error: previously used here<br \/>\nmake: *** [Converters.o] Error 1<\/p><\/blockquote>\n<p>La compilaci\u00f3n del m\u00f3dulo nativo de RSPerl falla en Perl 5.12.x (o superior) porque con la versi\u00f3n 5.12 cambi\u00f3 el manejo interno de los punteros en Perl (y por ello salta el error de <em>duplicate case value<\/em> al compilar el paquete). Eso no pasa en las versiones anteriores de Perl (5.10.x, 5.8.x, &#8230;). La soluci\u00f3n de matar moscas a ca\u00f1onazos, cuando es posible, es hacer un desactualizaci\u00f3n a una versi\u00f3n de Perl que sea 5.10.x . Los usuarios de Ubuntu est\u00e1n de suerte todav\u00eda, porque la versi\u00f3n 11.04 a\u00fan lleva un Perl 5.10.x, pero la pr\u00f3xima Ubuntu 11.10 llevar\u00e1 un Perl 5.12.x, as\u00ed que&#8230;<\/p>\n<p>La soluci\u00f3n buena en caso de necesitar impepinablemente RSPerl ser\u00eda parchearlo para que funcionara con Perl 5.12.x, pero por los intentos que he hecho os puedo contar que no son triviales los cambios que hay que introducir. Tambi\u00e9n ser\u00eda un detalle que sacaran una nueva versi\u00f3n de RSPerl, pero como no parece que vaya a ocurrir, la soluci\u00f3n real para llamar a R desde Perl pienso que es la que recomend\u00e9: o usar un m\u00f3dulo alternativo, como por ejemplo <a href=\"http:\/\/search.cpan.org\/~bricas\/Statistics-R\/lib\/Statistics\/R.pm\" target=\"_blank\">Statistics::R<\/a>, o usar llamadas directas a R o Rscript.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>RSPerl es un paquete que intenta tender un puente bidireccional entre Perl y R, de forma que desde un programa escrito en Perl se pueda llamar funciones de R, y desde un programa en R se puedan usar c\u00f3digo y m\u00f3dulos de Perl. Suena como un sue\u00f1o, \u00bfno? Mi compa\u00f1era de trabajo Kristina estuvo hace unos d\u00edas intentando instalar RSPerl en la \u00faltima versi\u00f3n disponible de Ubuntu (11.04, Natty), pero el instalador no terminaba de funcionar (varios errores). Me piqu\u00e9, e intent\u00e9 hacer lo mismo en un ordenador con Gentoo, y me daba errores diferentes&#8230; Como esto empezaba a parecerse\u2026<\/p>\n","protected":false},"author":25,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[1],"tags":[],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":4}},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/posts\/131257"}],"collection":[{"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/comments?post=131257"}],"version-history":[{"count":3,"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/posts\/131257\/revisions"}],"predecessor-version":[{"id":131260,"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/posts\/131257\/revisions\/131260"}],"wp:attachment":[{"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/media?parent=131257"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/categories?post=131257"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.madrimasd.org\/blogs\/bioinformatica\/wp-json\/wp\/v2\/tags?post=131257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}