2013-07-24 30 views
3

我想在我的ubuntu vps上使用非常有限的內存(220mb)編譯Haskell的Snap Framework,並且在使用「cabal install snap」時不斷收到內存不足的錯誤。我試圖增加交換大小,但因爲它是一個OpenVZ框,所以基本上不存在交換。Haskell Snap編譯內存非常有限

我的問題是那麼有沒有什麼辦法可以使用外部機器編譯所有的文件,然後讓他們轉移到VPS上的正確位置,就好像我在本地有編制嗎?

或者,如果其他人有任何其他建議,我可能能夠得到這個工作,請讓我知道。

+1

複製構建在另一臺機器上的二進制文件是否存在問題? –

+0

我要試一試。但我並不認爲GHC在構建項目時會找到所有合適的軟件包。有很多它創建的文件。我將嘗試複製整個.cabal目錄並查看它是否有效。 –

+2

我並不是建議複製中間對象,我建議複製最終的二進制文件。你只需要擔心滿足共享對象。 –

回答

4

正如托馬斯·M. DuBuisson說,你只需要整個項目編譯成最終的二進制和複製及以上服務器的所有項目文件(HTML,JS等)。由於整個項目已編譯幷包含一個Web服務器,這些都是您需要的唯一文件。

所以要重申的步驟。

  1. 獲取具有相同操作系統並可編譯框架的不同機器。在我的情況下,我有一個本地虛擬機做到這一點。

  2. 使用該機器編譯整個Snap項目。

  3. 將編譯後的項目(二進制和網頁文件)複製到另一臺機器(無法編譯)。

  4. 運行二進制文件。它包含一個服務器,所以不應該有任何其他的依賴關係。除非你的項目使用動態庫。在這種情況下,複製這些。

這是可行的,因爲實際的Snap Server在您編譯時與Snap Framework應用程序一起提供。答案實際上比我想象的簡單得多,而且我只是過分簡單化了。

+0

這是我使用的方法。 – mightybyte