1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

asciidoctorの編集環境をWSL上に構築する

Last updated at Posted at 2020-02-09

はじめに

今回はLinuxのVMで複数の AsciiDocファイルのhtml変換をする環境があった。
それを WSL に移行することが趣旨である。
VM と WSL に変えることで、必要なディスク容量が大きく削減できる。

WSL以外の導入方法もあって「参考: その他のアプローチ」にざっとまとめた。
Windows上のエディタとの連携が難しいので、万人にお勧めな方式ではないので注意してほしい。(WindowsとLinuxとでパスの対応付けが違うので、色々悩ましいことになる。)

  • 環境: Windows 10 Pro 1909
    • Ubuntu 18.04
      • ruby 2.5
        • Asciidoctor 2.0.10

インストール自体は3行ぐらいなのだけど、WSLの導入部分をちゃんと書いたら膨大になってしまった。

WSL に Ubuntu 18をインストールする

企業内の環境など管理者でStoreが禁止している場合もあるので、今回はMicrosoft Storeを使わない手順で導入した。

Windows Subsystem for Linux を有効にする

  1. Windows Subsystem for Linux を有効にする
    設定 → アプリと機能 → プログラムと機能をクリック
    image.png
  2. 「Windowsの機能の有効化または無効化」をクリックし、「Windows Subsystem for Linux」のチェックボックスをONにする。
    image.png
    image.png
  3. 再起動する

WSLの入手とインストール

次のサイトに従って導入する。今回は、Ubuntu18.04 を使用する。

image.png

image.png

なお、WSLを有効化していないと、次のようなエラーになる。
image.png

インストール後の設定

端末の色設定など

後回しでも良いが、参考のため書いておきます。

~/.vimrc
vi を使う時に黒背景に合わせた文字色にする。

set background=dark

~/.bashrc
コマンドプロンプトの色を変える。PS1の部分を置き換える。

PS1='\e[37;1m\u@\e[35m\w\e[0m\$ '

端末が一々囀るのを黙らせる

$ echo "set bell-style none" >> ~/.inputrc
$ exec $SHELL -l

ネットワーク設定?

導入直後は、 Temporary failure resolving 'security.ubuntu.com' と名前解決に失敗している。別の環境(Windows 10 Pro 1909以前)ではこんなことをせずに動いたので、解決方法が腑に落ちないが、一応書いておく。

******@**********:~$ sudo apt update
[sudo] password for ******:
Err:1 http://security.ubuntu.com/ubuntu bionic-security InRelease
  Temporary failure resolving 'security.ubuntu.com'
Err:2 http://archive.ubuntu.com/ubuntu bionic InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Err:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Err:4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease
  Temporary failure resolving 'archive.ubuntu.com'
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic-updates/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic-backports/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease  Temporary failure resolving 'security.ubuntu.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.
******@**********:~$

名前解決に関する問題なのだろうが、WSL的にはどう直すか?
(WSLだと、resolve.conf は自動生成している模様)
こんな感じでうまくいった。

1. wsl.conf の作成

$ sudo vi /etc/wsl.conf
$ cat /etc/wsl.conf
[network]
generateResolvConf = false
$

2. 端末を閉じて、開きなおす。

3.sudo vi /etc/resolv.conf で開いて、 nameserver 8.8.8.8 を先頭に追加。

インストール

sudo apt update
sudo apt install -y ruby default-jdk graphviz
sudo gem install asciidoctor-diagram asciidoctor-rouge

asciidoctor-pdfasciidoctor-mathematical を使いたい場合はさらに次のコマンドを実行する。

sudo apt install cmake ruby-dev bison flex libffi-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev libpango1.0-dev fonts-lyx
sudo gem install asciidoctor-pdf asciidoctor-mathematical

参考: その他のアプローチ

とりあえず、Windows上に AsciiDoc環境を作るのにいくつか方法がある。
大雑把にメリットデメリットを書いておく。

今回は、LinuxのVMで複数の asciidoctor ファイルの変換をする環境があったが、それを WSL に移行することが趣旨なので 3. を採用した。Linux環境に資産がなければ、1., 2. の選択をするのが妥当と思われる。

  1. エディタやプラグインで導入する
    以下、あまり使い込んでいないので参考程度です。
  • AsciidocFX, ATOM, Visual Studio Code, etc.
    • PDF出力がうまくいかなかったり、使える拡張機能が限定されている
    • ランタイムが Ruby版とは違い Asciidoctor.js, AsciidoctorJ になっているので出来ることが制限されてくる。
      → やりたいことができているなら、最良の選択。
  1. Windows に Ruby版の asciidoctor を導入する
  • 拡張機能がそこそこ使える
  • asciidoctor-mathematical は導入できない
    → mingw環境だとビルドに失敗する
  • ATOM, VS-Codeだとか、Windowsのアプリケーションとの連携ができる
  1. Windows に WSL で Ubuntu の環境を用意して、asciidoctorを導入する
  • 拡張機能がそこそこ使える
  • apt コマンドなど Linux の導入ノウハウが そこそこ 通用する
  • VMより必要なディスク容量が少なくて済む
  • VS-Codeだとか、Windowsのアプリケーションとの連携がしにくい
  1. Windows に WSL で Ubuntu の環境を用意して、Dockerで asciidoctor環境を用意する
  • dockerのことを覚えれば、asciidoctorのインストールの智識は不要になるかもしれない
  • 良くも悪くも docker上の環境なので、docker経由で実行することになる。コマンドがどうしても長くなりがちで、シェルスクリプトを書いて起動とか手間は増える。
  • WSL環境を複数作りたいといった状況なら、この方法の方が管理は楽かも。
  1. Windows に VM を用意して asciidoctor を導入する
  • 拡張機能がすべて使える
  • apt コマンドなど Linux の導入ノウハウがそのまま使える

参考

端末の色設定など

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?