衆所周知,Win10是最好的Linux發行版。通過Win10的WSL功能,可以輕松實作Linux系統的安裝與使用,基本可以滿足大部分人對Linux的需求。本文會詳細的介紹Ubuntu子系統的安裝與FEniCS的配置。
當然,如果你想要在虛拟機上安裝fenics,請移步另一篇部落格:https://blog.csdn.net/qq_40492373/article/details/105207726
第一步:将Ubuntu子系統安裝至非系統盤
網上有很多教程說讓通過微軟官方商店安裝ubuntu子系統,然後在用LxRunOffline工具将子系統從系統盤遷移至非系統盤。這樣的操作非常容易因其子系統的崩潰或是無法打開,下面我将介紹另一種方式直接将ubuntu子系統安裝至你想要安裝的地方。
啟用win10自帶的“适用于Linux的Windows子系統”功能
打開 程式面闆——程式——啟用或關閉Windows功能
勾選“适用于Linux的Windows子系統”,确定
下載下傳Ubuntu子系統安裝包
前往微軟官方網站:https://docs.microsoft.com/en-au/windows/wsl/install-manual
找到相應的Linux發行版子系統安裝包,本文以Ubuntu18.04為例。
如果覺得直接通路微軟官網下載下傳速度過慢,也可以通路下方連結,我已經将子系統安裝包上傳作為免費下載下傳資源了。注意下載下傳後需要解壓
Ubuntu18.04安裝包:https://download.csdn.net/download/qq_40492373/20665510
Ubuntu20.04安裝包:https://download.csdn.net/download/qq_40492373/20665523
下載下傳完成後将安裝包(字尾名為:.appx)儲存在你希望安裝子系統的路徑上。
在非系統盤安裝Ubuntu18.04子系統
打開Windows PowerShell (管理者),用cd指令切換進入子系統安裝包所在路徑,并通過ls或者dir指令檢視安裝包是否存在,例如
cd E:\WindowsSubsystem\
dir
發現存在字尾名為.appx的檔案後,即可确認路徑正确。圖中可以看到我的安裝包名字為:Ubuntu.appx
以下部分内容引自微軟官方幫助文檔,由“仰望星空的螞蟻”翻譯。原文網址:https://docs.microsoft.com/en-au/windows/wsl/install-on-server
對安裝包執行解壓縮:
在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建議發送桌面快捷方式。
第二步:更換國内源
輕按兩下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.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
然後用ctrl+O,回車儲存,ctrl+X退出編輯器,此時換源已經完成。
感謝南方科技大學開源軟體鏡像站(https://mirrors.sustech.edu.cn/),祝南方科技大學越辦越好。新 · 益求新,創 · 領未來。
如果遇到:無法鎖定管理目錄(/var/lib/dpkg/),是否有其他程序正占用它?
嘗試如下指令:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
注意:Ubuntu20.04不能應用南科大源和中科大源,建議采用阿裡雲源:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
完成換源候請習慣性對系統進行更新:
## 更新包清單
sudo apt update
## 更新安裝包
sudo apt upgrade
## 執行自動清理
sudo apt autoclean
第三步:安裝Anaconda
前往anaconda官網download頁面:https://www.anaconda.com/distribution/
下載下傳最新版的anaconda安裝檔案,Linux對應的檔案字尾名是.sh,複制進入自己現賬戶的根目錄(~/home/username/)
或者在終端直接輸入指令:
wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh
然後打開終端,在其中輸入如下指令:
bash Anaconda3-2020.11-Linux-x86_64.sh
安裝的最後一步會詢問是否需要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)[email protected]:~$ 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.
如果不懂得如何安裝,可以參考https://blog.csdn.net/qq_15192373/article/details/81091098
重新開機終端後,使用者名前會出現(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 base activate
## 更新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.org/fenics-project/mshr
## 進入anaconda3目錄
cd anaconda3
## 從GitHub上克隆mshr包的源代碼
git clone https://bitbucket.org/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官網 https://code.visualstudio.com/
下載下傳安裝VS code,在VS code的插件欄中安裝Remote - WSL插件
點選左下角的><圖示,選擇New WSL window即可進入Ubuntu子系統操作界面
至此,寫代碼,運作程式都可以正常進行了。