2011-12-08 45 views
6

我想在工作時在Redhat x86_64 (RHEL v5)服務器上安裝GHC 7.2.2(在我的用戶帳戶中,我沒有root權限)。我從GHC下載頁面下載了Linux x86_64的通用二進制文件。但是,當我運行configure時,由於glibc版本在Linux上的版本是2.6,所以它會拋出glibc版本異常,因爲它的版本號爲ghc-pwd。所需的glibc版本是2.7。使用libc版本編譯Linux上的GHC 7.2+ <2.7

我搜索了一下,但沒有發現RedHat 5的任何預配置的GHC二進制文件。我將很感激有關如何解決glibc版本問題的指針,如果任何人已經找到了RHEL 5(或任何Linux的味道,如果解決方法是一般的)。或者,如果在某處有可用的Redhat x86_64的壓縮二進制文件,我可以下載並解壓縮它們,如果您指向我的話。否則,它看起來像我堅持GHC 6.12在工作。

+2

我有一個存在的證據證明它*能*做,但我需要一些與他人一起檢查我們是否記得如何重複這個過程。 – acfoltzer

+0

太棒了......如果你能收集遺失的東西,請發佈證明。真的可以幫助我們在工作中採用更新版本的GHC。 – Sal

+0

@acfoltzer,任何運氣收集證據?非常感謝,如果你有它,並可以分享。 – Sal

回答

3

我有類似的問題,所以我自己編譯ghc。這樣做並不重要,因爲你需要更新的binutils和gcc。但是可以完成(全部在用戶區域)。

+0

你需要哪個版本的binutils和gcc來編譯ghc?我想避免自己編譯ghc,因爲這是很多工作,沒有確定的回報(因爲我沒有root權限來安裝所需的東西)。但是,如果我找不到二進制文件/解決方法,那麼我將不得不這樣做。 – Sal

+0

我用binutils-2.20.1和gcc-4.3.6。 – augustss

4

我在RHEL 5.3上創建了ghc 7.4.1,以ghc 6.6或6.8(忘記哪個)的二進制版本開始,在平臺上運行良好。然後我使用它從源代碼構建ghc 6.12,然後使用6.12從源代碼構建7.4.1。必須使用gcc 4.3來編譯7.4.1,但這很好,因爲gcc 4.3在RHEL 5.3上可用。

這並不是很多工作,只需要相當長的時間完成所有的構建。

3

GHC編譯6.12需要GHC二進制可編譯本身。有預編譯的GHC二進制文件可用,但它們是針對較新的glibc版本構建的

RHEL 5有glibc 2.5,因此您可以使用GHC 6.8和bootstrap。通常GHC可以使用$ VERSION-2或更新版本(精確版本爲documented with the source downloads)自舉。

您還需要更新版本的gcc。 @ alex-iliev建議使用gcc 4.3就足夠了,這可以在RHEL 5上找到。您的替代方案是使用Gentoo Prefix來安裝最新的gcc。

下載並安裝目錄中的預編譯6.8:

wget http://www.haskell.org/ghc/dist/6.8.3/ghc-6.8.3-x86_64-unknown-linux.tar.bz2 
bunzip2 ghc-6.8.3-x86_64-unknown-linux.tar.bz2 
tar -xf ghc-6.8.3-x86_64-unknown-linux.tar 
cd ghc-6.8.3 
mkdir ~/ghc_bootstrap_6_8 
./configure --prefix=/home/wilfred/ghc_bootstrap_6_8/ 
make install 

編譯6.12:

wget http://www.haskell.org/ghc/dist/6.12.3/ghc-6.12.3-src.tar.bz2 
bunzip2 ghc-6.12.3-src.tar.bz2 
tar -xf ghc-6.12.3-src.tar 
cd ghc-6.12.3 
mkdir ~/ghc_bootstrap_6_12 
PATH=/home/wilfred/ghc_bootstrap_6_8/bin:$PATH ./configure --prefix=/home/wilfred/ghc_bootstrap_6_12/ 
make 
make install 

編譯7.2和7.6是相同的過程6.12。編譯可能需要幾個小時,所以你可能想看看quick builds(儘管你會想要最終的GHC版本的正常版本)。

如果你確實下了Gentoo Prefix根目錄,只需引導你到GHC 7.2。然後,您可以修改$EPREFIX/usr/portage/eclass/ghc-package.eclass添加一行:

PATH=/home/wilfred/ghc_bootstrap_7_2/bin:$PATH 

然後只需添加ghcbootstrap到您的USE標誌和:

emerge --nodeps ghc