作者:刘亚卓,修正:汪思聪
众所周知,Win10是最好的Linux发行版。通过Win10的WSL功能,可以轻松实现Linux系统的安装与使用,基本可以满足大部分人对Linux的需求。本文会详细的介绍Ubuntu子系统的安装与FEniCS的配置。
当然,如果你想要在虚拟机上安装fenics,请移步另一篇博客:FEniCS应用(0):初入Linux,如何在Ubuntu18.04上通过anaconda安装FEniCS有限元框架_仰望天空的蚂蚁的博客-CSDN博客
第一步:将Ubuntu子系统安装至非系统盘
网上有很多教程说让通过微软官方商店安装ubuntu子系统,然后在用LxRunOffline工具将子系统从系统盘迁移至非系统盘。这样的操作非常容易因其子系统的崩溃或是无法打开,下面我将介绍另一种方式直接将ubuntu子系统安装至你想要安装的地方。
启用win10自带的“适用于Linux的Windows子系统”功能
打开 程序面板——程序——启用或关闭Windows功能
勾选“适用于Linux的Windows子系统”,确定
下载Ubuntu子系统安装包
前往微软官方网站:Manual installation steps for older versions of WSL | Microsoft Docs
找到相应的Linux发行版子系统安装包,本文以Ubuntu18.04为例。
如果觉得直接访问微软官网下载速度过慢,也可以访问下方链接,我已经将子系统安装包上传作为免费下载资源了。注意下载后需要解压
Ubuntu18.04安装包:Window10上Ubuntu18.04子系统官方手动安装包-Linux文档类资源-CSDN下载
Ubuntu20.04安装包:Windows10上Ubuntu20.04子系统官方手动安装包_Ubuntu子系统如何下载安装包-Linux文档类资源-CSDN下载
下载完成后将安装包(后缀名为:.appx)保存在你希望安装子系统的路径上。
在非系统盘安装Ubuntu18.04子系统
打开Windows PowerShell (管理员),用cd命令切换进入子系统安装包所在路径,并通过ls或者dir命令查看安装包是否存在,例如
cd E:\WindowsSubsystem\
dir
发现存在后缀名为.appx的文件后,即可确认路径正确。图中可以看到我的安装包名字为:Ubuntu.appx
以下部分内容引自微软官方帮助文档,由“仰望星空的蚂蚁”翻译。原文网址:Install Linux Subsystem on Windows Server | Microsoft Docs
对安装包执行解压缩:
在PowerShell中输入如下命令:
Rename-Item .\Ubuntu.appx .\Ubuntu.zip #修改文件后缀使安装包成为压缩包
Expand-Archive .\Ubuntu.zip .\Ubuntu #解压缩至Ubuntu文件夹
注意在自己安装的过程中需要将文件名“Ubuntu.appx”更改为自己安装包的文件名,通常可以通过输入部分文件名后按Tab键自动补全。
添加子系统路径为环境变量
进入子系统路径,将子系统路径添加进入用户环境变量。
复制如图所示路径
进入高级系统设置——点击环境变量
选中用户变量中的Path项,点击编辑,在弹出的页面中点击新建,输入刚才复制的路径,点击确定即可完成环境变量的添加。
当然追求高端的玩家也可以选择在PowerShell中以命令行的形式添加环境变量,代码如下:
$userenv = [System.Environment]::GetEnvironmentVariable("Path", "User") #获取现有环境变量
[System.Environment]::SetEnvironmentVariable("PATH", $userenv + ";E:\WindowsSubsystem\Ubuntu", "User") #在现有环境变量后增加一行路径
执行Ubuntu安装
双击打开路径中的Ubuntu1804.exe即可自动进入系统初始化过程
或是在PowerShell中对应目录以命令行形式运行Ubuntu1804.exe
.\Ubuntu1804.exe
等待约5分钟后,会要求输入UNIX用户名和密码,注意输入密码时不会显示输入了什么,但事实上已经输入了,不要重复输入即可。至此,子系统安装完成。
注意:想要进入Ubuntu子系统同样需要双击这个ubuntu1804.exe建议发送桌面快捷方式。
解压安装后,更换国内源之前,应当关闭Ubuntu命令行(输入exit,回车)打开资源管理器,在地址栏输入
\\wsl$
查看是否出现如图所示远程硬盘:
若无如图所示远程文件夹,请再打开Ubuntu命令行,再刷新文件管理器查看是否出现上图所示文件夹
若出现,请右键该文件夹,选择“映射网络驱动器”,出现下图所示界面(因笔者已映射,因而显示盘符为Y而非Z):
按此情况(即只有打开ubuntu命令行时远程文件夹才出现)上图所示地址栏中应会出现
Ubuntu-18.04 (或其他版本的子系统)
此为Windows的一个bug,及自动填写的地址错误且无法手动修正,此问题会导致在不打开命令行时无法远程访问子系统,也会导致后面无法用VScode编辑(按理来说VScode远程打开命令行后应当等同于直接打开命令行,但经笔者尝试似乎并不可行,但笔者当时并未特别关心命令行是否已被VScode打开,也许是笔者当时尚未等VScode打开命令行便尝试打开文件,因而出现无法访问wsl
此问题解决方案很简单,卸载Ubuntu后升级windows即可(理论上不卸载也没关系,但笔者没有尝试),根据
Could not mapping path \\wsl$\<distro_name> to network drive · Issue #3854 · microsoft/WSL · GitHub
将系统版本升级至18342及以上即可解决,笔者升级结果如下:
已解决以上问题
若打开命令行后仍无显示远程文件夹,此为另一个问题,GitHub上有较多讨论,但笔者尚未遇到,也未根据GitHub上的讨论结果归纳出解决办法,在此不予置评。
第二步:更换国内源
双击Ubuntu1804.exe进入根目录,先备份源列表文件
sudo mv /etc/apt/sources.list /etc/apt/sources.list.backup
然后通过nano写入源列表文件,这里推荐南科大源
sudo nano /etc/apt/sources.list
复制下方源网址,在nano环境中用ctrl+u然后右键粘贴
deb https://mirrors.sustech.edu/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.sustech.edu/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.sustech.edu/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.sustech.edu/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.sustech.edu/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.sustech.edu/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.sustech.edu/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.sustech.edu/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.sustech.edu/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.sustech.edu/ubuntu/ bionic-backports main restricted universe multiverse
然后用ctrl+O,回车保存,ctrl+X退出编辑器,此时换源已经完成。
感谢南方科技大学开源软件镜像站(SUSTech Open Source Mirrors),祝南方科技大学越办越好。新 · 益求新,创 · 领未来。
如果遇到:无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
尝试如下命令:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
注意:Ubuntu20.04不能应用南科大源和中科大源,建议采用阿里云源:
deb http://mirrors.aliyun/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ bionic-backports main restricted universe multiverse
完成换源候请习惯性对系统进行更新:
## 更新包列表
sudo apt update
## 更新安装包
sudo apt upgrade
## 执行自动清理
sudo apt autoclean
第三步:安装Anaconda
在终端直接输入命令:
wget https://repo.anaconda/archive/Anaconda3-2020.11-Linux-x86_64.sh
然后打开终端,在其中输入如下命令:
bash Anaconda3-2020.11-Linux-x86_64.sh
如果有报错,在上一行命令后面加 -u
安装的最后一步会询问是否需要conda initiate程序进行配置,默认是no,这里选择yes。
如果需要将ubuntu中的默认python关联为anaconda中的python,则在conda initiate步骤中选择no并执行如下步骤:
安装完成后在终端输入:
sudo nano ~/.bashrc
在文件最后添加:
export PATH="/home/xupp/anaconda3/bin:$PATH"
然后用ctrl+O,确认文件名后回车保存,ctrl+X退出编辑器后在终端输入
source ~/.bashrc
重启终端
此时可以在终端中输入python检查是否安装成功,如果出现如下所示的anaconda字样说明安装成功
(base)username@computername:~$ python
Python 3.7.6 (default, Jan 8 2020, 19:59:22)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
如果不懂得如何安装,可以参考Ubuntu18.04 安装 Anaconda3_梦Dancing的博客-CSDN博客_ubuntu安装anaconda
重启终端后,用户名前会出现(base)字样,这是因为anaconda的base环境自启动了,可以通过如下命令关闭base环境自启动
## 永远关闭base环境自启动
conda config --set auto_activate_base false
## 只关闭本次自启动的base环境(事实上可以关闭任何已经进入的环境)
conda deactivate
此时,anaconda安装完成。
第四步:安装FEniCS有限元框架主体(请看完这一部分再动手安装)
将fenics安装进入base环境(优先推荐)
直接将fenics框架安装进入base环境中可以免去许多麻烦,例如:
- spyder安装进其他环境报错的问题
- 应用conda install安装库函数时可能出现的不兼容问题(如下方第五步所讲)
采用如下命令
## 关闭任何已经打开的环境
conda deactivate
## 打开base环境
conda activate base
## 更新conda,使其保持在最新版
conda update --all
## base环境下安装fenics
conda install -c conda-forge fenics
将fenics安装进入一个新的fenicsproject环境(不推荐)
执行如下命令:
conda create -n fenicsproject -c conda-forge fenics
等待安装完成后,可以尝试启动该环境:
source activate fenicsproject
或
conda activate fenicsproject
每一次当你需要调用fenics时,都需要执行conda activate fenicsproject命令。
第五步:安装fenics所需要的库函数
## 安装python的各种库函数 numpy matplotlib pandas等
conda install numpy
conda install matplotlib
conda install pandas
一般情况下,anaconda新创建的fenicsproject环境会内置numpy库函数,采用如下命令检查是否已经内置
conda list
第六步:安装mshr包
注意此时应该在base环境中或者是在自己创建的fenicsproject环境中
##进入主目录
cd ~
##从GitHub上拉取mshr包用作备份
git clone https://bitbucket/fenics-project/mshr
## 进入anaconda3目录
cd anaconda3
## 从GitHub上克隆mshr包的源代码
git clone https://bitbucket/fenics-project/mshr
然后开始编译安装mshr包,首先检查cmake版本
## 检查cmake版本
cmake --version
截至目前,cmake的版本是3.19.1,较低的cmake版本(例如低于3.10.1)可能会导致后续报如下所示的错误
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
如果这个报错出现,那么大概率是由于cmake版本过低导致的,可以通过如下命令来解决。
sudo apt install cmake
在cmake版本没有问题的情况下,执行如下代码即可完成mshr包的安装。
## 编译安装mshr包
cd mshr
mkdir build
cd build
cmake ..
sudo make install
其中cmake ..这一步容易出现问题,假如出现projram killed error,不要灰心,重新执行cmake ..命令即可。
如果在make install这一步中报如下所示错误,
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/lib/libmshr.so.2019.2.0.dev0
CMake Error at cmake_install.cmake:60 (file):
file INSTALL cannot copy file
"/home/username/anaconda3/mshr/build/libmshr.so.2019.2.0.dev0" to
"/usr/local/lib/libmshr.so.2019.2.0.dev0".
这是因为make安装时需要管理员权限,可以采用在make install前面加sudo解决。但是这也同时产生了问题,那就是sudo创建的文件,在本用户下是无法访问的,这也就导致build目录下的install_manifest.txt无法被访问,所以当调用的时候会报找不到模组的错误。
在终端中执行如下命令:其中username为你的用户名,chown的作用是改变文件的所有者。
sudo chown username install_manifest.txt
至此,安装结束
第七步:检查安装
首先需要重启WSL子系统,由于WSL是基于LxssManager服务运行的,因此可以通过重启LxssManager服务来重启WSL,步骤如下:
以管理员身份运行CMD
输入如下代码
## 关闭LxssManager服务
net stop LxssManager
## 重启LxssManager服务
net start LxssManager
此时已经完成了Ubuntu的重启,下面需要检查mshr包何fenics是否安装完成:在命令行中输入如下命令:
## 激活环境
conda activate base
## 启动python
python
## 检查mshr包安装情况
from mshr import *
## 检查fenics安装情况
form fenics import *
如果都没有报错,说明安装成功。
第八步:代码可视化
访问VS code官网 Visual Studio Code - Code Editing. Redefined
下载安装VS code,在VS code的插件栏中安装Remote - WSL插件
点击左下角的><图标,选择New WSL window即可进入Ubuntu子系统操作界面
至此,写代码,运行程序都可以正常进行了。
更多推荐
在Win10的Ubuntu子系统中安装FEniCS
发布评论