WSL2(Ubuntu)環境でRe:VIEW環境構築したときのNote
概要
これまでは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から簡単に導入できる。
もちろん最初は初期設定が必要になるものの、エンジニアであればとくに難しいことはない。また、親切に導入手順を解説した記事も出ているので詳細はそちらに譲ることにする。
インストールが完了すれば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
.textlintrc
の追加
lint設定ファイル 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