Question

I receive the following error after trying to install ggplot2 which in turn tries to install digest. The session info is pasted below.

sha2.c(88): catastrophic error: #error directive: Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN
#error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN

Has anyone encountered this before?

> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8            LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                  LC_ADDRESS=C                   LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] kernlab_0.9-18   xts_0.9-3        lmtest_0.9-31    sandwich_2.2-10  reshape2_1.2.2   plyr_1.8             zoo_1.7-9        data.table_1.8.8

loaded via a namespace (and not attached):
[1] grid_2.15.2     lattice_0.20-13 stringr_0.6.2   tcltk_2.15.2    tools_2.15.2 
Was it helpful?

Solution

I encountered this and it appears that it happens because your OS headers don't define BYTE_ORDER. I don't know what Linux distributions omit this, but I solved this by doing

$ wget http://cran.stat.ucla.edu/src/contrib/digest_0.6.3.tar.gz
$ tar zxvf digest_0.6.3.tar.gz

Then edit digest/src/sha2.c and stick the following line in there near the top:

#define BYTE_ORDER LITTLE_ENDIAN

(this is assuming your machine is, in fact, little endian; Intel/AMD processors fall into this category). Then

R CMD INSTALL digest
* installing to library ‘/N/u/glock/sierra/R/lib64/R/library’
* installing *source* package ‘digest’ ...
file ‘src/sha2.c’ has the wrong MD5 checksum

The wrong MD5 checksum is harmless.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top