<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% !TeX root = ../install-latex-guide-zh-cn.tex

\chapter{有关 Ubuntu 和 WSL 的补充}\label{chp:appendix:addition}

\section{更换 Ubuntu 24.04 源}\label{sec:addition:source}

鉴于大陆网络现状,
建议更换 Ubuntu 24.04 源至国内,
例如更换至清华大学.
在 \textsf{Terminal} 中执行
\begin{lstlisting}[deletekeywords = apt]
  sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
\end{lstlisting}
备份 \texttt{sources.list} 文件.
接下来执行
\begin{lstlisting}[deletekeywords = apt]
  sudo gedit /etc/apt/sources.list
\end{lstlisting}
将文件替换为以下内容%
\footnote{本段文字可至%
  \href{https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/}{清华大学镜像网站}%
  获取}
\begin{lstlisting}[
  morekeywords = {deb, noble, noble-updates, noble-backports, noble-security},
  alsoletter = -]
  # 默认注释了源码镜像以提高 apt update 速度, 如有需要可自行取消注释
  deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
  # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
  deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
  # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
  deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
  # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse

  # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-security main restricted universe multiverse
  # # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-security main restricted universe multiverse

  deb http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse
  # deb-src http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse

  # 预发布软件源, 不建议启用
  # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse
  # # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse
\end{lstlisting}
保存退出.
再执行
\begin{lstlisting}
  sudo apt update &amp;&amp; sudo apt upgrade
\end{lstlisting}
换源并更新.
若更改错误,
可执行
\begin{lstlisting}[deletekeywords = apt]
  sudo cp /etc/apt/sources.list.bak /etc/apt/sources.list
\end{lstlisting}
恢复文件.

\section{安装字体}\label{sec:addition:font}

有用户指出,
Ubuntu 中安装字体比较麻烦.
这里给出一个方法.

在安装字体前先保证 "fontconfig" 和 "xfonts-utils" 已安装
\begin{lstlisting}
  sudo apt install fontconfig xfonts-utils
\end{lstlisting}
获取需要安装的字体文件,
假设文件保存在 \path{~/myfonts/},
WSL 用户甚至可以保存在主系统路径中.
然后将其链接到 \path{/usr/share/fonts/} 文件夹
\begin{lstlisting}
  sudo ln -s ~/myfonts /usr/share/fonts
\end{lstlisting}
最后建立字体缓存
\begin{lstlisting}
  mkfontscale
  mkfontdir
  fc-cache -fv
\end{lstlisting}
这时执行
\begin{lstlisting}
  fc-list
\end{lstlisting}
即可见到目前可用的字体.
若要删除刚刚安装的字体,
只需要直接删除
\begin{lstlisting}
  sudo rm /usr/share/fonts/myfonts
\end{lstlisting}

实际上有部分字体可直接使用源进行安装,
如安装字体 Noto CJK
\begin{lstlisting}
  sudo apt install fonts-noto-cjk
  sudo apt install fonts-noto-cjk-extra
\end{lstlisting}
安装 Windows 系统中常见的字体 Andale Mono,
Arial Black,
Arial (Bold, Italic, Bold Italic),
Comic Sans MS (Bold),
Courier New (Bold, Italic, Bold Italic),
Georgia (Bold, Italic, Bold Italic),
Impact,
Times New Roman (Bold, Italic, Bold Italic),
Trebuchet (Bold, Italic, Bold Italic),
Verdana (Bold, Italic, Bold Italic),
Webdings
\begin{lstlisting}
  sudo apt install ttf-mscorefonts-installer
\end{lstlisting}
安装字体文泉驿正黑,
文泉驿微米黑,
文泉驿等宽微米黑,
文泉驿点阵宋体,
文泉驿点阵楷体
\begin{lstlisting}
  sudo apt install ttf-wqy-zenhei
\end{lstlisting}

\section{反向代理 PPA}\label{sec:addition:proxy}

这里介绍中科大的\href{https://mirrors.ustc.edu.cn/}{反向代理},
将
\begin{lstlisting}[deletekeywords = apt]
  /etc/apt/sources.list.d/
\end{lstlisting}
中文件的内容
\begin{lstlisting}
  http(s)://ppa.launchpad.net
\end{lstlisting}
改为
\begin{lstlisting}
  https://launchpad.proxy.ustclug.org
\end{lstlisting}
而后再
\begin{lstlisting}
  sudo apt update
\end{lstlisting}
即完成换源.
有时地址太多而逐个换太麻烦,
可以直接使用如下命令直接替换\footnote{参见 \url{https://mogeko.me/posts/zh-cn/035/}}
\begin{lstlisting}[deletekeywords = apt]
  sudo find /etc/apt/sources.list.d/ -type f -name "*.list" -exec  sed  -i.bak -r  's#deb(-src)?\s*http(s)?://ppa.launchpad.net#deb\1 https\2://launchpad.proxy.ustclug.org#ig' {} \;
\end{lstlisting}

\section{用 VS Code 作为 WSL 中的编辑器}\label{sec:addition:wsl-editor}

微软最近频繁推荐 WSL 作为开发工具,
详情阅读%
\href{https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-vscode}{微软文档}.
本手册在此基础上,
借助 \href{https://code.visualstudio.com/download}{VS Code} 的 \href{https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack}{Remote Development}
插件实现若干功能.
若非特别指明,
以下操作均在 WSL 中用 \textsf{bash} 执行.

VS Code 的插件权限有限,
当更改 \texttt{sources.list} 时,
先在 \textsf{bash} 中将 \texttt{sources.list} 备份
\begin{lstlisting}[deletekeywords = apt]
  sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
\end{lstlisting}
再用 VS Code 打开文档
\begin{lstlisting}[deletekeywords = apt, morekeywords = code]
  code /etc/apt/sources.list
\end{lstlisting}
并对其中内容进行更改,
并且另存为
\begin{lstlisting}
  ~/sources.list.sav
\end{lstlisting}
执行
\begin{lstlisting}[deletekeywords = apt]
  sudo cp ~/sources.list.sav /etc/apt/sources.list
\end{lstlisting}
替换文档.
若发现文档有错误,
执行
\begin{lstlisting}[deletekeywords = apt]
  sudo cp /etc/apt/sources.list.bak /etc/apt/sources.list
\end{lstlisting}
恢复文档.

更改 \texttt{.bashrc} 相对简单,
将 \texttt{.bashrc} 备份
\begin{lstlisting}
  cp ~/.bashrc ~/.bashrc.bak
\end{lstlisting}
用 VS Code 打开文档
\begin{lstlisting}[morekeywords = code]
  code ~/.bashrc
\end{lstlisting}
并对其中内容进行更改并保存.
若更改错误,
可以执行
\begin{lstlisting}
  cp ~/.bashrc.bak ~/.bashrc
\end{lstlisting}
恢复文档.

利用
\href{https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop}{\LaTeX\ Workshop}
插件可以将 VS Code 作为 \LaTeX\ 编辑器,
难点在于如何设置.
这里还是建议用户阅读插件
\href{https://github.com/James-Yu/LaTeX-Workshop/wiki}{Wiki}
了解更多内容.
以下 VS Code 设置的 \texttt{json} 文件内容为个人自用的 \LaTeX\ Workshop 设置,
仅供参考,
其中注释的部分是调用外部 SumatraPDF 阅读器的设置,
用户可阅读
\href{https://github.com/OsbertWang/latex-editor-sumatrapdf}{\textsf{latex-editor-sumatrapdf}}
来了解更多内容.
\begin{lstlisting}[language = json]
  "latex-workshop.latex.tools": [
    {
      "name": "latexmkpdf",
      "command": "latexmk",
      "args":
        [
          "-synctex=1", "%DOCFILE%",
          "-halt-on-error", "-file-line-error",
          "-pdf", "-interaction=nonstopmode"
        ]
    },
    {
      "name": "latexmkxe",
      "command": "latexmk",
      "args":
        [
          "-synctex=1", "%DOCFILE%",
          "-halt-on-error", "-file-line-error", 
          "-xelatex", "-interaction=nonstopmode",
        ]
    },
  ],
  "latex-workshop.latex.recipes": [
    {
      "name": "latexmkpdf",
      "tools": [ "latexmkpdf" ]
    },
    {
      "name": "latexmkxe",
      "tools": [ "latexmkxe" ]
    }
  ],
  "latex-workshop.latex.autoBuild.run": "never",
  "latex-workshop.view.pdf.viewer": "tab"
  // "latex-workshop.view.pdf.viewer": "external",
  // "latex-workshop.view.pdf.ref.viewer": "external",
  // "latex-workshop.view.pdf.external.viewer.command": "&lt;SumatraPDFROOT&gt;/SumatraPDF.exe",
  // "latex-workshop.view.pdf.external.viewer.args": [
  //   "-inverse-search", "%PDF%",
  //   "\"&lt;VSCodeROOT&gt;/bin/code.cmd\" -r -g \"%f:%l\"",
  // ],
  // "latex-workshop.view.pdf.external.synctex.command":"&lt;SumatraPDFROOT&gt;/SumatraPDF.exe",
  // "latex-workshop.view.pdf.external.synctex.args":[
  //   "-forward-search", "%TEX%", "%LINE%", "%PDF%"
  // ],
\end{lstlisting}

实际使用时,
用户需要结合自身安装情况更换 \path{&lt;SumatraPDFROOT&gt;} 和 \path{&lt;VSCodeROOT&gt;},
即 SumatraPDF 和 VS Code 各自的安装路径.

另外需要声明的是,
\LaTeX\ Workshop 插件并不局限在 WSL 当中,
它的配置是可以通用的.

\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}{\textsf{Stack\textbf{Exchange}}}.
方法牵扯到主系统和子系统的操作.

第一步,
建立新的位置.
假设新位置在 \path{X:\} 盘.
在 \textsf{cmd} 中执行
\begin{lstlisting}
  wsl -l
\end{lstlisting}
可以查到当前已经安装的 WSL 分发,
例如
\begin{lstlisting}
  适用于 Linux 的 Windows 子系统分发:
  Ubuntu (默认)
\end{lstlisting}
在 \textsf{bash} 中执行
\begin{lstlisting}
  lsb_release -a
\end{lstlisting}
查到实际 WSL 内 Ubuntu 的版本,
例如
\begin{lstlisting}[language = {}]
  No LSB modules are available.
  Distributor ID: Ubuntu
  Description:    Ubuntu 24.04.2 LTS
  Release:        24.04
  Codename:       noble
\end{lstlisting}
然后在 \textsf{cmd} 中执行
\begin{lstlisting}
  mkdir X:\WSL\instances\ubuntu2404
  mkdir X:\WSL\images
  cd X:\WSL\images
\end{lstlisting}
%\begin{lstlisting}
%  New-Item -ItemType Directory -Path "X:\WSL\instances\Ubuntu2204" -Force
%  Set-Location (New-Item -ItemType Directory -Path "X:\WSL\images" -Force)
%\end{lstlisting}
创建新的位置.
这里起名 \texttt{ubuntu2404} 是因为 Ubuntu 实际版本为 24.04,
也可以起其他名字.

第二步,
导出原 WSL 分发并导入新位置.
在 \textsf{cmd} 中执行
\begin{lstlisting}
  wsl --export Ubuntu ubuntu.tar
  wsl --import ubuntu2404 X:\WSL\instances\ubuntu2404 ubuntu.tar --version 2
\end{lstlisting}
第一行的 \texttt{Ubuntu} 指的是系统默认的 WSL 分发,
这条命令将原本的分发导出为一个压缩包.
第二行的 \texttt{ubuntu2404} 是未来指定的 WSL 分发,
也就是将前面导出的压缩包导入成新的 WSL 分发.

第三步,
启动新的分发并且设置为默认.
在 \textsf{cmd} 中执行
\begin{lstlisting}
  wsl ~ -d ubuntu2404
\end{lstlisting}
进入 \texttt{ubuntu2404} 分发的 WSL 系统,
在当前 \textsf{bash} 中执行
\begin{lstlisting}[deletekeywords = wsl]
  sudo -e /etc/wsl.conf
\end{lstlisting}
输入以下内容
\begin{lstlisting}
  [user]
  default=&lt;your_username&gt;
\end{lstlisting}
"&lt;your_username&gt;" 是用户自定义的 WSL 的用户名,
个人用了原本 \texttt{Ubuntu} 分发内的用户名.
然后依次 \keys{\ctrl + X}, \keys{Y}, \keys{\enter} 保存退出.
退出 \textsf{bash},
在 \textsf{cmd} 中执行
\begin{lstlisting}
  wsl --terminate ubuntu2404
  wsl ~ -d ubuntu2404
\end{lstlisting}
这时如果一切正常,
就可以将 \texttt{ubuntu2404} 设置为默认 WSL 分发,
即在 \textsf{cmd} 中执行
\begin{lstlisting}
  wsl --set-default ubuntu2404
\end{lstlisting}
这时在 \textsf{bash} 中执行
\begin{lstlisting}
  echo $WSL_DISTRO_NAME
\end{lstlisting}
返回结果
\begin{lstlisting}
  ubuntu2404
\end{lstlisting}
就表明一切正常.

第四步,
删除旧分发.
在 \textsf{cmd} 中执行
\begin{lstlisting}
  wsl --unregister Ubuntu
\end{lstlisting}
就将旧分发 \texttt{Ubuntu} 删除了.
这时在 \textsf{cmd} 中执行
\begin{lstlisting}
  wsl -l
\end{lstlisting}
将看到
\begin{lstlisting}
  适用于 Linux 的 Windows 子系统分发:
  ubuntu2404 (默认)
\end{lstlisting}

实际上,
将整个 WSL 的安装位置迁移还有一个好处.
根据%
\href{https://learn.microsoft.com/zh-cn/windows/wsl/filesystems#file-storage-and-performance-across-file-systems}{微软官方文档},
将项目文件直接存储在 WSL 的驱动器上,
性能速度会提高.
</pre></body></html>