代码拉取完成,页面将自动刷新
\documentclass[fontset=founder]{ctexrep}
\usepackage{accsupp}
\usepackage[margin=2.4cm]{geometry}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{fontawesome5}
\usepackage[pdfpagelayout=SinglePage]{hyperref}
\usepackage[os=win,hyperrefcolorlinks]{menukeys}
\ctexset{
section/format = \Large\bfseries\raggedright,
}
\lstset{
backgroundcolor = \color{lightgray!30},
keywordstyle = \color{blue},
stringstyle = \color{brown},
basicstyle = {\small\ttfamily},
breaklines = true,
tabsize = 4,
gobble = 2,
numbers = left,
numberstyle = \tiny\emptyaccsupp,
frame = single,
xleftmargin = \ccwd,
numbersep = \ccwd,
columns = fullflexible,
% emphstyle = {\color{blue}\small\ttfamily},
% emph = {mkdir,rmdir,sudo,mount,umount,rm},
}
\newcommand\emptyaccsupp[1]{%
\BeginAccSupp{ActualText={}}#1\EndAccSupp{}%
}
\renewmenumacro{\menu}[>]{angularmenus}
\renewmenumacro{\keys}[+]{shadowedroundedkeys}
\title{\bfseries 一份简短的关于 FEniCS 安装的介绍%
\thanks{\url{https://github.com/OsbertWang/install-fenics-guide-zh-cn}}%
}
\author{王然%
}
\date{\today}
\begin{document}
\maketitle
\begin{abstract}
本文记录了我安装 FEniCS 的经历.
最开始,
我将 FEniCS 安装在 WSL 的 Ubuntu 20.04 下.
本人 Ubuntu 使用经验并不丰富,
很可能会有记录错误的地方.
另外 FEniCS 现已停止开发,
其后续版本 FEniCSx 还未稳定.
这无疑给用户带来了不安.
2021年10月23日,
我尝试安装 \href{https://www.docker.com/get-started}{Docker}.
因此补充了 Docker 下安装 FEniCS 的步骤.
而后的2021年10月28日,
我正式将 FEniCSx 的安装步骤写入手册.
根据当时的官方的建议,
我只撰写了 Docker 下的安装步骤.
2023年3月25日,
在 Windows 11 下的 WSL 中安装了 Ubuntu 22.04,
此次尝试安装 FEniCSx.
2023年4月13日,
尝试在 Anaconda 中安装 FEniCSx.
实际上直接在 Ubuntu 中安装 FEniCSx 的过程与本手册中介绍得相似,
用户直接查阅相关内容即可.
目前在 FEniCSx 官网上可以找到
\href{https://jsdokken.com/dolfinx-tutorial/}{FEniCSx 教程},
阅读过程中可以随时在页面右上方提交 \href{https://github.com/jorgensd/ dolfinx-tutorial/issues/new?title=Issue%20on%20page%20%2Findex.html& body=Your%20issue%20content%20here.}{Github issues}.
除教程外,
用户还可以阅读
\href{https://docs.fenicsproject.org/}{FEniCSx Project Documentation}
来学习部分用法.
希望本手册能够方便用户使用.
\end{abstract}
\tableofcontents
\chapter{WSL 中安装 FEniCSx}
\section{安装 WSL}\label{sec:wsl.install}
在网上能够找到许多安装 WSL 的教程,
例如%
\href{https://learn.microsoft.com/zh-cn/windows/wsl/install}{微软官方文档}.
然而,
由于大陆网络无法自由访问备份于 \url{raw.githubusercontent.com} 的
\href{https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json}{WSL 的 json} 文件,
这会导致使用
\begin{lstlisting}
wsl --install
\end{lstlisting}
直接安装失败,
因此不得不采用另外的方案,
例如%
\href{https://learn.microsoft.com/zh-cn/windows/wsl/install-manual}{旧版手动安装步骤}%
或者修改 hosts.
具体而言,
先在一些 ip 查询网站找到 \url{raw.githubusercontent.com} 对应的 ip,
比如目前我找到的就是以下内容
\begin{lstlisting}
185.199.111.133 raw.githubusercontent.com
\end{lstlisting}
接下来用管理员身份打开
\begin{lstlisting}
C:\Windows\System32\drivers\etc\hosts
\end{lstlisting}
将查询到的 ip 内容添加到文件末尾.
这时再执行
\begin{lstlisting}
wsl -l -o
\end{lstlisting}
就可以看到当前允许安装的 WSL 发行版
\begin{lstlisting}
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_8_5 Oracle Linux 8.5
OracleLinux_7_9 Oracle Linux 7.9
SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4
openSUSE-Leap-15.4 openSUSE Leap 15.4
openSUSE-Tumbleweed openSUSE Tumbleweed
\end{lstlisting}
\section{迁移 WSL 的安装位置}
考虑到一部分用户的系统盘空间有限,
且根据%
\href{https://learn.microsoft.com/zh-cn/windows/wsl/troubleshooting?source=recommendations#installation-issues}{微软官方文档},
WSL 只能安装在系统盘,
因此可以考虑迁移 WSL 的安装位置到其他盘.
本部分内容源自
\href{https://superuser.com/questions/1701175/installing-ubuntu-on-mnt-d-with-wsl}{StackExchange}.
方法牵扯到主系统和子系统的操作.
第一步,
建立新的位置.
假设新位置在 \texttt{X:\textbackslash} 盘.
在 \textsf{cmd} 中执行
\begin{lstlisting}[language=bash]
wsl -l
\end{lstlisting}
可以查到当前已经安装的 WSL 分发,
例如
\begin{lstlisting}
适用于 Linux 的 Windows 子系统分发:
Ubuntu (默认)
\end{lstlisting}
在 \textsf{bash} 中执行
\begin{lstlisting}[language=bash]
lsb_release -a
\end{lstlisting}
查到实际 WSL 内 Ubuntu 的版本,
例如
\begin{lstlisting}
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.2 LTS
Release: 22.04
Codename: jammy
\end{lstlisting}
然后在 \textsf{cmd} 中执行
\begin{lstlisting}[language=bash]
mkdir X:\WSL\instances\Ubuntu2204
mkdir X:\WSL\images
cd X:\WSL\images
\end{lstlisting}
创建新的位置.
这里起名 \texttt{Ubuntu2204} 是因为 Ubuntu 实际版本为 22.04,
也可以起其他名字.
第二步,
导出原 WSL 分发并导入新位置.
在 \textsf{cmd} 中执行
\begin{lstlisting}[language=bash]
wsl --export Ubuntu ubuntu.tar
wsl --import Ubuntu2204 X:\WSL\instances\Ubuntu2204 ubuntu.tar --version 2
\end{lstlisting}
第一行的 \texttt{Ubuntu} 指的是系统默认的 WSL 分发,
这条命令将原本的分发导出为一个压缩包.
第二行的 \texttt{Ubuntu2204} 是未来指定的 WSL 分发,
也就是将前面导出的压缩包导入成新的 WSL 分发.
第三步,
启动新的分发并且设置为默认.
在 \textsf{cmd} 中执行
\begin{lstlisting}[language=bash]
wsl ~ -d Ubuntu2204
\end{lstlisting}
进入 \texttt{Ubuntu2204} 分发的 WSL 系统,
在当前 \textsf{bash} 中执行
\begin{lstlisting}[language=bash]
sudo -e /etc/wsl.conf
\end{lstlisting}
输入以下内容
\begin{lstlisting}
[user]
default=<your_username>
\end{lstlisting}
\texttt{<your\_username>} 是用户自定义的 WSL 的用户名,
个人用了原本 \texttt{Ubuntu} 分发内的用户名.
然后依次 \keys{\ctrl + X}, \keys{Y}, \keys{\enter} 保存退出.
退出 \texttt{bash},
在 \texttt{cmd} 中执行
\begin{lstlisting}[language=bash]
wsl --terminate Ubuntu2204
wsl ~ -d Ubuntu2204
\end{lstlisting}
这时如果一切正常,
就可以将 \texttt{Ubuntu2204} 设置为默认 WSL 分发,
即在 \texttt{cmd} 中执行
\begin{lstlisting}[language=bash]
wsl --set-default Ubuntu2204
\end{lstlisting}
这时在 \textsf{bash} 中执行
\begin{lstlisting}[language=bash]
echo $WSL_DISTRO_NAME
\end{lstlisting}
返回结果
\begin{lstlisting}
Ubuntu2204
\end{lstlisting}
就表明一切正常.
第四步,
删除旧分发.
在 \textsf{cmd} 中执行
\begin{lstlisting}[language=bash]
wsl --unregister Ubuntu
\end{lstlisting}
就将旧分发 \texttt{Ubuntu} 删除了.
这时在 \textsf{cmd} 中执行
\begin{lstlisting}[language=bash]
wsl -l
\end{lstlisting}
将看到
\begin{lstlisting}
适用于 Linux 的 Windows 子系统分发:
Ubuntu2204 (默认)
\end{lstlisting}
实际上,
将整个 WSL 的安装位置迁移还有一个好处.
根据%
\href{https://learn.microsoft.com/zh-cn/windows/wsl/filesystems#file-storage-and-performance-across-file-systems}{微软官方文档},
将项目文件直接存储在 WSL 的驱动器上,
性能速度会提高.
\section{选择编辑器}\label{sec:editor}
目前 Windows 11 已经允许 WSL 可视化,
但我还是更偏向于使用
\href{https://code.visualstudio.com/}{VS Code},
在%
\href{https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-vscode}{微软官方文档}%
中有详细的介绍,
主要就是利用
\href{https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack}{Remote Development}.
\section{更换 Ubuntu 源}\label{sec:source}
从本节开始,
有关命令行的操作,
在未特殊声明的情况下,
全部为 WSL 中 \textsf{bash} 的操作.
鉴于中国大陆地区网络特性,
强烈推荐用户安装 FEniCSx 前更改 Ubuntu 的源.
在这里,
我使用%
\href{https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/}{清华大学镜像}.
当然还有其他镜像,
例如%
\href{https://mirrors.ustc.edu.cn/help/ubuntu.html}{中国科技大学镜像}.
执行
\begin{lstlisting}[language = bash]
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
\end{lstlisting}
备份 \textsf{sources.list} 文件.
接下来执行
\begin{lstlisting}[language = bash]
cp /etc/apt/sources.list ~/sources.list
\end{lstlisting}
复制一份 \textsf{sources.list} 到用户文件夹.
\begin{lstlisting}[language = bash]
code ~/sources.list
\end{lstlisting}
打开文件,
将文件替换为以下内容\footnote{根据具体的 Ubuntu 版本,
具体内容会有所调整.}
\begin{lstlisting}
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
\end{lstlisting}
然后执行
\begin{lstlisting}[language = bash]
sudo cp ~/sources.list /etc/apt/sources.list
\end{lstlisting}
替换原始的 \textsf{sources.list} 文件.
之后执行
\begin{lstlisting}[language=bash]
sudo apt update && sudo apt upgrade
\end{lstlisting}
换源并更新.
若更改错误,
可执行
\begin{lstlisting}[language=bash]
sudo cp /etc/apt/sources.list.bak /etc/apt/sources.list
\end{lstlisting}
恢复文件.
\section{添加 PPA}
执行
\begin{lstlisting}[language = bash]
sudo add-apt-repository ppa:fenics-packages/fenics
\end{lstlisting}
鉴于网络原因,
直接从 PPA 下载容易丢内容.
这里介绍中科大的%
\href{https://mirrors.ustc.edu.cn/}{反向代理},
将 \textsf{fenics-packages-ubuntu-fenics-jammy.list} 备份
\begin{lstlisting}[language = bash]
sudo cp /etc/apt/sources.list.d/fenics-packages-ubuntu-fenics-jammy.list /etc/apt/sources.list.d/fenics-packages-ubuntu-fenics-jammy.list.bak
\end{lstlisting}
接下来复制到用户文件夹
\begin{lstlisting}[language = bash]
cp /etc/apt/sources.list.d/fenics-packages-ubuntu-fenics-jammy.list ~/fenics-packages-ubuntu-fenics-jammy.list
\end{lstlisting}
打开文件
\begin{lstlisting}[language = bash]
code ~/fenics-packages-ubuntu-fenics-jammy.list
\end{lstlisting}
将文件改为
\begin{lstlisting}
deb https://launchpad.proxy.ustclug.org/fenics-packages/fenics/ubuntu jammy main
# deb-src https://launchpad.proxy.ustclug.org/fenics-packages/fenics/ubuntu jammy main
\end{lstlisting}
而后再替换原文件
\begin{lstlisting}[language = bash]
sudo cp ~/fenics-packages-ubuntu-fenics-jammy.list /etc/apt/sources.list.d/fenics-packages-ubuntu-fenics-jammy.list
\end{lstlisting}
最后再更新
\begin{lstlisting}[language = bash]
sudo apt update
\end{lstlisting}
即完成添加 PPA 的操作.
\section{安装 FEniCSx 及其他组件}
在 \textsf{bash} 中执行
\begin{lstlisting}[language = bash]
sudo apt install build-essential
\end{lstlisting}
为后续做准备.
接下来执行
\begin{lstlisting}[language = bash]
sudo apt install fenicsx
\end{lstlisting}
即可开始安装 FEniCSx.
此外,
在很多 FEniCSx 例子中都需要 \texttt{pyvista},
它需要使用 \textsf{pip3} 来安装.
但受网络因素影响,
安装速度很慢,
所以需要先更换到国内的源,
例如%
\href{https://mirrors.tuna.tsinghua.edu.cn/help/pypi/}{清华源}.
在 \textsf{bash} 中执行
\begin{lstlisting}
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
\end{lstlisting}
升级 \textsf{pip3}.
然后执行
\begin{lstlisting}
python3 -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
\end{lstlisting}
将源全部换为清华源.
接下来执行
\begin{lstlisting}
python3 -m pip install pyvista
\end{lstlisting}
安装 \texttt{pyvista}.
在当前的 FEniCSx 教程中还涉及
\href{https://github.com/ornladios/ADIOS2}{ADIOS2}
的使用,
它主要用于使用
\href{https://www.paraview.org/}{Paraview}
做后处理.
根据
\href{https://github.com/jorgensd/dolfinx-tutorial/issues/125#issuecomment-1502776418}{Github}
上的讨论,
它需要安装在 FEniCSx 之前.
\href{https://adios2.readthedocs.io/en/latest/setting_up/setting_up.html#}{文档}%
中提供了由源安装的方法,
感兴趣的用户可自行研究.
\section{测试安装}
在 \textsf{bash} 中执行
\begin{lstlisting}[language = bash]
python3 -c 'import dolfinx'
\end{lstlisting}
若没有任何报错提示,
则说明安装成功.
接下来可以下载
\href{https://docs.fenicsproject.org/dolfinx/main/python/_downloads/b94ac7be61dc3726ca331afd20f195d2/demo_poisson.py}{demo\_poisson.py}
或直接复制本地的同名文件
\begin{lstlisting}
cp /usr/share/dolfinx/demo-python/demo_poisson.py ./
\end{lstlisting}
并在 \textsf{bash} 中编译
\begin{lstlisting}
python3 demo_poisson.py
\end{lstlisting}
查看结果.
\chapter{Docker 中 安装 FEniCSx}
本部分内容大部分源自 \href{https://github.com/FEniCS/dolfinx#docker-images}{Github 上的安装教程},
其中有些细节是自己尝试后的经验积累.
\section{安装 WSL 和 Docker}
对于 Windows 11 用户,
使用 Docker 前需要安装 WSL,
而且默认是 WSL 2.
具体步骤可以参考第 \ref{sec:wsl.install} 节.
在安装完 WSL 后,
用户可以下载 \href{https://www.docker.com/get-started}{Docker 桌面版}.
安装并重启,
将开启 Docker 教学环节.
注意,
在目前的 Windows 版本中,
Docker 默认不能改变安装路径.
更加详细的内容可以看\href{https://docs.docker.com/desktop/windows/install/}{这里}.
\section{运行 FEniCSx 容器}
FEniCSx 团队预构建了 FEniCSx 的 \href{https://hub.docker.com/u/dolfinx}{Docker 镜像}.
由于 DOLFINx 的 Docker 镜像托管在 Docker-hub.
用户可以在 \textsf{cmd} 中直接访问该镜像
\begin{lstlisting}
docker run -ti -v D:/work-fenicsx:/root/shared --name fenicsx-container dolfinx/dolfinx:stable
\end{lstlisting}
以上代码中,
已经在电脑中存在的工作路径 \texttt{D:\textbackslash work-fenicsx} 被设为共享路径,
容器名称为 \texttt{fenicsx-container}.
添加共享路径是由于 Docker 自身的特性,
它默认不能访问镜像外的文件.
如果工作路径 \texttt{D:\textbackslash work-fenicsx} 中有已经写好的文件,
就必须将已有工作路径共享到 Docker 容器中.
\section{查询容器}
在 \textsf{cmd} 中执行
\begin{lstlisting}
docker ps
\end{lstlisting}
可以看到目前正在运行的容器的信息.
执行
\begin{lstlisting}
docker ps -a
\end{lstlisting}
可以查询所有容器的信息.
\section{退出、停止、再进入甚至删除容器}
与一般的命令行操作一样,
在 Docker 容器内
\begin{lstlisting}
fenicsx@d66e6f16a673:~
\end{lstlisting}
中输入
\begin{lstlisting}
exit
\end{lstlisting}
就退出了容器,
如果要停止依然启动的容器,
可以在 \textsf{cmd} 中执行
\begin{lstlisting}
docker stop d66e6f16a673
\end{lstlisting}
或者
\begin{lstlisting}
docker stop fenicsx-container
\end{lstlisting}
停止已有的容器,
前者是容器的 ID,
后者是容器的名称.
想要再进入容器,
需要先启动容器,
只需要在 \textsf{cmd} 中执行
\begin{lstlisting}
docker start fenicsx-container
\end{lstlisting}
然后再执行
\begin{lstlisting}
docker exec -ti fenicsx-container /bin/bash -l
\end{lstlisting}
便可进入容器.
如果不再需要容器,
在 \textsf{cmd} 中执行
\begin{lstlisting}
docker rm fenicsx-container
\end{lstlisting}
可以直接删除它,
\section{拉取镜像}
目前 FEniCSx 还处于开发状态,
因此很多时候需要拉取镜像来使用最新的版本.
在 \textsf{cmd} 中执行
\begin{lstlisting}
docker pull dolfinx/dolfinx
\end{lstlisting}
系统就会拉取最新的内容到本地,
然后执行
\begin{lstlisting}
docker image list
\end{lstlisting}
可以看到目前本地的全部镜像的信息.
\section{编译文件}
将 \href{https://docs.fenicsproject.org/dolfinx/main/python/_downloads/b94ac7be61dc3726ca331afd20f195d2/demo_poisson.py}{demo\_poisson.py} 下载至 \texttt{D:\textbackslash work-fenicsx},
进入容器,
在 \texttt{shared} 文件夹中执行
\begin{lstlisting}
python3 demo_poisson.py
\end{lstlisting}
编译文件.
\section{安装其他组件}
上面的例子运行后,
系统会出现
\begin{lstlisting}
pyvista is required to visualise the solution
\end{lstlisting}
这是因为 \texttt{pyvista} 没有安装成功.
根据 \href{https://fenicsproject.discourse.group/t/how-to-use-pyvista-in-docker-for-windows-10-user/6921}{fenicsproject.discourse.group} 的回答,
简述安装 pyvista 的过程.
首先换源.
将 \texttt{sources.list} 复制到 \texttt{shared} 文件夹
\begin{lstlisting}
cp /etc/apt/sources.list ~/shared/sources.list
\end{lstlisting}
然后在 \texttt{D:\textbackslash work-fenicsx} 中更改 \texttt{sources.list} 内容,
见第 \ref{sec:source} 节.
改后的文件复制回去
\begin{lstlisting}
cp ~/shared/sources.list /etc/apt/sources.list
\end{lstlisting}
下面开始安装,
依次执行
\begin{lstlisting}
export PYVISTA_OFF_SCREEN=true
apt update
apt install -y --no-install-recommends libgl1-mesa-dev xvfb
pip3 install pyvista
\end{lstlisting}
即可安装完成.
如论坛所说,
再次执行
\begin{lstlisting}
python3 demo_poisson.py
\end{lstlisting}
将得到 \texttt{u.png} 文件.
若需使用
\href{https://github.com/ornladios/ADIOS2}{ADIOS2},
根据%
\href{https://adios2.readthedocs.io/en/latest/setting_up/setting_up.html#docker}{文档},
用户可由 Docker 安装,
感兴趣的用户可自行研究.
\chapter{Anaconda 中安装 FEniCSx}
本部分内容主要源自
\href{https://github.com/FEniCS/dolfinx#conda}{Github}.
\section{安装 WSL 和 Anaconda}
Anaconda 中安装 FEniCSx 无法直接在 Windows 11 上实现,
因为一些依赖不支持 Windows 操作系统,
所以还是要在 WSL 中安装.
具体步骤可以参考第 \ref{sec:wsl.install} 节.
在安装完 WSL 后,
\href{https://www.anaconda.com/products/distribution#Downloads}{下载}
Anaconda 的 64-Bit (x86) 安装文件 \texttt{Anaconda3-*-Linux-x86\_64.sh},
这里的 \texttt{*} 表示时间.
下载完成后,
在 \textsf{bash} 中进入 \texttt{Anaconda3-*-Linux-x86\_64.sh} 所在目录,
将其复制到用户文件夹
\begin{lstlisting}[language=bash]
cp Anaconda3-*-Linux-x86\_64.sh ~/
\end{lstlisting}
进入用户文件夹并安装
\begin{lstlisting}[language=bash]
cd ~/
bash Anaconda3-*-Linux-x86\_64.sh
\end{lstlisting}
接下来根据系统提示进行安装即可,
其中大约有几次选项.
第一次是
\begin{lstlisting}
Do you accept the license terms?
\end{lstlisting}
这个必须写 \texttt{yes}.
第二次是
\begin{lstlisting}
Anaconda3 will now be installed into this location:
/home/USERNAME/anaconda3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
\end{lstlisting}
这里的 \texttt{USERNAME} 是用户名,
建议用户在此路径安装.
第三次是
\begin{lstlisting}
Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
\end{lstlisting}
这个建议写 \texttt{yes},
否则后续用户需要自行添加环境变量.
安装完成后,
用户关闭再打开 \textsf{bash},
在路径前显示 \texttt{(base)} 即表示安装成功.
如果用户不希望 \texttt{base} 启用,
在 \textsf{bash} 中执行
\begin{lstlisting}[language=bash]
conda config --set auto_activate_base false
\end{lstlisting}
\subsection{使用镜像}
受限于大陆网络现状,
用户也可访问大陆的 Anaconda 镜像,
如%
\href{https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/}{清华大学}%
和%
\href{https://mirrors.pku.edu.cn/anaconda/archive/}{北京大学},
下载安装文件.
安装完成后,
在用户目录下打开 \texttt{.condarc} 文件并修改其中内容,
例如使用 \href{https://code.visualstudio.com/}{VS Code}\footnote{详情见 \ref{sec:editor}~节}
\begin{lstlisting}
code ~/.condarc
\end{lstlisting}
将以下内容复制到文件中\footnote{来自清华大学\href{https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/}{镜像}}
\begin{lstlisting}
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
\end{lstlisting}
保存退出,
再执行以下命令清除索引缓存,
保证用的是镜像站提供的索引
\begin{lstlisting}
conda clean -i
\end{lstlisting}
\subsection{使用自定义虚拟环境}
使用 Anaconda 时,
默认在 \texttt{base} 环境中,
用户也可以自定义环境.
实际上,
\href{https://github.com/FEniCS/dolfinx#conda}{FEniCSx 安装手册}%
建议使用虚拟环境来安装.
在 \texttt{base} 中执行
\begin{lstlisting}
conda create -n fenicsx-env python=3.10
\end{lstlisting}
这表示创建 python 版本为 3.10,
名字为 fenicsx-env 的虚拟环境,
版本可以不指定.
激活 fenicsx-env 虚拟环境
\begin{lstlisting}
conda activate fenicsx-env
\end{lstlisting}
退出被激活的虚拟环境
\begin{lstlisting}
conda deactivate
\end{lstlisting}
删除 fenicsx-env 虚拟环境
\begin{lstlisting}
conda remove -n fenicsx-env --all
\end{lstlisting}
\section{安装 FEniCSx}
安装 Anaconda 后,
在 \textsf{bash} 中执行
\begin{lstlisting}
conda create -n fenicsx-env
conda activate fenicsx-env
conda install -c conda-forge fenics-dolfinx mpich pyvista
\end{lstlisting}
即可安装.
\end{document}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。