[julia]本地離線安裝package



1.引言

julia最近十分受關注,其結合了python的通用性,Ruby的動態性,C的代碼運行速度,R的包管理和數據分析功能,perl的字符串處理能力,lisp的宏能力,matlab的矩陣計算規則,fortran的矩陣計算速度,shell的不同程序粘粘能力。可謂是集眾家之所長,當下就試了一把,不過還是覺得pip的包管理十分方便,暫時不是很習慣R的包管理方式。

julia將所有的包依賴github進行管理,而不是如pypi一樣建立個獨立的網站,其中包含了所有注冊的包(你寫的包被官方收錄)的元數據General,以及幾乎所有2261個包都是在github上。當然這給生產環境等無法聯網的機器帶來了不小的麻煩。這里經過試驗和查找stackoverflow等方式,算是找到了幾個解決方法。

下面主要在centos 7.3,julia 1.0版本上進行實現。

2. 在線安裝

using Pkg
Pkg.add("Example")

是不是很方便,而且自動解決依賴,而且一行就能更新所有的包版本

3. 先離線安裝General,然后離線安裝其他包

3.1 如果機器能代理上網

如果你的機器是需要通過代理上網的,那么會需要設定http_proxy,https_proxy等,然而當爆出

可以嘗試

export https_proxy=http://192.168.71.33:8080

即給https附加http的代理。然后采用之前的在線安裝方式直接安裝,美滋滋。

3.2 機器都不能聯網

如果也不能聯網,那么首先找到所需要的包,如General:

1 - 先找一台能上網的機器

git clone https://github.com/JuliaRegistries/General.git

ps:不要直接github上打包的方式下下來,因為這樣里面缺少了.git等元數據信息

2 - 將包放入指定位置
如在Pkg模式(按下 ] 這個按鍵,表示進入Pkg模式,退出可以直接ctrl+c)下直接輸入

add General


可以看出,julia的默認路徑是~/.julia。當安裝完成時,會有如下的目錄結構

如果當前為空,則先建立registries,然后將之前github上下載的General包放在~/.julia/registries下面
然后:

成功!

3.3 離線安裝其他包

上述我們成功安裝了General,為什么先安裝它,是因為看到直接在線安裝時,都是需要去更新這個包,所以里面也包含了所有的元數據信息。那么現在有疑問了:

  • 我想安裝其他包怎么辦?
  • 我包有依賴怎么辦?

這里有至少2個方法,第一個方法如安裝General一樣:

3.3.1 類似General方式安裝其他包

首先,解決怎么安裝其他包問題,這里以Example為例
1 - 將Example以git clone下載
2 - 將該下載的文件夾放到~/.julia/registries
3 - 在Pkg模式下直接安裝如下圖

解決。

3.3.2 直接修改General中的包源地址

這里依然以Example為例

可以看出,在/root/.julia/registries/General下面包都是按照首字母進行存儲的,我們直接定位到Example中

找到Package.toml

手動將里面的repo改成你自己本地包的路徑(這個Example也是通過git clone下載的
然后回到Pkg模式下

可以看到成功了,

那么如果你有依賴,你可以全都下下來,然后修改General中的位置(用個python批量修改下,我覺得不難),直接讓他本地尋找即可!這里我就沒再試了,后續遇到接着更新


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM