วิธีการติดตั้ง R 3.3.1 ในไดเรกทอรีของฉันเอง


12

นี่เป็นคำถามที่ค่อนข้างซ้ำ (ดูวิธีการตั้งค่า PATH สำหรับ R ที่ติดตั้งในไดเรกทอรีของฉัน ) แต่ฉันพบปัญหาใหม่บางอย่างกับ R เวอร์ชันใหม่

ฉันพยายามติดตั้ง R (R 3.3.1) เวอร์ชันใหม่ในไดเรกทอรีของฉันเอง ฉันติดตามโฟลว์การติดตั้งก่อนหน้าของฉัน

แต่ฉันพบปัญหาที่ฉันไม่เคยมีมาก่อน

./configure --prefix=$HOME/Programme/R-3.3.1 
.......
checking for zlib.h... yes
checking if zlib version >= 1.2.5... no
checking whether zlib support suffices... configure: error: zlib library and headers are required

ดูเหมือนว่ารุ่น zlib ต่ำเกินไปฉันจึงติดตั้งรุ่นปัจจุบันของ zlib

tar xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
 ./configure --prefix=$HOME/Programme/zlib-1.2.11
make && make install

จากนั้นฉันพยายามทำการกำหนดค่าสำหรับ R อีกครั้งเช่น:

./configure --prefix=$HOME/Programme/R-3.3.1 --enable-R-shlib LDFLAGS="-L/$HOME/Programme/zlib-1.2.11/lib" CPPFLAGS="-I/$HOME/Programme/zlib-1.2.11/include"

ฉันยังคงมีข้อผิดพลาดเดียวกัน:

checking if zlib version >= 1.2.5... no
checking whether zlib support suffices... configure: error: zlib library and headers are required

จากนั้นฉันสังเกตเห็นใครบางคนหลีกเลี่ยงปัญหาโดยแก้ไขไฟล์กำหนดค่าของ R
ฉันตามตัวอย่างนั้นแก้ไขข้อผิดพลาด zlib แต่เกิดข้อผิดพลาดอื่น ๆ เพื่อให้เรื่องสั้นสั้นลงฉันติดตั้งไลบรารีอื่น

tar xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=$HOME$Programme/zlib-1.2.11
make && make install

tar zxvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make -f Makefile-libbz2_so
make clean
# modify the Makefile (original: CC=gcc after modification: CC=gcc -fPIC) as suggested [here][2]
make 
make install PREFIX=/opt/bzip2-1.0.6

tar zxvf xz-5.2.3.tar.gz
cd /root/xz-5.2.3
./configure --prefix=$HOME/Programme/xz-5.2.3
make -j3
make install

tar zxvf pcre-8.40.tar.gz
cd /root/pcre-8.40
./configure  --prefix=$HOME/Programme/pcre-8.40  --enable-utf8
make -j3 && make install

tar zxvf curl-7.52.1.tar.gz
cd /root/curl-7.52.1
./configure  --prefix=$HOME/Programme/curl-7.52.1
make && make install

./configure --prefix=$HOME/Programme/R-3.3.1 --enable-R-shlib LDFLAGS="-L/$HOME/Programme/zlib-1.2.11/lib -L/$HOME/Programme/bzip2-1.0.6/lib -L/$HOME/Programme/xz-5.2.3/lib -L/$HOME/Programme/pcre-8.40/lib -L/$HOME/Programme/curl-7.52.1/lib" CPPFLAGS="-I/$HOME/Programme/zlib-1.2.11/include -I/$HOME/Programme/bzip2-1.0.6/include -I/$HOME/Programme/xz-5.2.3/include -I/$HOME/Programme/pcre-8.40/include -I/$HOME/Programme/curl-7.52.1/include"

การกำหนดค่าดูเหมือนจะทำงาน:

R is now configured for x86_64-pc-linux-gnu

  Source directory:          .
  Installation directory:    $HOME/Programme/R-3.3.1

  C compiler:                gcc -std=gnu99  -g -O2
  Fortran 77 compiler:       gfortran  -g -O2

  C++ compiler:              g++  -g -O2
  C++11 compiler:            g++  -std=c++0x -g -O2
  Fortran 90/95 compiler:    gfortran -g -O2
  Obj-C compiler:         

  Interfaces supported:      X11, tcltk
  External libraries:        readline, curl
  Additional capabilities:   PNG, JPEG, NLS, cairo, ICU
  Options enabled:           shared R library, shared BLAS, R profiling

  Capabilities skipped:      TIFF
  Options not enabled:       memory profiling
  Recommended packages:      yes

แต่เมื่อฉันโทร

make && make install

ยังคง "ทำ" ไม่สามารถทำได้จนกว่าจะสิ้นสุด:

...
  gcc -std=gnu99 -Wl,--export-dynamic -fopenmp  -L../../lib -L//HOME/Programme/zlib-1.2.11/lib -L//HOME/Programme/bzip2-1.0.6/lib -L//HOME/Programme/xz-5.2.3/lib -L//HOME/Programme/pcre-8.40/lib -L//HOME/Programme/curl-7.52.1/lib -o R.bin Rmain.o  -lR -lRblas
/usr/bin/ld: warning: libpcre.so.1, needed by ../../lib/libR.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: liblzma.so.5, needed by ../../lib/libR.so, not found (try using -rpath or -rpath-link)
../../lib/libR.so: undefined reference to `pcre_fullinfo'
../../lib/libR.so: undefined reference to `lzma_lzma_preset@XZ_5.0'
../../lib/libR.so: undefined reference to `lzma_alone_decoder@XZ_5.0'
../../lib/libR.so: undefined reference to `lzma_crc64@XZ_5.0'
../../lib/libR.so: undefined reference to `lzma_raw_encoder@XZ_5.0'
../../lib/libR.so: undefined reference to `pcre_config'
../../lib/libR.so: undefined reference to `lzma_code@XZ_5.0'
../../lib/libR.so: undefined reference to `lzma_stream_decoder@XZ_5.0'
../../lib/libR.so: undefined reference to `pcre_free'
../../lib/libR.so: undefined reference to `lzma_raw_decoder@XZ_5.0'
../../lib/libR.so: undefined reference to `pcre_exec'
../../lib/libR.so: undefined reference to `lzma_version_string@XZ_5.0'
../../lib/libR.so: undefined reference to `pcre_maketables'
../../lib/libR.so: undefined reference to `lzma_stream_encoder@XZ_5.0'
../../lib/libR.so: undefined reference to `pcre_compile'
../../lib/libR.so: undefined reference to `pcre_study'
../../lib/libR.so: undefined reference to `pcre_version'
../../lib/libR.so: undefined reference to `lzma_end@XZ_5.0'
collect2: error: ld returned 1 exit status

...
make: *** [R] Error 1 

ติดตามผล: ตามคำแนะนำของ thrig ฉันได้เพิ่มบรรทัดด้านล่างลงในไฟล์. cshrc ของฉัน

setenv LD_LIBRARY_PATH $HOME/Programme/pcre-8.40/lib
setenv LD_LIBRARY_PATH $HOME/Programme/xz-5.2.3/lib

และ

source .cshrc 

แก้ไขปัญหา!


--prefix=$HOME/Programmeและ-L/$HOME/Programme/zlib-1.2.11/libดูเหมือนสองสิ่งที่แตกต่างกันจริง zlib อยู่ที่ไหน? (และจัดส่งพร้อม*.pcไฟล์เพื่อให้คุณสามารถใช้ได้pkg-configหรือไม่)
thrig

@thrig ขอโทษฉันไม่ได้ใส่ข้อมูลการกำหนดค่าของฉันอย่างถูกต้องฉันได้แก้ไขมันเพื่อที่จะทำให้มันเหมือนกับสิ่งที่ฉันทำ
มิ.ย.

2
สำหรับไลบรารีที่แบ่งใช้ "ไม่พบ" แฮ็คด่วนจะถูกตั้งค่าLD_LIBRARY_PATHให้รวมlibไดเรกทอรีที่จำเป็น
thrig

หากเป็นฉันฉันจะลองติดตั้งการอ้างอิงด้วยคำนำหน้าทั่วไปเช่น--prefix=/opt(แทนที่จะเป็นไดเรกทอรีย่อยที่แยกจากกัน--prefix=/opt/zlib-1.2.11เป็นต้น) จากนั้นตั้งค่าเส้นทางการค้นหาที่เหมาะสมpkg-configเช่นexport PKG_CONFIG_PATH=/opt/lib/pkgconfig:$PKG_CONFIG_PATHก่อนกำหนดค่าR
steeldriver

@thrig TKS! มันใช้งานได้!
มิ.ย.

คำตอบ:


5

นี่คือวิธีการแก้ไขปัญหาที่กล่าวถึงข้างต้น

ทำตามตัวอย่างเพื่อแก้ไขไฟล์กำหนดค่าของ R จากนั้น:

tar xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=$HOME/Programme/zlib-1.2.11
make && make install

tar zxvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make -f Makefile-libbz2_so
make clean

แก้ไข Makefile (ต้นฉบับ: CC = gcc หลังจากแก้ไข: CC = gcc -fPIC) ตามที่แนะนำไว้ที่นี่

make 
make install PREFIX=$HOME/Programme/bzip2-1.0.6

tar zxvf xz-5.2.3.tar.gz
cd xz-5.2.3
./configure --prefix=$HOME/Programme/xz-5.2.3
make -j3
make install

tar zxvf pcre-8.40.tar.gz
cd pcre-8.40
./configure  --prefix=$HOME/Programme/pcre-8.40  --enable-utf8
make -j3 && make install

tar zxvf curl-7.52.1.tar.gz
cd curl-7.52.1
./configure  --prefix=$HOME/Programme/curl-7.52.1 --with-ssl
make && make install

./configure --prefix=$HOME/Programme/R-3.3.1 --enable-R-shlib LDFLAGS="-L/$HOME/Programme/zlib-1.2.11/lib -L/$HOME/Programme/bzip2-1.0.6/lib -L/$HOME/Programme/xz-5.2.3/lib -L/$HOME/Programme/pcre-8.40/lib -L/$HOME/Programme/curl-7.52.1/lib" CPPFLAGS="-I/$HOME/Programme/zlib-1.2.11/include -I/$HOME/Programme/bzip2-1.0.6/include -I/$HOME/Programme/xz-5.2.3/include -I/$HOME/Programme/pcre-8.40/include -I/$HOME/Programme/curl-7.52.1/include"

เพิ่มบรรทัดด้านล่างลงในไฟล์. csrc ของฉัน

setenv LD_LIBRARY_PATH $HOME/Programme/pcre-8.40/lib
setenv LD_LIBRARY_PATH $HOME/Programme/xz-5.2.3/lib

และ

source .cshrc 

ตอนนี้ไปที่ไดเรกทอรี R-3.3.1:

make && make install 

มันควรจะทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.