📚

WSL2(Ubuntu)環境でRe:VIEW環境構築したときのNote

2024/08/25に公開

概要

これまではMacBookProのMaxOS環境内でRe:VIEWを使っていたが、WindowsでもWSL2が入りUbuntuがそのまま利用できるようになっているので、その上でRe:VIEW用のパッケージインストールおよび環境構築をやってみることにした。

Web上にはMacOS+Homebrew使用を前提とした説明が多いので、Ubuntu向けにはどのように手順になるのか、調べながら環境構築を実施した。

仮想化機能の有効化

自作PC等の場合、マザーボードでの仮想化機能が有効化されていない場合があるので対処する。

有効化しない場合WSL2を入れて実行しようとする場合に WslRegisterDistribution failed with error のような謎のエラーが発生して先に進めなくなるので注意。

WslRegisterDistribution failed with error: 0x800701bc

WSL2(Ubuntu)インストール

WSL2(Ubuntu)自体はWindows Storeから簡単に導入できる。

もちろん最初は初期設定が必要になるものの、エンジニアであればとくに難しいことはない。また、親切に導入手順を解説した記事も出ているので詳細はそちらに譲ることにする。

Windows 11にWSL2をインストールする

インストールが完了すればGUIなしのターミナル表示のUbuntuが利用できる。

パッケージインストール

基本的なパッケージのインストール

のちのちrbenvでrubyのコンパイルを行うので、ライブラリを多めに入れておく。

# install CUIツールのインストール
$ sudo apt install -y git tig gpg2 curl tree jq

# コンパイラ・ビルドツールのインストール
$ sudo apt install -y gcc make

# ライブラリのインストール(※後述するrubyビルド用含めて事前に入れておく)
$ sudo apt install -y make libssl-dev libffi-dev libncurses5-dev zlib1g zlib1g-dev libreadline-dev libyaml-dev libbz2-dev libsqlite3-dev liblzma-dev

# LaTeX環境のインストール(※時間がかかるので注意)
$ sudo apt install -y evince texlive-fonts-extra texlive-fonts-recommended texlive-lang-cjk xdvik-ja

rbenvおよびRubyのインストール

rbenv導入

rbenvを使ってRubyのバージョン管理もできるようにしておく。rbenv自体の導入はコマンドを叩くだけで済み、あとあとバージョン変更のときのgem管理も楽なので入れておくに越したことはないだろう。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build 

最新のrubyのインストール(2024年8月時点)

現時点で最新のRubyもインストールする。ここでコンパイル・ビルドの処理が入ることになるが、パッケージが足りない場合は、 BUILD ERROR なるエラーに繰り返し悩まされるので必要なパッケージをもれなく入れておく。

インストール可能なRubyのバージョンを確認 (rbenv install -l)

$ rbenv install -l
3.1.6
3.2.5
3.3.4
jruby-9.4.8.0
mruby-3.3.0
picoruby-3.0.0
truffleruby-24.0.2
truffleruby+graalvm-24.0.2

Rubyのインストール

$ rbenv install 3.3.4
==> Downloading ruby-3.3.4.tar.gz...
-> curl -q -fL -o ruby-3.3.4.tar.gz https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.4.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 21.0M  100 21.0M    0     0  3704k      0  0:00:05  0:00:05 --:--:-- 3788k
==> Installing ruby-3.3.4...
-> ./configure "--prefix=$HOME/.rbenv/versions/3.3.4" --enable-shared --with-ext=openssl,psych,+
-> make -j 16
-> make install
==> Installed ruby-3.3.4 to /home/furaibo/.rbenv/versions/3.3.4

NOTE: to activate this Ruby version as the new default, run: rbenv global 3.3.4

デフォルト(global)で使うRubyバージョンの指定

$ rbenv global 3.3.4

最新のNode.jsのインストール

nodebrew導入

nodeもバージョンアップがよくあるため、nodebrewを使ってバージョン管理するようにする。

curl -L git.io/nodebrew | perl - setup
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
100 26039  100 26039    0     0   7313      0  0:00:03  0:00:03 --:--:--  7313
Fetching nodebrew...
Installed nodebrew in $HOME/.nodebrew

========================================
Export a path to nodebrew:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================

nodeインストール

インストール可能なnodeのバージョン確認

$ nodebrew ls-remote
v0.0.1    v0.0.2    v0.0.3    v0.0.4    v0.0.5    v0.0.6

v0.1.0    v0.1.1    v0.1.2    v0.1.3    v0.1.4    v0.1.5    v0.1.6    v0.1.7
v0.1.8    v0.1.9    v0.1.10   v0.1.11   v0.1.12   v0.1.13   v0.1.14   v0.1.15

...(以下略)...

インストール

$ nodebrew install v22.7.0
Fetching: https://nodejs.org/dist/v22.7.0/node-v22.7.0-linux-x64.tar.gz
################################################################################################################# 100.0%
Installed successfully

バージョン指定

$ nodebrew use v22.7.0

TechBoosterのRe:VIEWテンプレートによるPDFビルド

技術書典やコミケでおなじみのTechBoosterがRe:VIEW用のテンプレートを出しているのでこれを導入する。

リポジトリのgit clone

$ git clone git@github.com:TechBooster/ReVIEW-Template.git

bundle installの実行

Re:VIEW用フォルダへの移動。ReVIEW-Templateのところは各々のプロジェクト名に合わせて変更のこと。

$ cd ReVIEW-Template

Re:VIEW利用前の bundle install 実行

$ bundle install
Bundler 2.5.11 is running, but your lockfile was generated with 2.5.17. Installing Bundler 2.5.17 and restarting using that version.
Fetching gem metadata from https://rubygems.org/.
Fetching bundler 2.5.17
Installing bundler 2.5.17
Fetching gem metadata from https://rubygems.org/..
Fetching rake 13.2.1
Installing rake 13.2.1
Fetching concurrent-ruby 1.3.4
Fetching image_size 3.4.0

...(以下略)...

npm installの実行

$ npm install

up to date, audited 582 packages in 2s

82 packages are looking for funding
  run `npm fund` for details

5 vulnerabilities (3 moderate, 2 high)

To address all issues, run:
  npm audit fix

styファイルの変更(TechBoosterテンプレート利用時)

TechBooster提供の ReVIEW-Template のstyファイル定義によりコンパイルが失敗する問題が発生するため、コメントアウトを実施する。具体的には captionwidth の定義をしている1行を '%'の記号でコメントアウトする。

articles/sty/techbooster-doujin-base.sty ファイル内の以下のところを参照する。

%\newlength{\captionwidth}  ← ココ!
\setlength{\captionwidth}{\textwidth}
\addtolength{\captionwidth}{-\captionnumwidth}
\def\captionhead{\sffamily{\color{black!30!white}{▲}}}
\long\def\@makecaption#1#2{%
  \addvspace\abovecaptionskip
  \buildcaption{!}{#1}{#2}
  \vskip\belowcaptionskip

簡単な対応策ではあるが、これで一応動かすことができるようになる。LaTeXやRe:VIEWのバージョン次第だが、新しくRe:VIEW環境を構築する場合にはこの問題に遭遇するものと考えられる。

PDFビルドの実行

フォルダへの移動

$ cd articles

PDFの生成(成功時)

$ npm run pdf
> review-template@0.0.2 pdf
> grunt pdf

Running "clean:review" (clean) task
>> 0 paths cleaned.

Running "shell:preprocess" (shell) task
/home/furaibo/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/review-5.9.0/lib/review/textutils.rb:9: warning: nkf was loaded from the standard library, but will no longer be part of the default gems since Ruby 3.4.0. Add nkf to your Gemfile or gemspec. Also contact author of review-5.9.0 to add nkf into its gemspec.

(...中略)

ℹ INFO    uplatex -interaction=nonstopmode -file-line-error -halt-on-error __REVIEW_BOOK__.tex
ℹ INFO    uplatex -interaction=nonstopmode -file-line-error -halt-on-error __REVIEW_BOOK__.tex
ℹ INFO    uplatex -interaction=nonstopmode -file-line-error -halt-on-error __REVIEW_BOOK__.tex
ℹ INFO    dvipdfmx -d 5 -z 9 __REVIEW_BOOK__.dvi
✔ SUCCESS built ReVIEW-Template.pdf

Done.

もしもstyファイルを直していないと以下のようなエラーが出てきてLaTeXでのコンパイルができないので注意。

./techbooster-doujin-base.sty:56: LaTeX Error: Command \captionwidth already de
fined.
               Or name \end... illegal, see p.192 of the manual.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.

lintの準備

必要なnpmパッケージの導入

まずはlintに必要なパッケージを導入する。

textlintの導入

$ npm i -D textlint

関連するプラグイン及びルールの導入

$ npm i -D textlint-plugin-review textlint-rule-prh textlint-rule-preset-japanese textlint-rule-preset-ja-spacing textlint-rule-preset-ja-technical-writing

lint設定ファイル .textlintrc の追加

TechBoosterテンプレートのルートフォルダ内に、以下のファイルを .textlintrc の名前で追加する。

{
  "rules": {
    "preset-japanese": true,
    "preset-ja-technical-writing": true,
    "preset-ja-spacing": true,
    "prh": {
      "rulePaths": [
        "node_modules/prh/prh-rules/media/WEB+DB_PRESS.yml"
      ]
    }
  },
  "plugins": [
    "review"
  ]
}

package.json へのコマンド追加

TechBoosterテンプレート内にある package.json 内にlint用のコマンドを追加する。
これによって、 npm run lint コマンドでreファイルに対するlintが有効になる。

"scripts": {
    "global-bundler": "gem install bundler",
    "global": "npm run global-bundler",
    "pdf": "grunt pdf",
    "md": "grunt markdown",
    "html": "grunt html",
    "text": "grunt text",
    "epub": "grunt epub",
    "web": "grunt web",
    "idgxml": "grunt idgxmlmaker",
    "vivliostyle": "grunt vivliostyle",
    "test": "npm run html",
    "lint": "textlint 'articles/*.re'" ← この行を追加
  },

参考ページ

Discussion