0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL環境構築

Last updated at Posted at 2025-01-16

緒言

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

内容

WSLの導入

PowerShell を管理者として実行.

wsl --install

python

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

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

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

pythonの導入を頑張る
  1. まず、システムのパッケージを最新の状態にする。

    sudo apt update && sudo apt upgrade -y
    
  2. pyenv の導入.

    curl https://pyenv.run | bash
    

    これでpyenvコマンドが使えるようになる

  3. Python のビルドに必要なライブラリをインストール

    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
    
  4. python3.11.11をいれてみる

    pyenv uninstall 3.11.11
    pyenv install 3.11.11
    pyenv global 3.11.11  # 必要なら設定
    

    global にすることで,デフォにできる.

matplotlibでTimes New Romanを頑張る

デフォルトではWSLにTimes New Romanがない.
Windowsのフォントディレクトリからコピってきて適切な場所に配置のうえ,フォントキャッシュを更新して認識させる必要がある.

  1. windowsからフォントを移植する。
    windowsにあるTimes New Romanは通常、ここにある

    C:\Windows\Fonts\Times New Roman.ttf
    

    この中に3つのttfファイルが含まれるので、これをWSLに移植するのである

  2. まずWSLの一般的なフォントディレクトリを作成する。

    sudo mkdir -p  /usr/share/fonts/truetype/custom
    
  3. そしてようやく移植を実行

    sudo cp /mnt/c/Windows/Fonts/times*.ttf /usr/share/fonts/truetype/custom/
    
  4. フォントキャッシュを削除して更新

    sudo fc-cache -fv
    
  5. さらに、matplotlib側でもフォントキャッシュを削除してフォントを認識させる

    rm ~/.cache/matplotlib -rf
    
  6. いったん再起動する。


fortran

fortranの導入を頑張る
  1. まずはコンパイラから。

    sudo apt install gfortran
    

    で一発。

  2. また、fortranといえば人類の叡智、lapackを入れたい。

    sudo apt install libblas-dev liblapack-dev
    

    で一発。

  3. サンプルコード

    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
    

    これを実行するには,

    gfortran test_lapack.f90 -o test_lapack -llapack -lblas
    

    として,

    ./test_lapack
    

    で実行.x: 1.000000 1.000000 1.000000 が出ればOK.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?