WSL環境構築

# 緒言
WSLでプログラミング環境を構築するときにあったらいいものを書いていく
基本pythonとfortran使いの人間が書くので、主にそちらに寄る記事になる

# 内容

## **WSLの導入**
PowerShell を管理者として実行．
```powershell
wsl --install
```




## **python**
WSLインストールして`sudo apt upgrade` したらデフォルトでpythonの最新バージョンがインストールされてしまう。ご存じの通り最新バージョンはバグが多くあまりお勧めできないので、枯れたシステムであるひとつ前のバージョンを入れたくもなるだろう。
ちなみに`python3.12`ではf2pyの不具合がありコンパイルが困難．使えない．（2025/01現在）

しかし以下の方法を用いる場合，`tk_dev`のインストールが前提であるが，こいつを入れるには`python3.12`がグローバルに存在している必要がある．
よって，`python3.12`は形式的に据え置いている必要があるのだ．

:::note info
**解決策**
`pyenv`を使ってそこに`python3.11`を入れておき，それをグローバルに設定して普段使いする
:::

<details><summary>  pythonの導入を頑張る  </summary>

1. まず、システムのパッケージを最新の状態にする。
    ```bash
    sudo apt update && sudo apt upgrade -y
    ```

1.  `pyenv` の導入．
    ```bash
    curl https://pyenv.run | bash
    ```
    これで`pyenv`コマンドが使えるようになる

1. Python のビルドに必要なライブラリをインストール
    ```bash
    sudo apt update
    sudo apt install -y libffi-dev libssl-dev zlib1g-dev \
        libbz2-dev libreadline-dev libsqlite3-dev \
        libncursesw5-dev xz-utils tk-dev liblzma-dev
    ```

1. `python3.11.11`をいれてみる
    ```bash
    pyenv uninstall 3.11.11
    pyenv install 3.11.11
    pyenv global 3.11.11  # 必要なら設定
    ```
    global にすることで，デフォにできる．
  
</details>






<details><summary> matplotlibでTimes New Romanを頑張る </summary>

デフォルトではWSLにTimes New Romanがない．
Windowsのフォントディレクトリからコピってきて適切な場所に配置のうえ，フォントキャッシュを更新して認識させる必要がある．
1. windowsからフォントを移植する。
windowsにあるTimes New Romanは通常、ここにある
    ```powershell
    C:\Windows\Fonts\Times New Roman.ttf
    ```
    この中に3つのttfファイルが含まれるので、これをWSLに移植するのである
    
1. まずWSLの一般的なフォントディレクトリを作成する。
    ```bash
    sudo mkdir -p  /usr/share/fonts/truetype/custom
    ```
    
1. そしてようやく移植を実行
    ```bash
    sudo cp /mnt/c/Windows/Fonts/times*.ttf /usr/share/fonts/truetype/custom/
    ```
    
1. フォントキャッシュを削除して更新
    ```bash
    sudo fc-cache -fv
    ```

1. さらに、matplotlib側でもフォントキャッシュを削除してフォントを認識させる
    ```bash
    rm ~/.cache/matplotlib -rf
    ```
    
1. いったん再起動する。
</details>

















<br/>

##  **fortran**
<details><summary> fortranの導入を頑張る </summary>

1. まずはコンパイラから。
    ```bash
    sudo apt install gfortran
    ```
    で一発。
    
1. また、fortranといえば人類の叡智、lapackを入れたい。
    ```bash
    sudo apt install libblas-dev liblapack-dev
    ```
    で一発。
    
1. サンプルコード
    ```fortran
    program solve_linear_equation
        implicit none
        integer :: n, nrhs, lda, ldb, info
        integer, allocatable :: ipiv(:)
        real(kind=8), allocatable :: A(:,:), b(:)
    
        n = 3      
        nrhs = 1    
        lda = n
        ldb = n
    
        allocate(A(n, n), b(n), ipiv(n))
    
        A = reshape([2.0d0, -1.0d0, 0.0d0, &
                    -1.0d0, 2.0d0, -1.0d0, &
                    0.0d0, -1.0d0, 2.0d0], shape(A))
    
        b = [1.0d0, 0.0d0, 1.0d0]
    
        call dgesv(n, nrhs, A, lda, ipiv, b, ldb, info)
    
        if (info == 0) then
            write(*, *) "x:"
            write(*, '(F12.6)') b
        else
            write(*, *) "error"
        end if
    
        deallocate(A, b, ipiv)
    
    end program solve_linear_equation
    ```
    これを実行するには，
    ```bash
    gfortran test_lapack.f90 -o test_lapack -llapack -lblas
    ```
    として，
    ```bash
    ./test_lapack
    ```
    で実行．`x: 1.000000 1.000000 1.000000 `が出ればOK．
</details>