rocker/verse
で R Markdown を使って pdf をレンダリングする人はそれなりに多いと思う.
これは内部では TeX Live を利用しているため,日本語利用を始めとした諸機能を追加するには tlmgr
を利用している.
親切設計により preamble.tex
や YAML フロントマターにおける
header-includes:
を適切に記述しておけば,通常では knit
時に必要なパッケージを自動で tlmgr install
+ tlmgr path add
してくれることになっている1.
しかし以前の rocker/verse
は knit
時などにユーザーが tlmgr install
を試みると,permission denied
されてしまう残念仕様でした.
ところが最近の更新で,この点が改善されました2!!
R コンソール上で tlmgr install
したい場合は tinytex::tlmgr_install()
を使いましょう.こいつは tlmgr path add
もしておいてくれます.
Dockerfile
で tlmgr install
したい場合は下記のように権限周りを正しく再設定しないと,
docker run
して以降,ユーザーレベルで tlmgr install
できなるので注意.
RUN tlmgr install hoge fuga \
&& tlmgr path add \
&& chown -R root:staff /opt/TinyTeX \
&& chmod -R g+w /opt/TinyTeX \
&& chmod -R g+wx /opt/TinyTeX/bin
Enjoy!!
knit
時に自動でtlmgr install
させると利用するパッケージが一つ見つかるごとにtlmgr search hoge tlmgr install hoge tlmgr path add
を繰り返す.このため,初回knit時はknitに長めの時間がかかる.これを避けるには手動で一度にパッケージをインストールする.
↩tlmgr install hoge fuga tlmgr path add
https://github.com/rocker-org/rocker-versioned/compare/99403746f4c7d2310a8eb955db0218484addc016...053a26137013a52d7cca805c6ee32241e9fa855a の
Files changed
タブを開くverse/Dockerfile
の51–56行目を参照
↩&& chown -R root:staff /opt/TinyTeX \ - && chmod -R a+w /opt/TinyTeX \ - && chmod -R a+wx /opt/TinyTeX/bin \ + && chown -R root:staff /usr/local/lib/R/site-library \ + && chmod -R g+w /opt/TinyTeX \ + && chmod -R g+wx /opt/TinyTeX/bin \