Code Monkey home page Code Monkey logo

rapache's People

Contributors

brianbolt avatar donkang75 avatar jeffreyhorner avatar jeroen avatar viking avatar zippy1981 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rapache's Issues

rApache notice! *** stack smashing detected *** with mailR::send_mail

To reproduce, get rApache to run a script with the following:

mailR::send.mail(
         from = '',
          to = "",
          replyTo = "",
          subject = "Subject of the email",
          body = "Body of the email",
          smtp = list(host.name = '',
                      port = 25,
                      user.name = '',
                      passwd = '',
                      ssl = TRUE),
          authenticate = TRUE,
          send = TRUE)

To get Amazon SES credentials (what I used) go here.
You'll have to verify an email address for to, replyTo, and from (can all be the same) here.

mailR uses rJava so you may have to edit /etc/apache2/envvars as described in #47.

I personally got around the issue by using the aws.ses package instead, but thought it might be useful to post the issue in case it has broader implications.

receiveBin argument doesn't work

The length argument from receiveBin causes trouble for any value other than -1. To test, a simple script like:

print(rawToChar(receiveBin(-1)))

Then use curl:

jeroen@Ubuntu:/var/www/R$ curl http://localhost/R/testbin -d 'blabla' -H "Content-Type: text"
[1] "blabla"

All is good. Now we change the script:

print(rawToChar(receiveBin(1024)))

Then in curl:

jeroen@Ubuntu:/var/www/R$ curl http://localhost/R/testbin -d 'blabla' -H "Content-Type: text"
[1] "(\xab\001\r;\177"

try again

jeroen@Ubuntu:/var/www/R$ curl http://localhost/R/testbin -d 'blabla' -H "Content-Type: text"
[1] "\001

Try again

jeroen@Ubuntu:/var/www/R$ curl http://localhost/R/testbin -d 'blabla' -H "Content-Type: text"
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal 

Empty warnings in error.log

After updating to rApache 1.2.5, almost all of the redundant messages are gone from the apache error.log. However, there is still one problem remaining: a bunch of errors with an empty error message:

[Mon Dec 23 18:23:25 2013] [error] [client 131.179.144.170] rApache Notice!, referer: https://public.opencpu.org/ocpu/library/stocks/www/
[Mon Dec 23 18:23:28 2013] [error] [client 131.179.144.170] rApache Notice!, referer: https://public.opencpu.org/ocpu/library/rollcorr/www/
[Mon Dec 23 18:23:30 2013] [error] [client 131.179.144.170] rApache Notice!, referer: https://public.opencpu.org/ocpu/library/markdownapp/www/
[Mon Dec 23 18:23:45 2013] [error] [client 131.179.144.170] rApache Notice!, referer: https://public.opencpu.org/ocpu/library/mapapp/www/

Bunch more of such. Any idea where they are coming from and how to get rid of them? They seem to appear only for POST, with content-type application/json, so it's probably related to apreq/receiveBin.

cookies

Is it correct that rapache only allows specification of one cookie using setCookie? I tried adding a couple of them in a single script:

setCookie("foo", "bar");
setCookie("baz", "zoo");

but I only get to see the last one.

According to http://tools.ietf.org/html/rfc6265: "An origin server can include multiple Set-Cookie header fields in a single response."

Question: concurrent requests?

I understand that R is single-threaded and it does not support concurrent requests. This is the same issue when we use rplumber:

R is a single-threaded programming language, meaning that it can only do one task at a time. This is still true when serving APIs using Plumber, so if you have a single endpoint that takes two seconds to generate a response, then every time that endpoint is requested, your R process will be unable to respond to any additional incoming requests for those two seconds.

What about rapache? Does it support concurrent requests? Can I use rapache as a server for rplumber?

Rapache fail to execute R script occasionally

Hi
I am using v 1.2.5. I am doing a simple POST to the RApache and trying to run a R script. sometime it does return the result correctly, sometime it doesn't rather return following:
"replacement has 1 row, data has 0"

To verify, I have ran the exact same R script directly under R command line, there was not any issue.

Here is my system info:
sysname Linux
release 3.11.0-23-generic
version #40~precise1-Ubuntu SMP Wed Jun 4 22:06:36 UTC 2014
nodename vb12
machine x86_64
login unknown
user www-data
effective_user www-data

Here is my R info:
platform x86_64-pc-linux-gnu
arch x86_64
os linux-gnu
system x86_64, linux-gnu
status
major 3
minor 1.0
year 2014
month 04
day 10
svn rev 65387
language R
version.string R version 3.1.0 (2014-04-10)
nickname Spring Dance

Please help me in this regards. Thanks.

Integer overflow for posts over 1GB

When using receiveBin() (with no arguments) on a payload larger than 1GB:

Error in receiveBin() :
  'Realloc' could not re-allocate memory (18446744071562067968 bytes)

Looks like an integer overflow happens at mod_R.c#L2438. I think we should switch to R_xlen_t n = xlength(x) to support long vectors?

Missing script returns a 500 error. instead of a 404

If I call to a non existent R script I get a 500 error instead of a 404 error. The rscript handler shouldn't process non-existant scripts.

My conf:

# rapache configuration by Justin Dearing <[email protected]>
LoadModule R_module modules/mod_R.so

<Location /RApacheInfo>
        SetHandler r-info
</Location>

AddHandler r-script .R
RHandler sys.source

Variable to check if POST body has been parsed already by libapreq

Related to #21. So I was getting a lot of warnings:

Can't read with R since libapreq already started![Sat Dec 21 13:21:15 2013] [error] [client 131.179.144.170] rApache Notice!

I think the problem here was that the application tried to call receiveBin() even though the POST body had already been parsed by libapreq. Instead of suppressing these warnings, it would be better to give the application a way to avoid calling receiveBin() when not needed.

Is there any way the application can detect whether or not the POST payload has already been parsed by libapreq? So then I can make sure to only call receiveBin() if this is not the case.

rApache on Centos 6.6 with apache 2.4

Jeff,
Do you have any tip on how to build rApache to work with apache 2.4? I just upgraded to 2.4 to have support for webSockets, but when I try to start httpd24 I get the following.

$ sudo service httpd24-httpd restart

Stopping httpd:                                            [FAILED]
Starting httpd: httpd: Syntax error on line 57 of /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf: Syntax error on line 2 of /opt/rh/httpd24/root/etc/httpd/conf.modules.d/99-rapache.conf: Cannot load /etc/httpd/modules/mod_R.so into server: /etc/httpd/modules/mod_R.so: undefined symbol: ap_log_rerror
                                                           [FAILED]

The server starts all right if I remove 99-rapache.conf and 00-rapache.conf.
Thanks a lot! --Mel.

http://localhost/RApacheInfo.html not working

I have followed the instructions, built and installed R with shared library support, built and installed Apache with prefork and mod_so support, built and installed RApache as per the instructions. Included LoadModule line for R_module (at the start of config file). I am trying to test the RApacheInfo (I included this in apache config) but it says the requested URL was not found. Could you help me on how to debug where is the problem?

It looks like the requests are not reaching the R_module. How can I debug this?

Installing RApache in Ubuntu 16.04 Apache/2.4.18 (Ubuntu): I get some errors

Hi Jeffrey,

I am trying to install RApache in Ubuntu 16.04 Apache/2.4.18 (Ubuntu) but I get some errors:

1- First when i install some packages:

sudo apt-get install apache2-prefork-dev apache2-mpm-prefork libapreq2-dev r-base-dev

I get an error message:

Package apache2-mpm-prefork is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source

E: Unable to locate package apache2-prefork-dev E: Package 'apache2-mpm-prefork' has no installation candidate

When I try

debuild -us -uc

I get the message:

This package has a Debian revision number but there does not seem to be an appropriate original tar file or .orig directory in the parent directory; (expected one of libapache2-mod-r-base_1.2.8.orig.tar.gz, libapache2-mod-r-base_1.2.8.orig.tar.bz2, libapache2-mod-r-base_1.2.8.orig.tar.lzma, libapache2-mod-r-base_1.2.8.orig.tar.xz or rapache.orig) continue anyway? (y/n)

I decide for yes but it does not work, I get:

dpkg-buildpackage -rfakeroot -D -us -uc dpkg-buildpackage: warning: using a gain-root-command while being root dpkg-buildpackage: source package libapache2-mod-r-base dpkg-buildpackage: source version 1.2.8-xenial0 dpkg-buildpackage: source distribution xenial0 dpkg-buildpackage: source changed by Jeroen Ooms dpkg-source --before-build rapache dpkg-buildpackage: host architecture amd64 dpkg-checkbuilddeps: error: Unmet build dependencies: apache2-dev dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting dpkg-buildpackage: warning: (Use -d flag to override.) debuild: fatal error at line 1376: dpkg-buildpackage -rfakeroot -D -us -uc failed

Is there anybody who can help me please?

I really appreciate any help you can provide.

Roberto

Server protocol variable

Recapture of email conversation.

Currently rapache has no way to determine if the scheme/protocol of a request. This is problematic for redirects with an absolute URL, because it is unclear whether to redirect to a http:// or https:// address. The SERVER$protocol variable always contains HTTP/1.1, both for http and https. Note that apache2 can run both http and https simultaneously, so that this value is request specific.

Also when using Rook on rApache, we need to determine rook.url_scheme. The rook spec says:

SERVER_NAME, SERVER_PORT: When combined with SCRIPT_NAME and PATH_INFO, these variables can be used to complete the URL. Note, however, that HTTP_HOST, if present, should be used in preference to SERVER_NAME for reconstructing the request URL. SERVER_NAME and SERVER_PORT can never be empty strings, and so are always required.

However it does not mention SERVER_PROTOCOL, which is required to reconstruct the request URL. The spec does mention rook.url_scheme, so it assumes any rook implementation runs either http or https, but not both?

RApache passes NULL for empty GET parameters

If you make a GET request with a query string like this: ?foo=&bar=123, Rook's req$GET() returns a list with NULL values in it when running under RApache: list(foo = NULL, bar = "123"). When running in R interactively with Rhttpd, req$GET() returns a list with empty strings: list(foo = "", bar = "123). The behavior is inconsistent.

avoid .rhtml file extension examples

According to /etc/mime.types the .rhtml extention is reserved for eruby applications. As a result, a standard configuration of a recent Apache will automatically default all these pages to:

Content-Type: application/x-httpd-eruby

which will prevent a browser from displaying them properly.

Update RPM spec file version to latest (1.2.8)

Hi! Thanks for providing an rApache RPM! I appreciate your nice note to the community.

I noticed that rapache 1.2.8 has been released but the RPM spec file is still at 1.2.7: https://github.com/jeffreyhorner/rapache/blob/v1.2.8/rpm/rapache.spec#L2

I was just building a new rApache RPM for CentOS 7 over at IQSS/dataverse#3208 and would have used rapache 1.2.8 if the spec file had been updated. Instead I built version 1.2.7.

Can the RPM spec file version please be increased to 1.2.8? I figure we should probably use the latest and greatest. Thanks!

Process or memory?

Does R remain memory resident or is it loaded for each request?

If the former, is it possible to load a dataset once in memory and then perform some work on it for each request?

RInfo handler not working on R version 4.1.1 (2021-08-10)

When navigation to the "SetHandler r-info" handler, apache throws the following in the error logs:

[Thu Oct 21 21:08:15.133206 2021] [:error] [pid 11] [client 172.17.0.1:59310] rApache Notice!
Error in textConnection("stt", "w") :
cannot change value of locked binding for 'stt'
In addition: Warning messages:
1: In is.na(st) :
is.na() applied to non-(list or vector) of type 'closure'
2: In is.na(st) :
is.na() applied to non-(list or vector) of type 'closure'

Seems to be coming from mod_R.c

It worked in a previous version of R(3.1.#)

superfluous warnings?

The OpenCPU error.log is filled with thousands of these:

No apreq2 parser for 'application/json'
No apreq2 parser for 'application/json'
[Sat Dec 21 13:17:43 2013] [error] [client 131.179.144.170] rApache Notice!, referer: http://slidify.github.io/playground/
No apreq2 parser for 'application/json'
[Sat Dec 21 13:20:25 2013] [error] [client 131.179.144.170] rApache Notice!
Can't read with R since libapreq already started![Sat Dec 21 13:20:25 2013] [error] [client 131.179.144.170] rApache Notice!
Can't read with R since libapreq already started![Sat Dec 21 13:20:39 2013] [error] [client 131.179.144.170] rApache Notice!, referer: http://slidify.github.io/playground/
No apreq2 parser for 'application/json'
[Sat Dec 21 13:21:14 2013] [error] [client 131.179.144.170] rApache Notice!
Can't read with R since libapreq already started![Sat Dec 21 13:21:15 2013] [error] [client 131.179.144.170] rApache Notice!
Can't read with R since libapreq already started![Sat Dec 21 13:25:08 2013] [error] [client 131.179.144.170] rApache Notice!, referer: http://rcharts.io/playground/

So there are two warnings here. One is

 No apreq2 parser for 'application/json'

This is expected; the application is manually parsing input using receiveBin(). Can we make an option to suppress these warnings?

The other one i'm less certain about:

Can't read with R since libapreq already started![Sat Dec 21 13:20:39 2013] [error]

It seems to be related to the other warning. Can we ignore this one as well?

Installation error

Installation method 1

+:~$ sudo apt-get install libapache2-mod-r-base
+:~$ sudo apt-get install devscripts git
+:~$ sudo apt-get install apache2-prefork-dev apache2-mpm-prefork libapreq2-dev r-base-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
-E: Unable to locate package apache2-prefork-dev
-E: Unable to locate package apache2-mpm-prefork

Installation method 2

+:~$ sudo add-apt-repository ppa:opencpu/rapache
 
 More info: https://launchpad.net/~opencpu/+archive/ubuntu/rapache
!Press [ENTER] to continue or Ctrl-c to cancel adding it.

Get:1 file:/var/cuda-repo-ubuntu2004-11-3-local  InRelease
Ign:1 file:/var/cuda-repo-ubuntu2004-11-3-local  InRelease
...
...
...
-Err:36 http://ppa.launchpad.net/opencpu/rapache/ubuntu focal Release
-  404  Not Found [IP: 2001:67c:1560:8008::19 80]
Reading package lists... Done
-E: The repository 'http://ppa.launchpad.net/opencpu/rapache/ubuntu focal Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

Reference :

HTTP 302

I was wondering if anyone knows a way to do a HTTP redirect in rApache. In order to do a http redirect, the response needs to have HTTP status 302, with a header "Location" that defines the url. However, because of how rApache works, once you set the header you can no longer modify the status code. E.g:

setHeader("Location", "http://www.google.com");
return(HTTP_MOVED_TEMPORARILY)

won't work because it returns a HTTP 200 OK. Any smart suggestions for a workaround? I am currently using a HTML redirect, but that is suboptimal and won't work on non-browser clients.

Ability to kill the apache process from an R script?

Hi there -

We're working on integrating rApache in such a way that we can configure and launch instances of it with user provided code. The rub is, we ideally want the ability to kill the Apache process from some R code if some sanity checks fail. Is this possible or even possible to be implemented?

microsoft r open

Hi,
Is it possible to install rapache using microsoft r open instead of R-devel? Currently I get errors about R-devel requirements.

Thanks

Rapache is not able to fetch the request when RGoogleAnalytics package is used

we are getting the strange issue when we use RGoogleAnalytics in the RApache code.

ISSUE : unable to get the request ( post/get) parameters into the Apache server occasionally, except RGoogleAnalytics package the code is working fine for all the packages.

Form Code
form

RApache Code in brew
rapachecode

*ERROR *
function (url = NULL, config = list(), ..., body = NULL, encode = c("multipart",
"form", "json"), multipart = TRUE, handle = NULL)

we have installed RApache in centos 6

please suggest us how to proceed.

thanks&regards,
mallik.

Incorrect flag name

In the README, I think:
--with-apache2-apxs=/path/to/apxs
should be
--with-apxs=/path/to/apxs

Compiler warnings

On Debian Jessie:

mod_R.c: In function 'RApache_getServer':
mod_R.c:2125:4: warning: implicit declaration of function 'ap_get_server_port' [-Wimplicit-function-declaration]
    INTMBR("port",ap_get_server_port(MR_Request.r));

On Fedora 21:

od_R.c: In function 'ReadRequestBody':
mod_R.c:792:41: warning: pointer targets in passing argument 2 of 'apr_brigade_flatten' differ in signedness [-Wpointer-sign]
       rv = apr_brigade_flatten(MR_BBin, buf+bpos, &len);
                                         ^
In file included from /usr/include/httpd/httpd.h:55:0,
                 from mod_R.c:39:
/usr/include/apr-1/apr_buckets.h:749:27: note: expected 'char *' but argument is of type 'unsigned char *'
 APU_DECLARE(apr_status_t) apr_brigade_flatten(apr_bucket_brigade *bb,
                           ^
mod_R.c:764:16: warning: unused variable 'data' [-Wunused-variable]
    const char *data;
                ^
mod_R.c: In function 'OnStartupCallback':
mod_R.c:1479:9: warning: variable 'val' set but not used [-Wunused-but-set-variable]
    SEXP val;
         ^
mod_R.c: In function 'RApache_setCookie':
mod_R.c:1802:40: warning: unused variable 'cookies' [-Wunused-variable]
    const char *name, *value, *cookie, *cookies;
                                        ^
mod_R.c: In function 'RApache_getServer':
mod_R.c:2125:4: warning: implicit declaration of function 'ap_get_server_port' [-Wimplicit-function-declaration]
    INTMBR("port",ap_get_server_port(MR_Request.r));
    ^
mod_R.c: In function 'dirname':
mod_R.c:1106:20: warning: 'j' may be used uninitialized in this function [-Wmaybe-uninitialized]
    return (j > 0)? apr_pstrndup(p,path,j) : NULL;
                    ^
In file included from /usr/include/R/R.h:50:0,
                 from mod_R.c:71:
mod_R.c: In function 'RApache_receiveBin':
/usr/include/R/R_ext/RS.h:64:25: warning: 'buf' may be used uninitialized in this function [-Wmaybe-uninitialized]
 #define Free(p)        (R_chk_free( (void *)(p) ), (p) = NULL)
                         ^
mod_R.c:2406:19: note: 'buf' was declared here
    unsigned char *buf;
                   ^
mod_R.c: In function 'RApache_setCookie':
mod_R.c:1830:60: warning: 'tmpExpires' may be used uninitialized in this function [-Wmaybe-uninitialized]
       apr_time_ansi_put(&texpires,(time_t)(REAL(tmpExpires)[0]));

rApache not reading ldpaths

Running Ubuntu 16.04 with r-cran-java. Loading rJavain the console works fine, but when loading it inside rApache on the same machine gives:

 .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/usr/lib/R/site-library/rJava/libs/rJava.so':
  libjvm.so: cannot open shared object file: No such file or directory

I think /usr/bin/R sources /usr/lib/R/etc/ldpaths which sets LD_LIBRARY_PATH to the path where libjvm.so lives (i.e. ${JAVA_HOME}/jre/lib/amd64/server) before starting the repl.

What would be the most natural way to do this accomplish the same thing in rapache? The problem is that ldpaths is a shell script which sets an environment variable, so calling this via system() does not work because that sets the LD_LIBRARY_PATH only in the system() subprocess.

make itest failed .

error: fda8e12cca707aeb4b33ef2b86c0b226d89895f4

On an azure VM runing the latest ubuntu. Version details:

rapache@RBuntu:~/src/rapache$ apache2 -v
Server version: Apache/2.4.6 (Ubuntu)
Server built:   Dec  5 2013 18:32:22
rapache@RBuntu:~/src/rapache$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=13.10
DISTRIB_CODENAME=saucy
DISTRIB_DESCRIPTION="Ubuntu 13.10"
rapache@RBuntu:~/src/rapache$ apache2 -v
Server version: Apache/2.4.6 (Ubuntu)
Server built:   Dec  5 2013 18:32:22
rapache@RBuntu:~/src/rapache$

This problem occurs in the current master, as well as fda8e12, before I made the improvements to itest. I'll investigate, if no one has a quick fix. I assume that they switched default mpm module.

Info handler broken

Using

<Location /RApacheInfo>
    SetHandler r-info
</Location>

on recent versions of Fedora and CentOS gives:

Error in if (is.na(st)) return("NA") : argument is of length zero
In addition: Warning message:
In is.na(st) : is.na() applied to non-(list or vector) of type 'closure'

make itest assumes mod_log_config is compiled in.

I built rapache on Centos against httpd-2.2.15 and R 3.0.2. I went to run make itest ant I got the following

LD_LIBRARY_PATH=/usr/bin/R RHOME/lib:/home/jdearing/src/rapache/libapreq2/library/.libs R_HOME=/usr/bin/R RHOME /usr/sbin/httpd -X -f /home/jdearing/src/rapache/test/httpd.conf
Syntax error on line 160 of /home/jdearing/src/rapache/test/httpd.conf:
Invalid command 'LogFormat', perhaps misspelled or defined by a module not included in the server configuration
make: *** [itest] Error 1

The fix was to add the following line: LoadModule log_config_module /usr/lib64/httpd/modules/mod_log_config.so

I don't know if Apache can determine if a module exists, but m4 probably can. I'll work on submitting a patch that work work in a general case.

receiveBin does not work

When the request content-type is other than multipart/form-data or application/x-www-form-urlencoded, the request body cannot be parsed automatically. In this case, apache2 writes a message to the error.log saying:

No apreq2 parser for 'application/json'

We then need to use receiveBin function to read the request-body within R, but it is not working correctly. First of all, the SERVER variables that specify the size of the request body are never set, they are always 0:

$clength
[1] 0

$remaining
[1] 0

$read_length
[1] 0

Also if we just use a large value, say, receiveBin(1e8), it never seems to read more than 8000 bytes. To reproduce, simply create an R script like:

print(SERVER)
body <- receiveBin(1e6);
cat("Body Length:\n")
print(length(body));

And access it with curl. So the basic idea works:

curl http://localhost/R/test -d "foobar" --header "Content-Type:application/json"

To test with a large request body, simply upload some random file

curl http://localhost/R/test -d @somefile.pdf --header "Content-Type:application/json"

See also this topic

SetEnv does not work with rApache

I would like to use the SetEnv directive from mod_env (included in apache2 base) to pass environment variables to rApache. In particular, I would like to set R_ENVIRON_USER and R_PROFILE_USER before initiating R as described in the Startup manual.

<Directory /var/www/R-files>
    SetEnv R_PROFILE_USER /etc/rapache/Rprofile
    SetEnv R_ENVIRON_USER /etc/rapache/Renviron 
    SetHandler r-script
    RHandler sys.source
</Directory>

However no matter where in the apache config the SetEnv is defined, the environment variable is not accessible from R. From my debugging it looks as if rApache initiates the R process before SetEnv can do its job.

Setting UTF-8

Using Rapache (1.2.5) I am trying to read an excel file with a ฮ” character in it. I then write the content back out to csv but end up with "<U+0394>". I found that if I ran the line below before my code, then the csv would get the correct ฮ” character.

Sys.setlocale("LC_ALL", "en_US.utf8")

I came across this old post that I don't think answers the question:
http://stackoverflow.com/questions/20577764/set-locale-to-system-default-utf-8

I am wondering what the best way is to set UTF-8 instead of "C" on an rapache server (given I may use Ubuntu, Centos and other linux flavors).

Thanks,
Brian

arm64 compilation

I got a new M1 Mac and tried to compile an rapache docker image using buildx build --platform linux/arm64/v8 and hit the following error when building:

#7 3.603 rapache-master/tools/install-sh
#7 3.604 rapache-master/tools/ltmain.sh
#7 3.605 rapache-master/tools/missing
#7 3.677 checking for a BSD-compatible install... /usr/bin/install -c
#7 3.684 checking whether build environment is sane... yes
#7 4.713 checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
#7 4.716 checking for gawk... gawk
#7 4.717 checking whether make sets $(MAKE)... yes
#7 4.738 checking whether to enable maintainer-specific portions of Makefiles... no
#7 4.749 checking build system type... tools/config.guess: unable to guess system type
#7 4.814 
#7 4.814 This script, last modified 2009-06-10, has failed to recognize
#7 4.814 the operating system you are using. It is advised that you
#7 4.814 download the most up to date version of the config scripts from
#7 4.814 
#7 4.814   http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
#7 4.814 and
#7 4.814   http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
#7 4.814 
#7 4.814 If the version you run (tools/config.guess) is already up to date, please
#7 4.814 send the following data and any information you think might be
#7 4.814 pertinent to <[email protected]> in order to provide the needed
#7 4.814 information to handle your system.
#7 4.814 
#7 4.814 config.guess timestamp = 2009-06-10
#7 4.814 
#7 4.814 uname -m = aarch64
#7 4.814 uname -r = 5.10.76-linuxkit
#7 4.814 uname -s = Linux
#7 4.814 uname -v = #1 SMP PREEMPT Mon Nov 8 11:22:26 UTC 2021
#7 4.814 
#7 4.814 /usr/bin/uname -p = aarch64
#7 4.814 /bin/uname -X     = 
#7 4.814 
#7 4.814 hostinfo               = 
#7 4.814 /bin/universe          = 
#7 4.814 /usr/bin/arch -k       = 
#7 4.814 /bin/arch              = aarch64
#7 4.814 /usr/bin/oslevel       = 
#7 4.814 /usr/convex/getsysinfo = 
#7 4.814 
#7 4.814 UNAME_MACHINE = aarch64
#7 4.814 UNAME_RELEASE = 5.10.76-linuxkit
#7 4.814 UNAME_SYSTEM  = Linux
#7 4.814 UNAME_VERSION = #1 SMP PREEMPT Mon Nov 8 11:22:26 UTC 2021
#7 4.817 configure: error: cannot guess build type; you must specify one

I believe its caused by outdated versions of these files:
config.guess
config.sub

Here is the docker file:

FROM quay.io/centos/centos:stream8


RUN \
  dnf update -y && \
  dnf upgrade -y && \
  dnf install -y epel-release && \
  dnf config-manager --set-enabled powertools && \
  dnf builddep -y R-devel

ENV R_VERSION 4.1.2
RUN \
    dnf install -y make cmake httpd-devel libapreq2-devel redhat-rpm-config wget tar && \
    curl -O https://cran.rstudio.com/src/base/R-4/R-${R_VERSION}.tar.gz && \
    tar -xzvf R-${R_VERSION}.tar.gz && \
    cd R-${R_VERSION} && \
    ./configure \
        --prefix=/opt/R/${R_VERSION} \
        --enable-memory-profiling \
        --enable-R-shlib \
        --with-blas \
        --with-lapack && \
    make && \
    make install

RUN ln -s /opt/R/${R_VERSION}/bin/R /usr/local/bin/R
RUN ln -s /opt/R/${R_VERSION}/bin/Rscript /usr/local/bin/Rscript

RUN \
  dnf install -y MTA mod_ssl /usr/sbin/semanage && \
  cd ~ && \
  wget https://github.com/jeffreyhorner/rapache/archive/master.tar.gz -O rapache-master.tar.gz && \
  tar xzvf rapache-master.tar.gz && \
  cd rapache-master && \
  ./configure \
    --with-R=/usr/local/bin/R\
    --with-apreq2-config=/usr/bin/apreq2-config && \
  make && \
  make install

apache2-mpm-itk

In the debian/control file, please add apache2-mpm-itk as an alternative to apache2-mpm-prefork in the Depends and Build-depends fields. I tested it, and it works perfectly. Not having the field there creates conflicts on systems that have apache2-mpm-itk in use.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.