2017-06-20 15 views
6

Tôi vừa đi nghỉ một tháng để không thể nói chính xác điểm xảy ra điều này, nhưng R từ Repos chính thức hiện không thể để bắt đầu, với lý doR v3.4.0-2 không thể tìm thấy libgfortran.so.3 trên Arch

/usr/lib64/R/bin/exec/R: error while loading shared libraries: 
libgfortran.so.3: cannot open shared object file: No such file or directory 

tôi nghĩ rằng có lẽ là một liên kết tượng trưng đã không đặt đúng chỗ hoặc bị phá hủy, vì vậy tôi nhìn vào/usr/lib để cố gắng tìm nó:

ls -halt /usr/lib/libgfortran.so.*

lrwxrwxrwx 1 root root 20 May 16 03:01 /usr/lib/libgfortran.so.4 -> libgfortran.so.4.0.0 
-rwxr-xr-x 1 root root 7.1M May 16 03:01 /usr/lib/libgfortran.so.4.0.0 

libfortran.so.3 bị thay thế bởi libgfortran.so.4 trong Arch? Nếu có, có cách giải quyết nào có thể để nhận được R để chạy với phiên bản cũ hơn không?


pacman -Qi r

Name   : r 
Version   : 3.4.0-2 
Description  : Language and environment for statistical computing and graphics 
Architecture : x86_64 
URL    : http://www.r-project.org/ 
Licenses  : GPL 
Groups   : None 
Provides  : None 
Depends On  : blas lapack bzip2 libpng libjpeg libtiff ncurses pcre readline zlib perl gcc-libs libxt libxmu pango xz desktop-file-utils zip unzip 
Optional Deps : tk: tcl/tk interface [installed] 
        texlive-bin: latex sty files [installed] 
Required By  : None 
Optional For : graphviz 
Conflicts With : None 
Replaces  : None 
Installed Size : 58.04 MiB 
Packager  : Evangelos Foutras <[email protected]> 
Build Date  : Tue 25 Apr 2017 05:04:31 AM EDT 
Install Date : Tue 20 Jun 2017 12:27:06 PM EDT 
Install Reason : Explicitly installed 
Install Script : No 
Validated By : Signature 

Edit: Nếu bất cứ ai khác đi qua này, r-devel AUR biên dịch một cách chính xác và chạy, vì vậy hy vọng vào phiên bản tiếp theo vết sưng vấn đề này sẽ được giải quyết.

Trả lời

3

Thật vậy, gfortran 7 va chạm phiên bản ligfortran lên phiên bản 4. Xem http://gcc.1065356.n8.nabble.com/patch-fortran-PR77828-Linking-gfortran-7-compiled-program-with-libgfortran-of-5-x-allowed-but-crashes-td1311625.html Nó không tương thích ngược và một số API đã thay đổi.

Nếu bạn cài đặt phiên bản cũ hơn của gfortran, bạn sẽ nhận được libgfortran.so.3. Nó là hoàn toàn tốt đẹp để có nhiều phiên bản trong hệ thống của bạn. Có lẽ có một cách để xây dựng lại R cho phiên bản 4, nhưng nó sẽ có thể làm việc nhiều hơn.

+0

Cảm ơn bạn Vladimir, bạn có biết về bất kỳ phương pháp nào để hạ cấp chỉ là gfortran xuống 6. * mà không hạ cấp tất cả 'gcc'? Phương pháp thông thường (cài đặt một phiên bản cache của gói từ 'pacman') thật không may, vì nó đòi hỏi một phiên bản' gcc' giống hệt và tôi không sẵn sàng phá hủy phần còn lại của hệ thống. –

+0

Không hạ cấp, nó không phải là một ý tưởng tốt. Cài đặt phiên bản bổ sung của GCC. –

+1

https://gist.github.com/slizzered/a9dc4e13cb1c7fffec53 –

1

Tôi làm việc trên một phần mềm có tên là pyferret cần libgfortran.so.3. Tôi đang chạy fedora 27 có trình quản lý gói cài đặt gfortran 7 (Phiên bản cao hơn) theo mặc định. Điều này tạo ra đối tượng được chia sẻ libgfortran.so.4 trong /usr/lib64. Một hệ thống Linux khác chạy Ubuntu 16.04.3, tuy nhiên có libgfortran.so.3. Tôi đã sao chép nó vào hệ thống của mình bằng ~/pkgs/libs và chạy ứng dụng dưới dạng

export LD_PRELOAD=/home/vasu/pkgs/libs/libgfortran.so.3:/home/vasu/pkgs/libs/libopenblas.so.0;pyferret 

Điều này đã làm việc mà không có lỗi trên.

+0

Cảnh báo, sao chép nhị phân từ phân phối Linux này sang phân phối Linux khác có thể hoặc không hoạt động tùy thuộc vào nhiều yếu tố không thể đoán trước. Nhưng nó là tốt để biết nó hoạt động trong trường hợp này. –

+1

Vâng. Tôi đồng ý. Nó có thể hoặc có thể không hoạt động. Nhưng nó hoạt động trong trường hợp của tôi và OP có thể thử.Tôi cũng biết xây dựng một phiên bản thấp hơn trong một hệ thống với các phiên bản phần mềm cao hơn là khá khó khăn. –

0

Có nhiều gói trong R phụ thuộc vào GCC Fortran. Một số trong số đó chưa được cập nhật để biên dịch chống lại GCC mới, trong khi một số gói được cập nhật phụ thuộc vào chúng, deldir và strongbase là hai ví dụ.

Kiểm tra cảnh báo của bạn và cài đặt bất kỳ gói nào không tải được sau đó thực hiện nâng cấp.

Các vấn đề liên quan