ターミナルのセットアップ

はじめに

ここでは、Ubuntu 24.04 で WSL2 を使用して Windows 11 上に最新の開発環境をセットアップする手順を説明します。Linuxbrew、Docker、LAMP スタックなどのツールを構成して、効率的な開発ワークフローを実現します。また、システム間で一貫した環境レプリケーションを行うためにドットファイルを管理します。

前提条件

  • Windows 11 がインストールされている
  • PowerShell と Unix コマンドの基本的な理解

手順

プロファイル設定

構成ファイルの場所は次の箇所です。

%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json

ショートカットから起動へ上記パスを入力して、次の編集をすることをおすすめします。

  • 履歴表示行数を増やす: コマンドの入力履歴保存数とは別です。(ref. bashはHISTSIZE=n~/.bashrcに設定、fishは無制限)
"defaults":
{
    "historySize": "32767",
    "experimental.repositionCursorWithMouse": true,
},
"list":
[
    // PROFILE OBJECTS
]

さらに詳しい設定項目は、次を参照しながら設定しましょう。

Ref.:

WSL2 をインストールして構成する

このリポジトリには、主要な最適化を含む、Windows 上の WSL2 のセットアップに関する詳細なドキュメントが用意されています。

  1. 管理者として PowerShell を開きます:
wsl --install
  1. インストール後、Ubuntu 24.04 をデフォルトのディストリビューションとして設定します:
wsl --set-version Ubuntu-24.04 2

参考: Vampire/setup-wsl

aptによるパッケージの導入

apt は UbuntuなどのDebian Familyのパッケージマネジメントツールです。 次のようにして、ツールを導入することができます。

sudo apt update
# ビルドに必要なものをインストールします
sudo apt-get install build-essential procps curl file git gcc make -y
 
# C ビルドに必要なもの
# sudo apt install libncursesw5-dev autotools-dev autoconf automake build-essential

その他重要なライブラリも導入しましょう。

# 便利なユーティリティ
sudo apt install coreutils fileutils binutils xdg-utils -y
 
# ビルドプロセスにまた重要
sudo apt install libreadline-dev libncurses5-dev zlib1g-dev libbz2-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libffi-dev -y
 
# ファイル/フォルダ操作の必携
sudo apt install 7-zip rsync rclone parallel -y

デフォルトのシェルを変更する

デフォルトのシェルをFishシェルに変更しましょう。

Fish をインストール

sudo apt install fish
sudo chsh -s $(which fish)
 
cat /etc/shells
which $SHELL

次に、他のシェル構成の $PATH に homebrew パスを追加します Fish:

mkdir -p ~/.config/fish/
nano ~/.config/fish/config.fish # 以下を記述して保存します Ctrl+S、終了 Ctrl+X
# Homebrew
eval (/home/linuxbrew/.linuxbrew/bin/brew shellenv)

パスが正しく追加されているか確認

brew -h

Fishのカスタマイズ

Fishの設定を工夫しましょう。

~/.config:

cp (wget https://gist.githubusercontent.com/***/.local/share/fish/fish_history) ~/.local/share/fish/fish_history
 
# Change prompt
fish_config prompt save astronaut
 
# Change theme
fish_config theme save 'Old School'

Fish 機能拡張

Fisherなどの機能拡張を導入することで、高度な管理が可能となります。 Fzfとの統合などもさらに見やすくすることが可能です。

set remote_url <fish_config_url>
 
rsync -auvz $remote_url ~/.config/fish/

Winget をインストールして Windows ツールを管理する

(任意) Powershell Core をインストールします

# wsl-utils をインストールする
sudo apt update
sudo apt install wslu
echo $(wslvar PATH) | tr ';' '\n' | grep PowerShell
echo $(wslvar PSModulePath)

Windows ツールを管理するには、Winget と Scoop をインストールします。

参考: jfalava/machine-outfitting

  1. install-winget-tools.ps1 スクリプトをダウンロードします。
  2. PowerShell で実行します:
powershell install-winget-tools.ps1

Scoop で追加のツールをインストールするには、

scoop install curl git

参考: luke-beep の shell-config

(任意) alias/abbr を設定します (もちろん、PowerShell コアを使用している場合は pwsh.exe に置き換えます)

pwsh=$(wslpath $(wslvar SystemRoot)/System32/WindowsPowerShell/v1.0/powershell.exe)
# Clipboard
alias pbpaste="$pwsh -c Get-Clipboard"
alias pbcopy="$pwsh -c Set-Clipboard"
 
# Explorer on WSL
wslview .

Fish shellの場合

set pwsh (wslpath (wslvar SystemRoot)/System32/WindowsPowerShell/v1.0/powershell.exe)
alias pbpaste "$pwsh -c Get-Clipboard"

Linuxbrew のインストールとセットアップ

次の内容をシェルの構成ファイルに追記します。 ~/.config/fish/config.fish:

# Homebrew
set BREW_HOME "/home/linuxbrew/.linuxbrew"
 
# Load pyenv automatically
set PATH "$PATH:$BREW_HOME/bin/.pyenv/bin"
eval "$(pyenv init -)"

次のステップは Linuxbrew をインストールすることです。これにより、Ubuntu システムでのパッケージ管理が簡素化されます。 参考: holman/dotfiles

# Homebrew をインストールします
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 続行するには RETURN/ENTER キーを押します。中止するには他のキーを押します: => Enter
 
# 環境変数
test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)"
test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.bashrc

homebrew からのツールのインストールする

ツールをインストールできます:

brew install curl

導入済みのパッケージ一覧を出力・保存しておきましょう:

brew dump > brewfile.txt

その他、必要なパッケージを記載することで、含めることができます:

tap 'homebrew/core'
brew 'wget'
brew 'git'
brew 'vim'

一括インストールする際のコマンドは以下の通りです。 ~/Brewfile を作成し、作成後、Brewfile を使用して必須パッケージをインストールできます:

brew bundle install
 
# Dumpfileを明示的に指定する
brew bundle install --file='~/.rust-brew-bundle

その他の導入済みパッケージ一覧の保存

Homebrew以外にも、各種パッケージを出力・保存することができます:

apt list --installed > apt-dump.txt
pip freeze > python-dump.txt
 > python-dump.txt
go list ... > golang-dump.txt
cargo list > rust-dump.txt
code --extension > vscode-ext-dump.txt

一括インストールする際のコマンドは、それぞれ以下の通りです:

sudo apt install apt-dump.txt -y
pip install -r python-dump.txt
go install golang-dump.txt
cargo install rust-dump.txt
code install vscode-ext-dump.txt

Docker をインストールしてセットアップする

Docker は、コンテナー化された開発のために WSL2 環境に統合できます。 okibcn/wslcompact リポジトリには、Docker のコンパクトなセットアップ ガイドが用意されています。

  1. WSL 環境に Docker をインストールします:
sudo apt update
sudo apt install docker.io
  1. Docker を起動します:
sudo service docker start

LAMP スタックをセットアップする

Web 開発の場合、mauriziofonte のガイド に従って LAMP スタック (Linux、Apache、MySQL、PHP) を構成できます。

  1. Apache、MySQL、PHP をインストールします:
sudo apt install apache2 mysql-server php php-mysql
  1. サービスを起動します:
sudo service apache2 start
sudo service mysql start

ドットファイル

ドットファイルを管理するには、リポジトリを使用して構成を追跡します。ベースラインとして holman/dotfiles を参照できます。

  1. dotfiles リポジトリをクローンします:
git clone https://github.com/<yourusername>/dotfiles.git
cd dotfiles
  1. 構成ファイルのシンボリックリンク:
ln -sf ~/dotfiles/.bashrc ~/.bashrc
ln -sf ~/dotfiles/.gitconfig ~/.gitconfig
  1. Fish または他のシェルに適応します:
  • Fish 用にカスタマイズします:
ln -s ~/dotfiles/config.fish ~/.config/fish/config.fish

参考:

  • Dotfiles 構成: 一般的なシステム設定と環境を構成します
  • Fish シェル: Fish シェルをカスタマイズおよびセットアップします
  • エイリアスと関数: エイリアスとシェル関数をセットアップします
  • Dotfiles: ドットファイルを効率的にインストールして管理します

追加ツールのリスト

このセクションでは、必須の開発ツール、セキュリティ ユーティリティ、プライバシー重視のソフトウェアなどをリストします。これらのツールは、ワークフローを合理化し、セキュリティを向上させ、WSL2 および Windows セットアップ全体のデータ管理を強化します。

ファイル/フォルダ管理

  • Eza: ls の最新の代替で、フォーマットが優れています。

  • Fd: find のシンプルで高速、かつユーザーフレンドリーな代替です。

  • Fzf: コマンドラインのあいまい検索ツール。参照を使用して構成します:

  • Ripgrep: 高速検索ユーティリティ。grep よりも高速です。

  • Zoxide: よりスマートな cd コマンド。

システム監査

  • Dust: ストレージを管理するためのディスク使用状況アナライザーです。

  • Sysz: シンプルなファイル システム管理ツール。

  • Broot: ファイル システム ナビゲーション用のツリー ビューです。

開発

  • Git: バージョン管理

  • GitHub CLI (gh): コマンドラインから GitHub 管理を効率化します。

データ サイエンス

  • Jq: 軽量で柔軟なコマンド ライン JSON プロセッサ。

  • Jc: コマンド ライン ツールの出力を JSONify します。

  • Gron: JSON をフラット化して grep を簡単にします。

  • Fx: コマンド ライン JSON ビューア。

  • Jid: インタラクティブ フィルタリング用の JSON 増分ディガー。

クリエイティブ

  • ImageMagick: 画像処理のための代表的なライブラリ。

  • Ffmpeg: 動画・音声処理のための代表的なライブラリ。

  • mpv: 軽量で汎用的な動画プレイヤー。

プライバシー

  • Bitwarden CLI: オープンソースのパスワード マネージャー。

  • Onionshare: Tor 経由でファイルを安全かつ匿名で共有します。

  • Ngrok: ローカルホストへの安全なイントロスペクション可能なトンネル。

セキュリティ

  • Kali Tools: 侵入テストおよび倫理的ハッキング ツールです。

  • Katana: Web スクレイピングおよびセキュリティ テスト ツール。

バックアップ

  • Backblaze B2 CLI: Backblaze B2 クラウド ストレージのコマンド ライン インターフェイス。

  • Rclone: クラウド ストレージ プロバイダー間でファイルを管理するためのツール。

  • Restic: 安全で高速かつ効率的なバックアップ ツール。

  • Autorestic: 使用を簡素化する Restic のラッパー。

OSINT

  • Osintgram: Instagram の OSINT ツール。

  • Twikit: Twitter スクレイピング ツール。

  • Twscrape: Twitter スクレイピングおよび分析ツール。

AI

  • Ollama: AI モデルのホスティングおよび推論。

  • Whisper: OpenAI の音声テキスト変換ツール。文字起こしに便利。