故事背景: win10现在可以直接安装Linux子系统,在Microsoft Store里面搜索Linux安装即可。win+R,输入bash,回车,就可以在win10里面使用linux的Shell啦。
留恋win10但又喜欢linux命令行的我非常喜欢这个工作模式,所以故事就开始了。鉴于我以后还是会装一遍这个的,记录下这个过程供自己参考,或许也可以帮到有需要的朋友。欢迎讨论。
主线任务:在Linux里安装Julia,并安装常用的包(HDF5,FITSIO,PyPlot,PyCall,Images,LsqFit),安装图形界面GUI。
支线任务:修改Julia的默认Package的路径。
%对于纯净的Ubantu系统,以上实现非常简单。用apt-get安装Julia-v0.4后,julia>Pkg.add("PackageName");即可。
%对于win10里的Linux,Pkg.add("")会各种报错。
%菜鸡原则:安装过程无视空间需求,以简便和能用为原则。
首先,自行安装Julia和Anaconda。(好像还要先装一下cygwin)
对于Julia-v0.4,直接用apt-get即可(更高版本可至官网下载):
z@Shell: sudo apt-get install julia
z@Shell: julia %进入Julia环境(进入环境后可按;切回Shell环境)
由于未知原因,julia>Pkg.add("PackageName");不能自己安装需求的包(你应该能看到一大片报错...),要手动预装。关联关系如下:
- libhdf5* -> HDF5
- libblosc* -> BLAS + LsqFit + HDF5
- libpython*, matplotlib*, -> PyPlot + PyCall
z@Shell: sudo apt-get install libhdf5*
z@Shell: sudo apt-get install libblosc*
z@Shell: sudo apt-get install libpython*
z@Shell: sudo apt-get install matplotlib*
z@Shell: sudo apt-get install git* %可能git也是坏的...
一段插曲:
E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
z@Shell: sudo dpkg --configure -a
dpkg: error: parsing file '/var/lib/dpkg/updates/0144' near line 0: %应该是这个0144文件损坏了,删了重新update即可。
newline in field name '#padding'
z@Shell: cd /var/lib/dpkg/updates/
z@Shell: sudo rm /var/lib/dpkg/updates/0144
z@Shell: sudo apt-get update %Problem Solved
z@Shell: julia
julia> Pkg.add("PackageName"); #把上述包的名字挨个输入进去就行了
julia> Pkg.build("PackageName"); #根据提示,可能要再build一下
julia> Pkg.build("Blosc"); #根据提示做这一步的时候,疯狂报错。搜了一圈发现“build”这玩意本身就有问题!按;切到shell
shell> sudo apt-get install build-essential
julia> Pkg.build("Blosc"); #Problem Solved
julia> Pkg.build("PyPlot/PyCall"); #报错,应该是没有设置Julia默认Python路径
julia> ENV["PYTHON"]=/usr/bin/python;
julia> Pkg.build("PyPlot/PyCall"); #Problem Solved
julia> using HDF5,FITSIO,PyPlot,PyCall,Images,LsqFit #不报错就没什么问题了
到此为止,我们的主线任务就完成一半了。进入Julia后,你会发现虽然可以计算了,但是不能画图啊:
julia> using PyPlot
julia> figure() #Nothing happened!
这是因为Windows下的Linux没有自带的图形界面(X window)。搜了一下怎么装,如下:
z@Shell: sudo apt-get Xorg openbox
尝试打开Xorg,报错:
z@Shell: Xorg
z@Shell: Fatal server error:
(EE) parse_vt_settings: Cannot open /dev/tty0 (Permission denied)
这个报错非常蛋疼,搜了一圈也搞不定。于是我决定用一个非常土炮的办法解决这个问题:
直接前往:https://sourceforge.net/projects/xming/
在windows下下载安装Xming。具体思路是:每次要画图前手动打开Xming,然后就有图形界面了!
然而你会发现打开了Xming,画图依然是什么窗口都没有...惆怅啊。于是向大佬求助,这个过程中绝望地跑去睡了一觉。
好了,解决办法是:
z@Shell: cd ~/
z@Shell: ls -a %可以找到一个.bashrc 的隐藏文件
z@Shell: gedit .bashrc %随便用个文本编辑器打开,我太菜了用不来vim,只会用gedit...
%在最后加上一行 export DISPLAY=:0.0
%这里似乎涉及到“我在用哪块屏幕”的问题,DISPLAY = your screen ,usually with number :10.0
%for windows, your xming by default is using :0.0
OK,至此,手动打开Xming。打开Julia,using PyPlot, 尝试画图。 Bingo!
到这里,主线任务就终于...完成了(妈耶装这个环境折腾了好几天,要死了)。但是!终于就可以同时坐拥win10和Linux了,也是非常棒了。
支线任务非常简单:
z@Shell: cd ~/
z@Shell: gedit .juliarc.jl
%加上一行 push!(LOAD_PATH,"some path")
%把你拿来放package的path写上去就好了。于是就可以愉快地直接using ***(your package) 了。
%其实也可以直接 Julia>include("xxx.jl"),但是要多写一句啊,太麻烦了。
Date:2018-5-14
更新一个小note。因为Julia发布了1.0+正式版,所以我就傻乎乎地装了,然后发现相比之前的版本改动很大,以前的module疯狂报错。所以我决定还是用原来的版本,写新函数再用新版本。在Linux里再安装是比较容易的,去官网下载,Extract出来,然后在PATH变量最后加一句即可:
z@Shell: gedit ~/.bashrc
%在原来PATH的基础上加一段:
PATH=$PATH'/home/julia-0.6.4/bin'
%然后你默认的Julia路径就重新设定了,Pkg可能要重新装一下
%修改默认的package路径:
z@Shell: gedit $JULIA_HOME/etc/julia/juliarc.jl
push!(LOAD_PATH,"some path")
装了WSL2,又折腾了好久,稍微记录一下。实现图形界面大概有两种方法,第一种是通过远程桌面连接到linux,过程参考 :
Dexter Lien:WSL2使用xrdp实现图形桌面
Date:2019-03-12
每次连接远程桌面前需要在ubuntu打开xrdp:
sudo /etc/init.d/xrdp start
一个小坑是自己设置端口时注意避免和预设定端口重复,当时我觉得好玩把端口设成了8848,连不上,最后发现这是预设定端口(神奇的预设定)。改掉就好了。
另一种方法和之前类似,在windows安装X11,后通过修改DISPLAY将linux的窗口显示在windows中,过程参考:
wsl2图形界面的安装,wsl同理_左阁的博客-CSDN博客_wsl2 图形界面
https://stackoverflow.com/questions/61110603/how-to-set-up-working-x11-forwarding-on-wsl2
由于网上教程过多,我自己在操作的时候翻车多次,建议利用wsl的备份功能:
%在windows terminal环境
wsl -h %查看wsl的相关指令
wsl --export Ubuntu-18.04 20201226.tar %会在 C:Usersyou 目录下创建一个备份文件
wsl --unregister %翻车时注销系统
wsl --import Ubuntu-18.04 C:Usersyouwsl2 20201226.tar %导入备份,注意需输入建立wsl2系统的位置
熟练掌握备份、导入备份之后,就可以随意折腾啦(时间刺客开大既视感)。
因为我之前的代码都是在Julia-0.6.4下写的,不想改成新语法,于是还是装这个版本。首先,去Julia官网下载相应版本。然后,在ubuntu环境下输入:
explorer.exe .
会弹出一个文件资源管理器,把下载好的Julia包找个地方粘贴过去就好了。然后解压、改名字(改名字非必须,只是单纯为了看着爽)。
tar zxvf julia-0.6.4-linux-x86_64.tar.gz -C home/you/julia-0.6.4 %-C means to specific directory
mv /home/you/julia-blabla /home/you/julia-0.6.4 %mv command 的妙用:原地TP修改文件名
和之前类似,在 .bashrc 中加入Julia的启动路径,在juliarc.jl中加入我们放package的路径。
接着就是在Julia中各种Pkg.add(""),有些步骤可能会报错,按照报错内容手动装需要的包即可。我遇到了要手动装hdf5-tools的问题(在Julia环境中按 ;可以进入Shell环境),手动装一下就解决了。
sudo apt-get install hdf5-tools
后面我又被提醒没有装scipy,在Julia环境里用Conda装一下即可。
using Conda
Conda.add("scipy")
注意,虽然我们在安装PyCall、PyPlot等包的时候自动装了Conda(Python3),但是这个好像只是为Julia特地安装的版本,并非整个环境通用版。自己使用的话,尤其是像我用python2,还是要重新下载安装anaconda2。这个比较简单,下载.sh文件直接运行即可
bash anaconda2-blabla.sh
理论上也可以通过修改Julia中的环境变量让Julia直接使用已经安装的Python,但我整了之后疯狂报错,导致又回到备份重装了一次wsl2。所以不想折腾的话还是让Julia装一个Python,在此基础上再装一个python自用比较方便。
Date:2020-12-29