Home About Contact
AsciiDoc , Pandoc , Sed

Silicon mac にも Asciidoctor と Pandoc 3.1.9 を入れた、GNU sed のインストール

Kindle 用のEPUB生成に Asciidoctor と Pandoc を使っている。 M1 macbook air (Ventura) にも同じ環境をつくることにした。その備忘録です。 なお Homebrew は使わない。

Asciidoctor

https://asciidoctor.org/docs/install-asciidoctor-macos/に沿ってインストールをすすめます。

RVMをすすめられるのですが、単に asciidoctor だけ使えればいいので、なるべく手間はかけたくないのでパス。 このページの一番最後に Vanilla procedure があるので、それに従うことにする。

gem があれば gem install asciidoctor -N するだけらしい。

gem は最初から入っている。

$ which gem 
/usr/bin/gem

まず、gem 自身の update をせよとこのことだからやってみると:

$ sudo gem update --system

普通にエラーになる。まあ予想はしてたけど。

ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted @ rb_sysopen - /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/gem

代わりに次のように -n /usr/local/bin を指定すればよいらしい。

$ sudo gem install asciidoctor -n /usr/local/bin

エラーなくコマンドが実行されたっぽいのでこれでよいことにする。

gem が(たぶん)最新になったので、asciidoctor コマンドを入れる。 その前に、GEM_HOME 環境変数を設定しておく必要がある。

$ export GEM_HOME="$HOME/.gem"

環境変数をセットした状態から:

$ gem install asciidoctor -N
Fetching asciidoctor-2.0.20.gem
Successfully installed asciidoctor-2.0.20
1 gem installed

これで ~/.gem/bin/asciidoctor にコマンドがインストールされた。

あとは、~/.bashrc などに以下を書いておく。

export GEM_HOME="$HOME/.gem"
export PATH=$GEM_HOME/bin:$PATH

Pandoc を入れる

Ubuntu では Stack を使ってソースから入れたのだが、 macOS では、(homebrewなどがなければ)自分で pkg-config, zlib... などの依存ライブラリを 入れていく必要があり、とても面倒。 あきらめてバイナリを入れることにする。

https://pandoc.org/installing.html の macOS のセクションを見ればよい。

Pandocのダウンロードページ https://github.com/jgm/pandoc/releases/tag/3.1.9 へ行き、pandoc-3.1.9-arm64-macOS.zip をダウンロードして、 適当なディレクトリ(ここでは ~/.local/pandoc-3.1.9-arm64 ) に展開して配置。

あとは次のように ~/.bashrc でパスを通しておけばOK。

export PATH=$GEM_HOME/bin:$HOME/.local/pandoc-3.1.9-arm64/bin:$PATH

GNU Sed に入れ替える

Asciidoctor と Pandoc を入れたのは EPUB をつくるためですが、生成した EPUB の一部のソースを書きかえるために、 sed を使っています。 macOS に最初から入っている sed と Ubuntu の sed は同じものでないので、-i オプションなどが意図通り作動しない。

そこで、Ubuntu の sed と同じ挙動になるように、GNU sed を macOS に入れます。

https://www.gnu.org/software/sed/ から、 sed-4.9.tar.gz を入手、あとは展開して ./configure;make して出来上がった sed コマンドをパスの通った場所に配置するだけです。

詳細はMac の sed を GNU の sed に入れ替えようを参照。

まとめ

なんとか Homebrew のお世話にならずにすんだ。 Homebrewを避けたい理由のひとつは、いろいろなツールを入れていくうちにコンフリクトが起きるのがいやだからなのだが、 nix というパッケージマネージャがそういう問題がないらしい。 ただ、asciidoctor, pandoc コマンドがほしいだけなのに、新しいパッケージマネージャに手を出すとか精神的負担が大きいので 今回は見送った。 機会があればそのうち試してみたい。