Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

Windows11 + WSL2 + Ubuntu20 + Emacs27.2

Windows11にWSL2(Ubuntu20.40)をインストールしEmacs27.2をコンパイルする

Windows11を仕立て、そこにWSL2をインストール。
WSL2のOSとしてUbuntu20.04を選択。
それを条件として、Emacs27.2をソースからコンパイルする。

WSL2の有効化

マイクロソフト公式の情報をもとにWSL2をインストール
WSL のインストール | Microsoft Docs

注意!→管理者権限でPowerShellを起動する事。

> wsl --install

※上記公式サイトに、ディスとリビュージョンを選択できる方法も記載されているが、デフォルトがUbuntu20.04らしいのでそれを採用とする。

スタートメニューからUbuntu起動

Windows11のスタートメニュー?からUbuntuを起動すると、ユーザー名とパスワードの入力を求められ、無事に完了するとbashプロンプトが起動する。

ディスとリビュージョンのアップデートとアップグレード

ここでお決まりのコマンドを叩いておく。
詳しいことは公式に公開されている。
WSL の開発環境を設定する | Microsoft Docs

$ sudo apt update
$ sudo apt upgrade

GUIアプリサポート設定

こちらも公式にのっとって。
WSL で Linux GUI アプリを実行する | Microsoft Docs

注意!→管理者権限でPowerShellを起動する事。

> wsl --update

その後

> wsl --shutdown

を実行して、再びスタートメニューからUbuntuを起動する。

試しにGeditをインストールして実行してみる

Ubuntu起動後のbashにて

$ sudo apt install gedit -y

とした後、

$ gedit

として、Geditが起動したら成功。

日本語入力周りを設定

日本語入力周りの設定をすでに完了している人は、この項目はスルーしてください。

Windows側の日本語フォントを使えるようにconfファイル作成
$ cat << 'EOS' | sudo tee /etc/fonts/local.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <dir>/mnt/c/Windows/Fonts</dir>
</fontconfig>
<!-- Created by bash script from https://astherier.com/blog/2021/07/windows11-wsl2-wslg-japanese/ -->
EOS
日本語パックをインストールしてロケールを変更
sudo apt -y install language-pack-ja
sudo update-locale LANG=ja_JP.UTF8
FcitxとMozcをインストール
sudo apt install -y fcitx-mozc dbus-x11
sudo sh -c "dbus-uuidgen > /var/lib/dbus/machine-id"
bash起動時の設定ファイルを作成
cat << 'EOS' | tee -a ~/.profile
#Added by bash script from https://astherier.com/blog/2021/07/windows11-wsl2-wslg-japanese/
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx
if [ $SHLVL = 1 ] ; then
  (fcitx-autostart > /dev/null 2>&1 &)
  xset -r 49  > /dev/null 2>&1
fi
#Added by bash script: end
EOS
WSL2の再起動

Powershellを開いて下記コマンドを実行。
注意!→管理者権限でPowerShellを起動する事。

インストールしたUbuntuの名前を確認

> wsl --list --verbose
  NAME              STATE           VERSION
* Ubuntu20.04LTS    Running         2

確認した名前でコマンド実行

> wsl -t Ubuntu20.04LTS

その後

> wsl --shutdown

を実行して、再びスタートメニューからUbuntuを起動する。

日本語化を確認

下記コマンドで、日本語表示のFcitx設定画面が表示されたら成功。
表示されたウィンドウの項目に「Mozc」が追加されているはず。

$ fcitx-config-gtk3

注意!→Keyboard(US)を削除してKeyboard(日本語)を追加し、最上位に持ってっ来ること。

Mozcの設定を変更することで、日本語←→英語 の切替キーを設定可能。
デフォルトでは「Ctrl + space」と「Zenkakuhankaku」になっていた。

Emacs27.2のインストール

ここまででGUIアプリのインストールまでできるようになったはずなので

Emacs27.2のソースコードダウンロード

公式からソースコードをダウンロード
GNU Emacs download - GNU Project
ここから辿って
Index of /pub/GNU/emacs
ここで目的のソースをダウンロードする。

2022/04/04現在 → emacs-27.2.tar.gz
Windows用をダウンロードしないように注意

emacs-27.2.tar.gzを任意のフォルダに解凍

任意のフォルダに解凍する
当然だけれど、作業はUbuntuBash上で行う事。

$ tar -xzvf ./emacs-27.2.tar.gz

※任意のフォルダへのemacs-27.2.tar.gz配置等は割愛。
※適当なフォルダに保存しておき、bashのカレントにしておく。

必要なライブラリをインストール

基本的には、こちらの内容通りにインストール。
GitHub - hubisan/emacs-wsl: Install and run Emacs with the Windows Subsystem for Linux (WSL) in Windows 10.

sudo apt update
sudo apt install -y autoconf automake bsd-mailx dbus-x11 debhelper dpkg-dev \
    libacl1-dev libasound2-dev libdbus-1-dev libgif-dev libgnutls28-dev libgpm-dev \
    libgtk-3-dev libjansson-dev libjpeg-dev liblcms2-dev liblockfile-dev libm17n-dev \
    libncurses5-dev liboss4-salsa2 libotf-dev libpng-dev librsvg2-dev \
    libselinux1-dev libsystemd-dev libtiff-dev libxml2-dev libxpm-dev procps quilt \
    sharutils texinfo zlib1g-dev gvfs language-pack-en-base libasound2 libaspell15 \
    libasyncns0 libatk-bridge2.0-0 libatk1.0-0 libatspi2.0-0 libbrotli1 \
    libcairo-gobject2 libcairo2 libcanberra-gtk3-0 libcanberra-gtk3-module \
    libcanberra0 libcroco3 libdatrie1 libdb5.3 libdrm2 libegl1 libenchant1c2a \
    libepoxy0 libflac8 libfontconfig1 libfreetype6 libgbm1 libgdk-pixbuf2.0-0 \
    libgif7 libgl1 libglvnd0 libglx0 libgpm2 libgraphite2-3 libgstreamer-gl1.0-0 \
    libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk-3-0 libgudev-1.0-0 \
    libharfbuzz-icu0 libharfbuzz0b libhyphen0 libice6 libicu66 libjansson4 \
    libjavascriptcoregtk-4.0-18 libjbig0 libjpeg-turbo8 liblcms2-2 liblockfile1 \
    libltdl7 libm17n-0 libnotify4 libnss-mdns libnss-myhostname libnss-systemd \
    libogg0 liborc-0.4-0 libotf0 libpango-1.0-0 libpangocairo-1.0-0 \
    libpangoft2-1.0-0 libpixman-1-0 libpng16-16 libpulse0 librsvg2-2 libsasl2-2 \
    libsecret-1-0 libsm6 libsndfile1 libsoup2.4-1 libssl1.1 libstdc++6 libtdb1 \
    libthai0 libtiff5 libvorbis0a libvorbisenc2 libvorbisfile3 libwayland-client0 \
    libwayland-cursor0 libwayland-egl1 libwayland-server0 libwebp6 libwebpdemux2 \
    libwoff1 libx11-6 libx11-xcb1 libxau6 libxcb-render0 libxcb-shm0 libxcb1 \
    libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 \
    libxinerama1 libxkbcommon0 libxml2 libxpm4 libxrandr2 libxrender1 libxslt1.1 \
    libyajl2
コンパイル
$ cd ./emacs-27.2
$ ./configure
$ sudo make
$ sudo make install
emacs起動
$ emacs

アンインストールしたくなったら

上記紹介サイトに記載がある。
コンパイルしたフォルダに入って、下記のコマンドを叩くことでアンインストールできる模様。

Update to a new Emacs version
To update to a new Emacs version uninstall the current one by going to the folder you used for the installation (for instance ~/emacs-27.1) and run sudo make uninstall.

Then install the new version.
$ cd ./emacs-27.2
$ sudo make uninstall.

調子悪い事

一応GUIモードで起動はするが・・・日本語入力Mozcがうまく動作しない。
Windows側にGoogle日本語入力をインストールし、それをLinux側のEmacsと紐付けるやり方が散見されるが・・・
コンソールのEmacsなら日本語入力に問題が見当たらないので、現在、$ emacs -nw としてコンソール起動して使っている。
今のところ、それで特に不満はない。

【理由】
・必要なら別窓でUbuntu起動して他のアプリ起動すればよい。
・ほかのGUIアプリの多くは、このブログの設定で日本語入力できている。
・マウス操作によるWindows←→Linuxクリップボードコピー&ペーストができている