2017年9月24日日曜日

Sphinx を実行したら、 ERROR: non-ASCII filename not supported on this filesystem encoding 'ANSI_X3.4-1968', skipped. というエラーが出た

結論

aptlocaleslocales-all をインストールし、環境変数 LANGja_JP.UTF-8 を設定。以上。

作業記録

日本語ディレクトリを作ったら、以下のエラーが発生した。

sphinx-build -b html -d build/doctrees   source build/html
Running Sphinx v1.4.9
loading translations [ja]... not available for built-in messages
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 0 source files that are out of date
はじめに.rst:: ERROR: non-ASCII filename not supported on this filesystem encoding 'ANSI_X3.4-1968', skipped.
...(略)
/work/source/index.rst:14: WARNING: toctree contains reference to nonexisting document u'\u306f\u3058\u3081\u306b'
...(略)

日本語を含むパスでエラーが起きて、対象のディレクトリを見つけられず、 toctree でそのリンクがが作成されない感じ。

エラーメッセージで検索し、下記箇所が問題の処理だというのがわかった。

いろいろ検索したら、多言語対応に必要なパッケージが無いのが原因だったことがわかった。

そんなわけなので、 Dockerfile に下記 2 行を追加した。

RUN apt-get -y install locales locales-all && apt-get -y clean
ENV LANG=ja_JP.UTF-8

最終的に下記 Dockerfile ができた。

以上。

2017年9月14日木曜日

Ubuntu 17.04 に Sphinx + textlint + prh の環境を整える

目的

前回作った Ubuntu の Docker イメージ をもとに、 sphinx と textlint, prh の環境を整える。

成果物

で、作った Dockerfile がこれ。 オフィシャルの ubuntu:zesty イメージを基にする場合は「apt ミラー設定」は不要。

FROM myubuntu:zesty

# apt ミラー設定
RUN echo "deb http://jp.archive.ubuntu.com/ubuntu/ zesty main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://jp.archive.ubuntu.com/ubuntu/ zesty-security main restricted universe multiverse" >> /etc/apt/sources.list

# ベースのアップグレード
RUN apt-get -y update
RUN apt-get -y upgrade && apt-get -y clean

# sphinx 環境構築
RUN apt-get -y install make && apt-get -y clean
RUN apt-get -y install sphinx-common && apt-get -y clean

# nodejs 環境構築
RUN apt-get -y install curl && apt-get -y clean
RUN apt-get -y install gnupg1 gnupg2 && apt-get -y clean
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get -y install -y nodejs && apt-get -y clean

# textlint 環境構築
RUN npm install -g textlint
RUN npm install -g prh
RUN npm install -g textlint-rule-prh

# textlint を rst 対応させるためのもの
RUN apt-get -y install -y python-pip && apt-get -y clean
RUN pip install docutils-ast-writer
RUN npm install -g textlint-plugin-rst

# textlint 結果可視化するための環境構築
RUN apt-get -y install lcov && apt-get -y clean
RUN npm install -g textlint-formatter-lcov

以上。

2017年9月12日火曜日

Debian stretch で Ubuntu 17.04 の Docker イメージを自作する

環境

  • イメージ作成 OS: Debian strech(Hyper-V 上の Debian stretch)
  • イメージインポート OS: Windows 10 Pro

Hyper-V 上の Debian で、debootstrap を使って Ubuntu のルートディレクトリを作成する。

Debian 上での作業

Debian 上での作業。

必要なパッケージのインストール

debootstrap パッケージのインストールのみ。

apt install debootstrap

ルートディレクトリ作成

これも Debian 上での作業。 ルートディレクトリを作って tar で固める。

mkdir ubuntu-zesty
debootstrap zesty ./ubuntu-zesty http://ftp.jaist.ac.jp/pub/Linux/ubuntu/
cd ubuntu-zesty
tar cfv ../ubuntu-zesty.tar .

Windows 上での作業

Windows 上での作業。

Docker へのインポート

作った tar ファイルをどうにかして Windows 上にもってきて、docker import する。

docker import .\ubuntu-zesty.tar ubuntu:latest

番外: Hyper-V で、Windows ホストと Linux ゲストのファイルをやり取りする方法

  1. Windows で共有フォルダを作る
  2. Linux で cifs-utils をインストール
  3. Linux で、「1.」の共有フォルダをマウント
apt install cifs-utils
mkdir share
mount -t cifs -o username=mikoto //PATH.TO.WIN.HOST/tmp share

以上。

参考資料