2015-08-28 26 views
4

我正面臨一個特殊問題。在這裏高中時,我有大約10臺電腦(全都是相同型號,相同類型的CPU,相同類型的內存等)捐贈,現在在重新安裝後運行Debian。我試圖教給學生一些Haskell,我自己對它的瞭解不多。孩子們很感興趣。一個問題是我們的國家是第三世界,互聯網非常緩慢和昂貴。一旦在一臺機器上使用有限的免費互聯網連接下載了所有的deb文件後,我在所有機器上使用deb軟件包(通過apt-rdepends找到)安裝了基本的ghc和ghci。它需要超過10個小時才能下載所有缺失的ghc deb文件。將安裝的ghc和所有軟件包複製到另一臺機器

我想知道這種技巧是否可以用於cabal?我將在一臺計算機上下載所有必需的焦油或其他文件,使用昂貴且速度慢的互聯網,但我不想花費我所有的錢從互聯網下載所有10臺計算機。

我想展示孩子們的圖和光澤包,因爲它是愉快和有趣的。 我受此啓發gentleman Smith 我應該怎麼做?除了圖表和光澤以外,還有其他一般包裝的方法嗎? 謝謝你,對不起我的英文不好。

+0

看看這裏:http://stackoverflow.com/questions/28522887/install-haskell-packages-using-cabal-without-internet-connection – IBam

+0

謝謝。我看到這一點,它只是告訴下載一個軟件包,但沒有依賴關係。有沒有辦法使用cabal來了解圖表的依賴關係? – Kirkman

+2

我認爲你要做的是將'$ HOME/.cabal/packages/hackage.haskell.org'複製到其他機器上。 –

回答

0

在過去,我已經完成了這項工作,讓GHC和Cabal在「cabal install」無法看透的防火牆後面的機器上工作。

您可以使用「wget」下載每個Hackage軟件包的最新版本。 (或者你可以嘗試做類似於Stack的事情,但我沒有嘗試過)。還下載https://hackage.haskell.org/packages/index.tar.gz,這是索引文件。

安裝GHC,cabal和cabal-install,然後找到cabal-install配置文件並將其指向包含index.tar.gz包的本地存儲庫以及您下載的包的存檔。然後希望你應該找到「cabal install」將從本地存儲庫工作。

1

默認情況下,cabal將下載的每個軟件包高速緩存到​​(並且除非明確請求重新獲取,否則更喜歡使用緩存重新獲取軟件包)。所以它應該很簡單,只需在計算機之間複製該目錄即可。

這仍然需要您在每臺機器上構建所有軟件包。如果你更願意跳過這一步,你可以考慮直接將GHC的包數據庫拷貝到每臺機器上。這有點微妙,但可以節省相當多的時間/力量。

默認情況下,全局包數據庫(您應該安裝想要在用戶之間共享的包)在/usr/local/lib/ghc-$version中,您應該也可以將該目錄複製到所有計算機。您可以使用ghc-pkg list檢查您是否已將所需的軟件包安裝到全局數據庫中,該軟件將列出所有安裝的軟件包/版本組合,並將它們分開,看它們是安裝在全局數據庫還是用戶軟件包數據庫中。

相關問題