学習したこと倉庫〜Linux関連を中心に

忘れてしまうことが多くなってきたので、学んだことを整理して記録しておかないと!と自らを戒めるためのブログです

Windows Terminal を使いやすくする!

Windows Terminal 分割&サイズ変更

Windows Terminal 分割&サイズ変更

Windows Terminal について詳細はMicrosoftのドキュメントを参照していただくのが良いかもしれません。

docs.microsoft.com

ここでは、次の目次にある様な内容をご紹介しています。

 

デフォルトコマンド

メニューバーがないので、何もできない!とおっしゃらずにコマンドで操作ができますよ。

でもコマンドがわからない?

Ctrl + Shift + p

コントロールキーとシフトキーを押しながらpキーを打ち込んでください。

コマンドリストが出てきましたね。

f:id:denn:20201125102525p:plain

コマンドリスト

よく使いそうなコマンド、そのショートカットキー

 

コマンド名 内容 ショートカットキー
commandPalette コマンド一覧を開く Ctrl + Shift + p
openNewTabDropdown 新規追加タブドロップダウンを開く Ctrl + Shift + Space
toggleFullscreen ターミナルを全画面にする(トグル) Alt + Enter
duplicateTab 新規タブ追加:複製 Ctrl + Shift + d
New tab 新規タブ追加:デフォルト Ctrl + Shift + t
New tab, profile index: 0 新規タブ追加:リスト1番 Ctrl + Shift + 1
New tab, profile index: 1 新規タブ追加:リスト2番 Ctrl + Shift + 2
New tab, profile index: 2 新規タブ追加:リスト3番 Ctrl + Shift + 3
Switch to tab, index: 0 タブ変更:1番目へ Ctrl + Alt + 1
Switch to tab, index: 1 タブ変更:2番目へ Ctrl + Alt + 2
Switch to tab, index: 2 タブ変更:3番目へ Ctrl + Alt + 3
Duplicate pane タブ内分割、ペイン作成 Alt + Shift + d
Close pane カレントペイン消去 Ctrl + Shift + w
moveFocus right カレントペイン移動:右へ Alt + Right
moveFocus left カレントペイン移動:左へ Alt + Left
moveFocus up カレントペイン移動:上へ Alt + Up
moveFocus down カレントペイン移動:下へ Alt + Down

 

 Ctrl + Shift が一般形でタブ追加ができ、Ctrl + Alt + 番号 でタブ移動。

Alt + Shift + d でペインが追加されて、Alt + 矢印でペイン移動。

少し傾向が見えて、覚えやすいかも。 あっClose PaneがペインなのにCtrlだ。

 

ペイン閉じをAlt + Shift + w に変えたいです。そして、タブ閉じにCtrl + Shift + w を当てたら対称的?

後、Ctrl + Shift + 右/左 でタブ移動ができてもいいかも?

 

設定ファイルを編集

Windows Terminal の設定ファイルは、settings.json「C:\Users\[ユーザー名]\AppData\Local\Packages\Microsoft.WindowsTerminal_***\LocalState\settings.json」ですが、

Ctrl + ,

で開くことができます。

jsonファイルを好みのエディタに指定してあればそのエディタでファイルが開かれます。

私的には、VSCodeがお勧めかな。

 

settings.jsonの構成

このjsonファイルの構成を概観しておきます。

settings.json ツリー構造

settings.json ツリー構造
全体の設定項目

Windows Terminal 起動時の状態などを設定します。

  • 起動時に立ちあがるターミナルの指定
  • 横幅や行数

など

"profiles"メンバー

表示するターミナルに関する設定が記述されています。

全体に共通する設定を"defaults"メンバーの値として記述し、個々のターミナルに関する設定は"list"メンバー内にある対応するターミナルに対して行います。

例えば次のような設定を行います。

  • カーソルの色や形状
  • 履歴のサイズ

など

"keybindings"メンバー

コマンドを実行するショートカットキーを設定します。

settings.json編集例

起動時に立ちあがるターミナルの指定

一番上の階層の「全体の設定項目」にあたるところprofilesの上に記述します。

"profiles"メンバーの"guid"に記述してある値を使って、

"defaultProfile":"{58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530}",

この様に記述すれば、guidで指定されたターミナルが起動時に立ち上がります。

横幅や行数の指定

一番上の階層の「全体の設定項目」にあたるところprofilesの上に記述します。

起動時のWindows Terminalウインドーの横幅高さが指定できます。

"initialCols": 120,
"initialRows": 40,

の様に記述します。

カーソルの色、形状

"defaults"メンバーの値に記述すれば、全てのカーソルを統一できます。

  • カーソルの色を変えたいときには、
    "cursorColor":"#00a2ff",

    のように記述します。

  • カーソルの形状なら
    "cursorHeight":25,
    "cursorShape":"vintage",

    のように記述します。

    "cursorShape"には、次のような種類が指定できます。

    • "bar"
    • "emptyBox"
    • "filledBox"
    • "underscore"
    • "vintage"
ショートカットキーの追加変更

"keybindings"メンバーに記述します。

  • ペイン閉じを Alt + Shift + w に変更
    {"command":"closePane", "keys":"alt+shift+w"},
  • タブ閉じを Ctrl + Shift + w に割り当て
    {"command":"closeTab", "keys":"ctrl+shift+w"},
  • Ctrl + Shift + 右/左 でタブ移動
    {"command":"prevTab", "keys":"ctrl+shift+left"},
    {"command":"nextTab", "keys":"ctrl+shift+right"},

 

 ペイン分割 & カラースキーム

ターミナルごとに見た目を変えることができます。どんな見た目があるのかいくつか試してみます。

一つのターミナルを4分割しながら、4つのペインそれぞれ異なるカラースキームにして並べます。

  1. 左ペイン-WSL、右ペイン-WSL2 に分割

    1-画面のWSLターミナルで、Altキーを押しながらドロップダウン内のターミナル(DebianWSL2)を選択します。

    Ctrl+Shift+p ドロップダウン内でAltを押しながら選択

    Ctrl+Shift+Space ドロップダウン内でAltを押しながら選択

    左側がWSL右側がWSL2、二つのペインに分割されました。

    左WSLペイン、右WSL2ペイン

    左WSLペイン、右WSL2ペイン
  2. 右ペインのカラースキームに「One Half Dark」を選択

    右ペインにカーソルがある状態でコマンド一覧を表示「scheme」で検索して「Select color scheme...」をクリック

    カラースキームの一覧が表示されるので「One Half Dark」を選択

    右ペイン-One Half Dark

    右ペイン-One Half Dark
  3. 右ペインを上下2つに分割

    カーソルが右ペインにある状態でダプリケート分割

    Alt + Shift + d

    右ペインをさらに分割

    右ペインをさらに分割
  4. 右下ペインに「One Half Light」を選択

    先ほどと同じ様にして、今度は「One Half Light」を選択

    右下ペイン- One Half Light

    右下ペイン- One Half Light
  5. 左ペインを上下2つに分割

    左ペインへ移動

    Alt + ←

    左ペインをダプリケート分割

    Alt + Shift + d

    左ペインを分割

    左ペインを分割
  6. 左上ペインに「Solarized Light」を選択

    上ペインに移動

    Alt + ↑

    「Select color schema...」から「Solarized Light」を選択

    左上ペイン- Solarized Light

    左上ペイン- Solarized Light

その他のペイン操作

ペイン間移動

「Alt + 矢印」キーを打ち込むことで矢印方向にあるペインへ移動できます。

ペインサイズ変更

「Alt + Shift + 矢印」キーを打ち込むことでカーソルがあるアクティブペインのサイズを矢印方向に拡大縮小できます。

ペインのサイズを変更

ペインのサイズを変更

 

今回はここまでです。お疲れ様でした。

 

ひとつでも活用のヒントが見つかったなら幸いです。

 

 

 

 

 

 

Windows Terminal + WSL + GWSL で Linux : Part 4

X Window 起動

X window 起動

今回の目標

  • WSL を複製して、WSL2 にコンバートしよう!
    内容:
    1. WSL2は何が違う?
    2. WSL1をWSL2へコンバート

次回以降の目標

期待してお待ちいただけたらと思います。

 

目次:

 

では、本編のはじまりです。

 

WSL2は何が違う?

詳細はMicrosoftのページを参照していただきたいと思います。

docs.microsoft.com

 

ここでは、私が調べたことを中心に比較しつつ、注意点的な内容もあげておこうと思いますが、結論を先に言えば、特別な使い方をしない限りどちらでも同じと考えますが、起動とファイル操作に関してかなりスピードアップされたそうです。

WSL2ではできて、バージョン1ではできないことがある点は指摘しておくべきでしょう。有名なところでは、

  • Linux版のDocker
  • FUSE(Filesystem in Userspace)

ですね。これはWSLとWSL2の大きな違いであるシステムコールの処理方法の違い、

によるもので、すなわちWSL2は、Microsoftが手を加えているとは言え本物のLinusカーネルを実装しているわけです。カーネルのバージョンアップに伴いMicrosoftが新カーネルを提供するようです。

 

WSLバージョン1で得意なこと 

Windows側とLinux側の両方からファイルにアクセスする使い方は、WSL1 の方がパフォーマンスが良いそうです。

ファイルにアクセスする方法をまとめておきます。

Windows側からLinux側にあるファイルにアクセスする方法
  1. エクスプローラーで開く

    Linux側で実行

  2. notepad.exe(などWindowsアプリ)で開く

    Linux側のファイルシステムにアクセスするにはネットワーク接続経由のパスを使う

    Windows側で実行

    notepad.exe //wsl$/Debian/home/denn/.bashrc

    ネットワーク接続経由のパスは「//wsl$/「ディストロ名」/ファイルパス」のように記述します

  3. VSCode で開く

    VSCodeプラグイン「Remote-WSL」を使うことで、通常のVSCodeの使用感のままファイルを編集できます

Linux側からWindows側にあるファイルにアクセスする方法
  1. Windowsドライブはマウントされているため、マウント先のファイルを通常通りのLinux操作でアクセスできます
    • Cドライブは、「/mnt/c/」
    • Dドライブは、「/mnt/d/」

 

WSL2へコンバート

ここからが今回の本題です。まず作業の流れを整理しておきます。

  1. WSL1のディストロをexportしてtarファイルを作成する 
  2. 作成したtarファイルからディストロを複製する
  3. 複製したディストロをバージョン2にセットする

いずれもコマンド一行の作業ですが、完了まで多少の待ち時間があります。

この作業の結果WSL1のディストロはそのまま残り、新しくWSL2のディストロが追加されます。このWSL2ディストロはWSL1の複製から作られたので、作成した環境(apt install したパッケージや自分でコンパイルしたものなど)はすべてそのまま実行可能です。

 

(3の作業だけを行なって、今あるWSL1のディストロを直接WSL2へ変更してもよいです。複製しておけば両方使うことができます)

 

WSL1 -> WSL2を作成する

作業はすべてPowerShellで行います。

WSL1のディストロをexportしてtarファイルを作成

まずはWSL2ディストロを生成する場所を作って移動しておきましょう。

mkdir WSL_env
cd WSL_env

作業前にwslの状態を確認しておきます。

wsl -l --verbose

複製WSL作成前

複製WSL作成前

次のコマンドでtarファイルを作成します。

wsl --export Debian DebianWSL.tar

「wsl --export [ディストロ名] [tarファイル名]」で、DebianWSL.tarファイルが作成されます。

作成したtarファイルからWSL2ディストロを作成

ついでこのtarファイルからWSLのディストロを作成(複製)します。

wsl --import DebianWSL2 C:\home\WSL_env\ .\DebianWSL.tar

「wsl --import [新ディストロ名] [新ディストロをおくパス] [tarファイル名]」と指定しています。

新ディストロ名に「_」(アンダースコア)を含めない方が良いようです。

GWSLが新ディストロを取り込むときに「_」を無視した名前で登録するようなので、新ディストロで X Window が使えない状態になってしまいました。

wslの現状を確認します。

wsl -l --verbose

二つのディストロがあり、どちらのバージョンも1になっています。DebianWSL2のバージョンを2にコンバートします。

wsl --set-version DebianWSL2 2

もう一度確認すると

wsl -l --verbose

WSL2作成後

WSL2作成後

DebianWSL2のバージョンが2になりました。

ディストロの削除方法

もし二つもいらないのなら削除することができます。WindowsストアからインストールしたDebianを削除しても再びWindowsストアからインストールすることができます。

wsl --unregister Debian

これがディストロ名:Debian を削除するコマンドで、wsl --unregister [WSLディストロ名] の形式で記述します。

WSLをインストールするときに初めからWSL2としてインストールする

このコマンドを実行します。

wsl --set-version 2

 WSL2の起動

起動状況確認

Windows Terminal タブにある「v」をクリックすると「DebianWSL2」が追加されていることがわかります。それをクリックします。

Windows Terminal にWSL2が追加された

WSL2が追加された

または、図のリストを確認すると上から4番目なので「Ctrl + Shift + 4」でDebianWSL2を起動することができます。

 

今度は、タスクバーのGWSLをクリックして確認します。

GWSL ダッシュボード

GWSL ダッシボード

GWSL Distro Tools をクリックすると

変更されたGWSL Distro Tools

GWSL Distro Tools

DebianWSL2 が追加されました。DebianWSL2 をクリックすると以前に見たのと同じ「Display Is Set To Auto-Export」がありますが「X」になっているのでクリックしてDebianWSL2を再起動すれば X Window が立ち上がり、ディスプレイを使うことができるようになります。

設定後のAuto-Export

設定後のAuto-Export

 

WSL2はスーパーユーザでログイン?

WSL1では、ログインユーザが一般ユーザでしたが、WSL2を起動すると、スーパーユーザとしてログインしていました。

 

WSL2 スーパユーザでログイン

WSL2 スーパーユーザでログイン

一般ユーザになるには「su ユーザ名」を入力します。

su denn

ユーザdennになりました。

スーパユーザから一般ユーザへ

スーパユーザから一般ユーザへ

 

スーパーユーザへ戻るには

exit

します。

画像で色がついているのは、スーパーユーザかそうでないかが一目で区別ができるようにそれぞれユーザの「.bashrc」をいじった結果です。

 

一般ユーザでログインする

su denn

su - denn

でスーパーユーザから一般ユーザへなり変わると、 環境変数が違っていたり、Xが使えなかったりして、少し不便でした。

そこでユーザを指定してログインするコマンドを探したところありました。

PowerShell またはCMD.exe で次を実行すると指定したユーザでログインできました。

wsl -d DebianWSL2 -u denn

この内容をsettings.jsonに書き込めば良いので、"profiles"メンバー"list"内のDebianWSL2の箇所を次の様にしました。

{
    "guid": "{86f8842c-fddc-5203-a6aa-1b7656ad6f66}",
    "hidden": false,
    "name": "DebianWSL2",
    "source": "Windows.Terminal.Wsl",
    "commandline": "wsl.exe ~ -d DebianWSL2 -u denn"
},

「~」をいれておくとログイン後、ホームディレクトリにいます。

 

 

 お疲れ様でした。今回はここまでです。

 

 

 

 

 

 

 

 

Windows Terminal + WSL + GWSL で Linux : Part 3

X Window 起動

X window 起動

今回の目標

  • GWSL を入れて X Window を立ち上げよう!
    内容:
    1. xterm を起動する
    2. Linux側シェルからWindowsアプリを起動する(GWSLがなくてもできますが)
    3. WindowsPowerShellからLinux側アプリを起動する

次回以降の目標

  • WSL を複製して、WSL2 にコンバートしよう!

あと、番外編として

というのも計画中です。期待してお待ちいただけたらと思います。

 

目次:

 

では、本編のはじまりです。

 

GWSL を入れて X Window を立ち上げよう!

GWSLって何?

GWSLは、Windows ストアからインストールできるWSL用のX Window システムです。

つまり、これをインストールすると、LinuxのデスクトップアプリがWindowsのデスクトップに表示できるようになります。

 

もう少し具体的に何ができるかというと、ターミナル画面では、画像やPDFファイルの表示ができないのですが、X Window が立ち上がっていれば、Linux で作成した画像やPDFを表示することができるので、より活用範囲が広まります。

 

例えば、PythonのMatplotlibを使ってシミュレーションを行いたいとしても、X が動いていないとMatplotlibが表示できないのです。

それ以外の、Linuxで作図といえば、

など便利なツールがたくさんあります。こういったツールが使えるというのもLinuxを使う利点ですね(有名どころはすでにWindows版として移植されているわけですが...)。

こういったツールで作図して、LaTeX でPDF文書を作成する、な〜んて、これは憧れではないですか?

 

GWSLのインストール & 起動

まず、Windowsのバージョン20H2へのアップデートがまだでしたらしておきます。WSL2を使うためにも必須です。

  1. Windows Update(コントロールパネル/更新とセキュリティー
  2. バージョン20H2へのアップデート

アップデートが済んだら「GWSL」をWindows ストアで検索して、インストール、起動します。

 

GWSLの使い方

まずは、タスクバーにピン留めしておきましょう。

  1. スタートメニュからGWSLを見つける
  2. 右クリックメニュー
  3. その他
  4. タスクバーにピン留め

です。

GWSLが起動すると、デスクトップ右側に、GWSLのダッシュボードが現れます。もし消えてしまったら、タスクバーのGWSLをクリックすれば現れます。

GWSL ダッシュボード

GWSL ダッシュボード

初めに

をクリックし、現れた画面の一番上

  • Display Is Set To Auto-Export

をクリックします。すると再起動を促されますが、Windowsは再起動しません。

Debian リスタート

Debian リスタート
  • 「はい」を押してください。

これで準備終了、X が動いて Xアプリをデスクトップに表示できるようになりました。

陰で行われたのは、「~/.profile」と「~/.bashrc」に次のようなスクリプトを書き込みました。上記の操作を繰り返すとさらに同じスクリプトが追加されてしまうので、一度だけで良いです。

#GWSL_EXPORT_DISPLAY
ipconfig_exec=$(wslpath "C:\\Windows\\System32\\ipconfig.exe")
if [ -x $(which ipconfig.exe) ]
then
    ipconfig_exec=$(which ipconfig.exe)
fi

wsl2_d_tmp=$($ipconfig_exec | grep -n -m 1 "Default Gateway.*: [0-9a-z]" | cut -d : -f 1)
if [ -n $wsl2_d_tmp ]
then
    first_line=$(expr $wsl2_d_tmp - 4)
    wsl2_d_tmp=$($ipconfig_exec | sed $first_line,$wsl2_d_tmp!d | grep IPv4 | cut -d : -f 2 | sed -e "s|\s||g" -e "s|\r||g")
    export DISPLAY="$wsl2_d_tmp:0"
else
    export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk "{print $2}"):0
fi        
    

 

では、X初仕事です。

xterm &

と入力してリターンです。「XTerm」が立ち上がったでしょうか。コマンドの最後に「&」をつけるのがポイントです。

「&」をつけないとxtermが終了するまで、シェルがxtermのタスクに縛られてしまい、ターミナルを操作できなくなってしまいます。

 

Windows側からLinux側を操作

Windows Terminal には、Power Shell も立ち上がっていますので、そちらで操作してみます。

Windows側からLinux側のコマンドを操作する時には先頭に「wsl」をつけます。

wsl ls -l ~

wsl コマンド

wsl ls -l ~

Windows側からLinux側のホームディレクトリをみました。

では、Windows側からxtermを操作して表示させましょう。

wsl xterm -d 0:0

Windows側からxterm起動

Windows側からxterm起動

 

つけたオプションでxtermを表示するディスプレイを番号で指定しています。ディスプレイを指定しないとどこに表示して良いかわからないのです。Linux側で操作するときには自分自身のディスプレイに表示するのでオプションは必要ありません。

また、Windows側(Power Shell や CMD.exe)では「&」をつけるとエラーになります。xtermを終了させないとPower Shell で操作はできなくなります(xtermでも終了コマンドはexitです)。 

 

ついで、Linux側からWindows側のアプリを起動させてみましょう。

Linux側からWindows側を操作

エクスプローラーを起動させます。

/mnt/c/Windows/explorer.exe

エクスプローラー + xterm

エクスプローラー + xterm

絶対パスでコマンドを指定しファイル名を.exeまでつけることで実行できます。

ちょっと面倒なので、こんな時はシェルスクリプトですね。「/usr/local/bin/explorer」ファイルを作って、次の内容を記述します。

#!/bin/sh
/mnt/c/Windows/explorer.exe
sudo emacs /usr/local/bin/explorer &

Linux側でスーパーユーザーとしてファイルを作成します。作成したファイルに実行権限を与えます。

sudo chmod +x /usr/local/bin/explorer

実行してみましょう。

Linuxのシェルでの実行なので「&」をつけます。

 

X 関連インストール

パッケージマネージャ
sudo apt install synaptic
  • synaptic はパッケージマネージャです。スーパーユーザ権限でsynapticコマンドを実行します。
    sudo synaptic

    スーパーユーザでパッケージマネージャ起動

    スーパーユーザでパッケージマネージャ起動

 

 

 

日本語関連インストールと設定
  • もしも、libQt5Core.so.5 がなんたらとエラーが出た時の対処

    libQt5Core.so.5 があるかを確認する

    find /usr/lib -iname "*qt5core.so*"

    あるのにエラーが出ているのなら、strip で .note.ABI-tag を消す

    sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
入力メソッドにfcitxをインストールし、日本語変換にmozcを使います。Emacsでもmozcを使います。
sudo apt install im-config fcitx-mozc emacs-mozc

入力メソッドを設定します。(起動してない時には)GWSLをクリックして、X windowを起動しておきます。

im-config &

fcitx を選択する以外基本的に全てOK(YES)をクリックします。

設定を反映させるためにDebianのターミナルを再起動します。

次は、fcitxを設定します。

fcitx-configtool &

 

 

Emacsは、「~/.emacs.el」などに次を記入します。

;; Mozcの設定
(load-file "/usr/share/emacs/site-lisp/emacs-mozc/mozc.el")
(require 'mozc)
(setq default-input-method "japanese-mozc")
(setq mozc-candidate-style 'echo-area)

Emacs上では、「Ctrl + ¥」で日本語入力ができるようになります。

 

コマンドラインから Mozc ツールを起動
  • Mozc 設定:
    /usr/lib/mozc/mozc_tool --mode=config_dialog
  • Mozc 辞書ツール:
    /usr/lib/mozc/mozc_tool --mode=dictionary_tool
  • Mozc 単語登録:
    /usr/lib/mozc/mozc_tool --mode=word_register_dialog
  • Mozc 手書き文字入力:
    /usr/lib/mozc/mozc_tool --mode=mode=hand_writing
  • Mozc 文字パレット:
    /usr/lib/mozc/mozc_tool --mode=character_palette

 

Windowsのフォントを利用できるようにする 

Linux側のフォントの設定として、「/etc/fonts/conf.d/51-local.conf」を編集しWindowsのフォントを使えるようにします。

sudo emacs /etc/fonts/conf.d/51-local.conf &

ファイルに次のように一行だけ書き加えます。

<!--?xml version="1.0"?-->

<fontconfig>
  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
    <its:translaterule translate="no" selector="/fontconfig/*[not(self::description)]">
  </its:translaterule></its:rules>

  <description>Load local customization file</description>
        <!-- Load local system customization file -->
        <include ignore_missing="yes">local.conf</include>
  <dir>/mnt/c/Windows/Fonts</dir>
</fontconfig>

下から2行目の、dir タグの一行を加えるだけです。

 

利用できるフォントの一覧は「fc-list」コマンドで確認できます。

もし、「/mnt/c/Windows/Fonts/...」という表示がなく反映されていないような時には、「fc-cache -fv」コマンドで、一度フォントキャッシュをクリアして再ロードさせてみましょう。

 

 

 

いかがでしたか?

WindowsLinuxとで上手に連携が取れたらなんかすごいことができそうな気がしませんか?

 

今回は、ここまでです。お疲れ様でした。

 

 

 

 

 

 

Windows Terminal + WSL + GWSL で Linux : Part 2

X window 起動

X window 起動

 

今回の目標

  • WSL Debian にいろいろインストールしましょう〜
    内容:
    1. コンパイル環境を整える
    2. 最新バージョンのPythonをソースからインストールする
    3. 最新バージョンのRubyをソースからインストールする

次回以降の目標

  • GWSL を入れて X Window を立ち上げよう!
  • WSL を複製して、WSL2 にコンバートしよう!

あと、番外編として

というのも計画中です。期待してお待ちいただけたらと思います。

 

目次: 

 

WSL Debian にいろいろインストールしましょう〜

今回インストールするのは

  1. Git
  2. ソースをダウンロードしたり、コンパイルしたりするのに必要なライブラリ
  3. エディタは、Emacs
  4. PythonRubyなどのバージョン管理ツールとしてanyenv

インストールしながらPythonRubyを使える環境を作っていくのが目的です。

インストール作業

Git のインストール
sudo apt install git
CURL のインストール
sudo apt install curl
コンパイル関連のインストール
sudo apt install build-essential
sudo apt install zlib1g-dev libssl-dev libreadline-dev libsqlite3-dev libbz2-dev libncurses5-dev libgdbm-dev liblzma-dev tk-dev zlibc
 
エディターはEmacsを使うことにします(こちらは皆さんのお好みで大丈夫です)。
sudo apt install emacs

では、anyenvをインストールしてPythonのバージョン管理をすることにします。ユーザー環境にインストールして、システム全体に影響が出ないようにしたいと思います。

anyenvのインストール

自分のホームディレクトリで作業します(Linux側ターミナルを起動した直後はWindowsのホームディレクトリになっているのでLinux側へ移動します)。

cd

~/.anyenv にGitでcloneします。

~/.profile を編集して最後に次を書き込みます。

emacs .profile

##### anyenv

export PATH="$HOME/.anyenv/bin:$PATH"

eval "$(anyenv init -)"

  

.profileの変更を反映させるために、一度ターミナルを「exit」して再度Linux側ターミナルを開きます。

 

初めにanyenvの初期化を行います。その結果次のことが行われます。

  • ~/.config/anyenv/anyenv-install/ に〇〇envの情報がクローンされる。
  • コマンドは ~/.anyenv/libexec/ にインストールされる。
anyenv install --init

Pythonをインストール

手順は

  1. pyenvのインストール
  2. Python最新版のインストール
  3. インストールしたPythonを global で使うように指定する

となります。

 

pyenvのインストール

anyenvでどんな 〇〇env がインストールできるのかリストアップしてみましょう。

anyenv install --list

anyenv インストールリスト

anyenv インストールリスト

いろいろな言語をバージョン管理できます。では、pyenvをインストールします。

anyenv install pyenv

pyenv は「 ~/.anyenv/envs/」にインストールされます。

 

Pythonのインストール

Python のインストールできるバージョンを見てみます。コマンドの使い方はanyenvと同じ感じです。

pyenv install --list

pyenv インストールリスト

pyenv インストールリスト

画面がザーッと流れたので、上の方へスクロールして表示を探します。

バージョン3.9.0をインストールします。

pyenv install 3.9.0

 

ソースをダウンロードしてコンパイルするので少し時間がかかります。終わるまで休憩しましょう。

インストールが終われば、globalに指定して完了です。

pyenv global 3.9.0

バージョンを確認してみましょう。

python --version

python バージョン確認

python バージョン確認

 Ruby をインストール

行うことはPythonの時とほぼ同じなので、コマンドだけ羅列することにします。

rbenvのインストール
anyenv install rbenv
Rubyのインストール

インストールするバージョンを決めます。rbenvでは全部のバージョンは出ないで、最新のものだけリストされるようです。

rbenv install --list

バージョンが決まったらインストールです。

rbenv install 2.7.2

globalにバージョン指定します。

rbenv global 2.7.2

 

 

以上で今回の作業は終了です。お疲れ様でした。

 

 

 

 

Windows Terminal + WSL + GWSL で Linux : Part 1

 

X window デスクトップ

X window 起動

今回の目標

次回以降の目標

  • WSL Debian にいろいろインストールしましょう〜
  • GWSL を入れて X Window を立ち上げよう!
  • WSL を複製して、WSL2 にコンバートしよう!

あと、番外編として

というのも計画中です。期待してお待ちいただけたらと思います。

 

目次:

 

では、本編のはじまりです。

Windows に WSL をインストールして、Windows Terminal で Linux をいじろう!

Windows Terminal

Windows Terminal


 

WSL は、「Windows Subsystem for Linux」と言います。

Windows の中に Linux を組み込んでしまい、Windows 上で Linux のコマンド群を使うことができるようになります。

Cygwin や msys2 などと異なるのは、本物の Linux ディストリビューションWindows に取り込んでいる点です。本家Linuxディストリビューションでバージョンアップされたら、Linuxを操作してアップグレードすることができるのです。

当然、gcc や make を使ってコンパイルしたり、Apacheサーバーを立ち上げてWebサービス開発環境にしたりできるわけです。

 

すなわち、Mac OS を開発環境にしてバリバリ仕事したいけど、Macは高いしなぁ〜。と思っていたあなたへの朗報なのです。

           Windows + WSL ≒ Mac OS

Mac でしかできないと思っていたことが、これからはWindowsマシンで同じことができるようになります(ただしMac アプリは除いて、なのです)。

 

Windowsをバージョン20H2へアップデート

スタートボタン右クリック/設定から「更新とセキュリティ」画面で、20H2へアップデートします。

Windowsの機能の有効化または無効化

WSLの機能を有効にする必要があります。

コントロールパネルから「コントロール パネル\プログラムと機能\Windowsの機能の有効化または無効化」と辿ります。

 「LinuxWindowsサブシステム」

にチェックを入れます。

ついでに、

 「仮想マシンプラットフォーム」

にもチェックを入れておきます。こちらは、WSL2にするのに必要です。

再起動を求められたら再起動します。

インストール

さて、今回インストールするのは次の二つです。Microsoft Store からどちらもインストールできます。WSL で検索するといろいろ出てきますので、探してみてください。

もちろんUbuntuをインストールすることもできますが、Debian でできることは Ubuntu でもできるわけなので、本流である Debian を選択しました(Ubuntu がいいという方はもちろんUbuntuでいきましょう)。

他にも、SUSE Linux とか Kali Linux とか選択肢がいろいろあります。複数インストールすることができるので、試してみるのも良いですね。

目的のものが見つかったら、クリックして、「入手」、しましょう。ほとんどが無料でインストールできます。

Microsoft Store から Debian を起動して、ユーザー名とパスワードを設定します。

これでインストールは終了です。

速かったでしょ?!

 

 

Windows Terminal 起動

では、スタートメニューからWindows Terminal を起動します。Windows Terminal アイコンを見つけたら、

  1. 右クリックメニュー
  2. その他
  3. タスクバーにピン留め

をするとタスクバーにアイコンが現れるので、タスクバーのアイコンで起動できるようになります。

Windows Terminal コマンド

Windows Terminal が起動したら、

                  「Ctrl + Shift + P

とキーを叩くと、コマンド一覧が現れます(Ctrl はコントロールキーの意味です。コントロールキーとシフトキーを押しながらpキーを押してください)。

コマンド一覧の検索欄に「tab」と入力して検索してみましょう。

  • Close tab
  • New Tab
  • New tab, profile index: 0

とかたくさんあります。右側にショートカットキーが表示されています。

WindowsTermimnal コマンド一覧

WindowsTermimnal コマンド一覧

「ESC」して、一覧を閉じてから

     「Ctrl + Shift + 3

を叩くとLinux 側のターミナルが現れます。

デフォルトでは、

  • Ctrl + Shift + 1 が、Power Shell
  • Ctrl + Shift + 2 が、CMD.exe
  • Ctrl + Shift + 3 が、インストールしたWSL、ここではDebian

が指定されています(Windows環境によっては指定されている番号が異なることもあります、Azure Cloud Shell が入っていたりします)。

(とりあえず)上部タブバー内の「v」のような記号をクリックして表示される端末名と順番を確認してください。そこから起動することもできます。

Linux側ターミナル

Linux側のターミナルが現れたら、もう作業ができます。

でもその前に、初めにしておくべきことがあります。Debian のアップデートです。より正確には、システム管理情報の最新化とシステムアップグレードです。

次のコマンドを入力します。

  • sudo apt update          <- 最新の情報を取得します。システムは変更されません。
  • sudo apt upgrade       <- 実際にシステムをアップグレードします。ただし、OSのバージョンとかは変更されません。

sudoは、スーパーユーザー権限で作業をする時につけるコマンドで、先に設定したユーザーのパスワードの入力が促されます。システムに対する作業を行う時にはコマンドの先頭にsudoをつけて実行します。

 

コマンド実行画面です(画像は初めての実行の時ではないので表示されている内容は皆さんのとは異なります)。

sudo apt update
f:id:denn:20201124155246p:plain
sudo apt update
sudo apt upgrade
f:id:denn:20201124161222p:plain
sudo apt upgrade
日本語設定

日本語でメッセージなど表示ができるようにしておきます。

行うことは

  • ja_JP.UTF8が使えるようにする
  • ja_JP.UTF8をデフォルトに指定する

となります。まずは現在の状態をdateとlocaleで確認してみましょう。

date

dateコマンド実行

dateコマンド

JSTと表示されていればtime zoneは日本になっています。Windowsの設定をそのまま使っているわけですね。

locale

locale コマンド実行

locale コマンド

 

ロケイルはC.UTF8 になっています。これをja_JP.UTF8に変更します。まずja_JP.UTF8を使えるようにします。

コマンドを実行するとロケイル選択画面が表示されます。アルファベット順に並んでいるので下の方へ移動してスペースキーで選択すると「*」が付きます。タブキーで下の<ok> へ飛んでリターンキーを押します。

sudo dpkg-reconfigure locales

locale 選択画面

locale 選択

ja_JP.UTF8をデフォルトに選択して<ok>リターンです。

locale 変更画面

locale 変更

locale変更は次のコマンドでできます。

sudo update-locale LANG=ja_JP.UTF-8

ここで、いったん端末を「exit」して開きなおします。「Ctrl+Shift+3」ですね。

では確認しましょう

locale

locale 変更完了画面

locale変更完了
date

date 日本語表示

date 日本語表示

 

日本語になっているとプログラムを実行するときに不便だという方はlocaleをen_US.UTF8とかに変更しておきます。

sudo update-locale LANG=en_US.UTF-8

locale 変更en_US.UTF8画面

locale 変更 en_US.UTF8

端末を開きなおせば反映されます。

 

今回はここまでです。お疲れ様でした。

 

次回は、ライブラリやその他いろいろインストールしていきます。

ご覧いただきありがとうございました。