Open8

WSL: Ubuntuの環境構築

fleagnefleagne

先日、新しいPCを購入したので、まっさらな状態からWSLの環境構築を行えるいい機会だなぁということで環境構築の記録を残していく。
いつか会社のPCリプレイスで、一から環境構築を行う必要が出た時の自分(あるいは誰か)のためにも。

2024/11/08時点 構成

name version
WSL: Ubuntu 24.04.1 LTS (Noble Numbat)
git 2.43.0
aws aws-cli/2.19.3 Python/3.12.6 Linux/5.15.153.1-microsoft-standard-WSL2 exe/x86_64.ubuntu.24
nvm 0.40.1
node v22.11.0
npm 10.9.0
pnpm 9.12.3
pyenv 2.4.17
python 3.12.7
ollama 0.4.0

WSLのインストール

参考サイト

WSL を使用して Windows に Linux をインストールする方法

実行手順

ターミナル(管理者)を開き、次のコマンドを実行

wsl --install

標準だと、LinuxのUbuntuディストリビューションがインストールされる
Ubuntu以外のインストールを行いたい場合は、参考サイトを見ながらインストールを行う
(おそらく)再起動する必要があるので、再起動
再起動後、自動的にターミナルでWSL: Ubuntuが立ち上がり、ユーザ名とパスワードを要求してくるので入力する
Ubuntuに接続できたらOK

Ubuntuのバージョン確認

参考サイト

特になし

実行手順

VSCodeの拡張機能WSLをインストールし、VSCodeからWSLに接続する
接続後、次のコマンドを実行し、バージョンの確認を行う

$ cat /etc/os-release

PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.1 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo

バージョン情報が確認できる
Ubuntu 24.04.1 LTSが実行されていることがわかる

fleagnefleagne

パッケージの依存解決

参考サイト

特になし

実行手順

Ubuntuにインストールされているソフトウェアを最新版に更新する

$ sudo apt update && sudo apt upgrade -y

実行後、コマンドの確認を行う

$ python3 --version
Python 3.12.3

$ git --version
git version 2.43.0

GitのエディタをVimに設定する

参考サイト

特になし

実行手順

私がnanoを使えないので
設定

$ git config --global core.editor vim

確認

$ git config --global --list | grep editor
core.editor=vim

これでrebase時やcommit時にvimが使われるようになる

fleagnefleagne

nvmでNodeを使えるようにする

参考サイト

nvm-sh/nvm: Node Version Manager

実行手順

GitHubのREADMEInstall & Update Scriptに記載されているとおりに、コマンドを実行

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

ターミナルを新しくして、インストールされたか確認

$ nvm --version
0.40.1

続いて、Long-term Supportに記載されているとおりに、コマンドを実行

$ nvm install --lts
$ nvm install --lts
Installing latest LTS version.
Downloading and installing node v22.11.0...
Downloading https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-x64.tar.xz...
###...### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v22.11.0 (npm v10.9.0)
Creating default alias: default -> lts/* (-> v22.11.0)

$ node --version
v22.11.0

$ npm --version
10.9.0

nodeとnpmがnvmでインストールされたことを確認

fleagnefleagne

AWS CLIを使えるようにする

参考サイト

Installing or updating to the latest version of the AWS CLI
【AWS】aws cliの設定方法

実行手順

参考サイトのとおり、コマンドを実行する
unzipコマンドが標準だとないということで怒られるので、入れておく(怒られてからいれてもOK、インストールせーよと言われるので)

$ sudo apt install unzip

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

$ unzip awscliv2.zip

$ sudo ./aws/install

$ aws --version
aws-cli/2.19.3 Python/3.12.6 Linux/5.15.153.1-microsoft-standard-WSL2 exe/x86_64.ubuntu.24

awscliv2.zipはもういらないので、削除する

$ rm awscliv2.zip

AWSのクレデンシャルは発行されている前提として...(発行方法などは参考記事が丁寧にまとまっていますので、委ねます)
AWS CLIの設定を行う

$ aws configure
AWS Access Key ID [None]: {access_key_id}
AWS Secret Access Key [None]: {secret_access_key}
Default region name [None]: ap-northeast-1
Default output format [None]: json

$ aws sts get-caller-identity
{
    "UserId": "{user_id}",
    "Account": "{account_id}",
    "Arn": "arn:aws:iam::{account_id}:user/{username}"
}
fleagnefleagne

pyenvでPythonのバージョンを管理できるようにする

参考サイト

pyenv/pyenv: Simple Python Version Management: pyenv

実行手順

GitHubのWikiSuggested build environment > Ubuntu/Debian/Mint:のとおりに、依存関係をインストールするコマンドを実行する

$ sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl git \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

その後、GitHubのREADMEAutomatic installerのとおりに、コマンドを実行する

$ curl https://pyenv.run | bash

その後、Set up your shell environment for Pyenvに従い、環境変数等の設定を行う

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc

$ source ~/.bashrc

ここまで来たら、ようやくバージョン確認

$ pyenv --version
pyenv 2.4.17

動いていそう

pyenvを用いて、pythonをインストールし使えるようにする
現在地の確認

$ pyenv versions
* system (set by /home/fleagne/.pyenv/version)

$ python --version
Command 'python' not found, did you mean:
  command 'python3' from deb python3
  command 'python' from deb python-is-python3

もちろんこの時点では特になし

3.12.*でインストールできるものを探す

$ pyenv install --list | grep 3.12
  3.12.0
  3.12-dev
  3.12.1
  3.12.2
  3.12.3
  3.12.4
  3.12.5
  3.12.6
  3.12.7
  miniconda3-3.12-24.1.2-0
  miniconda3-3.12-24.4.0-0
  miniconda3-3.12-24.5.0-0
  miniconda3-3.12-24.7.1-0
  miniconda3-3.12-24.9.2-0
  pypy2.7-7.3.12-src
  pypy2.7-7.3.12
  pypy3.9-7.3.12-src
  pypy3.9-7.3.12
  pypy3.10-7.3.12-src
  pypy3.10-7.3.12

3.12.7を入れてみる

$ pyenv install 3.12.7
Downloading Python-3.12.7.tar.xz...
-> https://www.python.org/ftp/python/3.12.7/Python-3.12.7.tar.xz
Installing Python-3.12.7...
Installed Python-3.12.7 to /home/fleagne/.pyenv/versions/3.12.7

$ pyenv versions
* system (set by /home/fleagne/.pyenv/version)
  3.12.7

$ pyenv global 3.12.7
$ python --version
Python 3.12.7

globalは特定バージョンのPythonをグローバル設定として指定
gitリポジトリごとに設定したい場合は、pyenv local x.y.zで指定してあげる

fleagnefleagne

Ollamaを使えるようにする

参考サイト

Ollama > Download Ollama

実行手順

参考サイトに則り、次のコマンドを実行

$ curl -fsSL https://ollama.com/install.sh | sh
>>> Installing ollama to /usr/local
[sudo] password for fleagne: 
>>> Downloading Linux amd64 bundle
###...### 100.0%
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
>>> Nvidia GPU detected.
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.

$ ollama --version
ollama version is 0.4.0

alfredplpl氏がアップロードされているGGUF変換版をお借りして、LLM-jpの3.7Bを使用してみる

$ ollama run hf.co/alfredplpl/llm-jp-3-3.7b-instruct-gguf
pulling manifest 
pulling 38edf85f7570... 100% 2.3 GB
pulling af860fc2490e... 100% 211 B
pulling a27aecf0c4dc... 100% 16 B
pulling 5999683d8e0d... 100% 193 B
verifying sha256 digest
writing manifest
success 

>>> 日本の首都はどこですか?
日本の首都は東京です。

動いた!

fleagnefleagne

Stable Diffusion web UIを使えるようにする

参考サイト

AUTOMATIC1111/stable-diffusion-webui
Stable Diffusion WebUIとは。Ubuntu 22.04にインストールする手順を解説。
CUDA Toolkit 12.6 Update 2 Downloads

実行手順

参考サイトに従いコマンドを実行する
ここまで進めてきたが、もろもろ変更しなければならないところもあるので、ご容赦を...

まずは依存関係を解決。もう入っているやつもあるけどあまり気にせず

$ sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0

続いて、python3.11またはpython3.10を使うようにする
これは、pyenv入れているので、こちらで対応しましょう

$ pyenv install 3.11.10
$ pyenv versions
  system
  3.11.10
* 3.12.7 (set by /home/fleagne/.pyenv/version)
$ pyenv global 3.11.10
$ python --version
Python 3.11.10

gitの方にしておきたいので、次のコマンドで
gitフォルダを作っていない場合は、mkdirで作っておく

$ cd git
$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

起動する

$ cd stable-diffusion-webui
$ bash ./webui.sh

実行結果

動いた!

赤字でCannot locate TCMalloc. Do you have tcmalloc or google-perftool installed on your system? (improves CPU memory usage)みたいな警告メッセージが出ていたら、次のコマンドで依存関係をインストールしておくとよいかも

$ sudo apt install --no-install-recommends google-perftools

ここまで進めてから、2つめの参考サイトを見つける。CUDAのインストールなど行っていないし、いろいろとミスったかも...

参考サイトの3つ目を参考に、CUDA Tooklitをインストールする

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin
$ sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/12.6.2/local_installers/cuda-repo-ubuntu2404-12-6-local_12.6.2-560.35.03-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu2404-12-6-local_12.6.2-560.35.03-1_amd64.deb
$ sudo cp /var/cuda-repo-ubuntu2404-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
$ sudo apt-get update
$ sudo apt-get -y install cuda-toolkit-12-6

NVIDIA Driverをインストールする

$ sudo apt-get install -y nvidia-open