2017-08-25 123 views
0

在工作中,我們有一箇中央只讀的Linux Anaconda安裝,並且有幾個項目需要各個項目成員的庫軟件包。 有沒有辦法conda安裝軟件包在爲每個項目預留的可寫區域?在獨立區域安裝軟件包以進行只讀Anaconda Linux安裝

我們的Linux服務器也不是直接網絡連接,但我們可以從Windows機器傳輸數據。有沒有辦法讓windows conda爲我們的Linux安裝下載數據,以便我可以將下載的文件傳輸到Linux,然後在Linux上完成安裝,而conda linux不需要直接的網絡連接?

在此先感謝:-)

回答

1

最好的回答這個問題有點斜:水蟒分佈是專爲不受限制地訪問互聯網的單一系統上的單個用戶。任何其他用途都被視爲「非標籤」和YMMV,儘管沒有許可限制可以阻止您嘗試按照您的意圖使用它。 Anaconda Enterprise是專爲多用戶服務器部署的防火牆限制的Anaconda而設計的商業產品。安全,治理,賠償,支持,合作等等。查看https://www.continuum.io/瞭解更多詳情。

但是有「解決方法」來實現你想要的,儘管是複雜的。爲了它的可靠性,可重複性和可維護性,您最終將重新實現Anaconda Enterprsie中的許多功能。這裏有一些提示:

  • 退房的"conda in multi-user environments" documentation

  • 退房的"Centralized Anaconda installation" documentation

  • 項目foo普通用戶alice可以做conda create -p /nfs/project/foo/envs/custompython --offline anaconda; conda activate /nfs/project/foo/envs/custompython; conda install pkg1 pkg2 pkg3

  • 你要運行歸入所有權/許可問題。如果您有明智的umask值,那麼當alice的同事bob嘗試更新foo項目中的pkg2時,他會發現他無法取消鏈接文件alice寫在那裏。你可以做的東西(如IT管理員)chownalice可以做chmod,但它有點麻煩,有很多方法可以使conda環境癱瘓,因爲它期望「可寫」到對於特定的環境是二進制的。在conda GH問題跟蹤系統(包括我自己)中,有一個歷史悠久的歷史,開始一個帳戶的conda env設置,然後用另一個賬戶進行mod,然後將其中的一個賬戶進行一半的操作,從而使所有的操作都不一致。

  • 請注意.condarc文件。我的建議是:在任何地方避免它們,但在基本的Anaconda安裝中(例如,在/opt/anaconda/.condarc之內)。當多個重疊的.condarc文件聚集在一起時(上述文檔參考文獻討論這一點),各種奇怪的東西都可能發生。

  • 只要這些新環境(及其依賴項)中指定的包是基礎環境中可用包的子集(或隨後添加到包中),人們就可以在「脫機」模式下創建自己的環境緩存),當然也考慮版本。

  • 您可以使用在線Windows機器通過從repo.continuum.ioanaconda.org中獲取軟件包來下載軟件包。確保你將它們下載到正確的平臺上。但挑戰在於:您需要下載一組能夠滿足您要安裝的軟件包的依賴關係的軟件包。離線時沒有一種超級簡單的方式來獲取這些信息。

  • 將新軟件包放入Linux系統的軟件包緩存後,請務必重新運行conda index

  • 當心直接從他們的tarball安裝軟件包:這不會選擇任何依賴關係,並執行所謂的「強制」安裝。所以做conda install /path/to/conda/pkg-ver.tar.bz2實際上最類似於做conda install --force --no-deps pkg=ver(雖然不完全相同,可以肯定)。 --force意味着安裝將會發生無論如何,即使它會破壞您的環境(違反現有的軟件包依賴性),並且--no-deps意味着您將不會獲得安裝的任何依賴關係pkg