2017-04-11 79 views
0

我一直在網上圈了幾個小時,所以我已經放棄了,需要問問專家。本地安裝R-devel的Gfortran錯誤

我想在Ubuntu服務器的本地文件夾中安裝R的較新版本。我需要一個特定的軟件包(Phangorn),但R的系統範圍副本太舊了,我無法升級它,因爲它會打破太多其他人的依賴關係(而且我不是管理員)。

因此,我下載了R-devel的最新版本,並遵循了這些出色的說明(http://pj.freefaculty.org/blog/?p=315)。我必須安裝我自己的zlib,liblzma(XZ)和pcre(現在位於~/packages)的副本。我似乎不需要做curl和bzip2。這引起了很多的問題,因爲它是,但大部分faffing後,我才得以成功編譯R.

然而,當我嘗試在它裏面安裝Phangorn,它給了我下面的錯誤:

/usr/bin/ld: cannot find -lgfortran 
/usr/bin/ld: cannot find -lgfortran 
collect2: error: ld returned 1 exit status 
make: *** [igraph.so] Error 1 
ERROR: compilation failed for package ‘igraph’ 
* removing ‘/home/wms_joe/bin/R-devel/library/igraph’ 
ERROR: dependency ‘igraph’ is not available for package ‘phangorn’ 
* removing ‘/home/wms_joe/bin/R-devel/library/phangorn’ 

The downloaded source packages are in 
    ‘/tmp/RtmpahSdck/downloaded_packages’ 
Updating HTML index of packages in '.Library' 
Making 'packages.html' ... done 
Warning messages: 
1: In install.packages("phangorn") : 
    installation of package ‘igraph’ had non-zero exit status 
2: In install.packages("phangorn") : 
    installation of package ‘phangorn’ had non-zero exit status 

所以從我可以告訴Phangorn取決於依賴於gfortran的igraph,R無法找到它。

這看起來是因爲在這個線程詳述了同樣的問題: Building R package getting error "ld: cannot find -lgfortran "

但解決方案似乎都需要softlinking,因此需要須藤這完全違背了我做一個局部的點上安裝:/

這裏有什麼我的選擇?如果我爲我自己的目錄下載lgfortran(假設甚至解決了問題),我應該在哪裏鏈接它?

回答

1

對於RHEL6而言,這些並不是「出色的指令」,而不是Ubuntu。所以你有一個阻抗不匹配。

在Ubuntu,你最快的賭注(如果您有SRC-DEP依賴)是

sudo apt-get build-dep r-base 

第二快的是看包的元數據源從Debian /控制讀取構建時刻依賴(但似乎沒有在線副本)。

至於phanghorn,你也可以嘗試下載源,只是編輯離開了特別是R版的要求,看看會發生什麼 - 有時候這僅僅是用於,比方說,護身符的變化並不會影響你的可用性。

最後,您的構建失敗,因爲無法構建igraph,因爲gfortran組件丟失。如果可以的話,安裝對應於您的編譯器版本的libgfortran-*-dev包 - 並安裝r-base-dev應該保證它。

最後但並非最不重要的是,考慮像Docker一樣運行已安裝程序的本地變體。

+0

我找不到任何針對Ubuntu的說明,並且這些說明讓我看到了至少可以編譯的R版本(甚至沒有達到那個程度)。 'sudo apt-get'因爲我沒有管理員權限而失效。 –

+0

'apt-get r-base'試圖獲得一個2.14版本的R,它甚至比舊版本舊,我試圖避免... –

+0

你誤讀:'apt-get install r-base'就是你,但'apt-get install r-base-dev'是我要求你做的。 –