2021年10月29日

終始、何をやっているのか、解らなかった。docker構築&mozcビルド / sparkylinux-6.0-amd64

dockerのインストールは、
sparkylinuxのオフィシャルrepoでも
行なえました。
参考サイトと同じ条件にするため、削除して、
git版に改めました。

$ sudo curl -fsSL https://download.docker.com/linux/debian/gpg | \
sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/\
docker.list > /dev/null

$ sudo apt update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
docker-ce-rootless-extras docker-scan-plugin pigz slirp4netns
提案パッケージ:
aufs-tools cgroupfs-mount | cgroup-lite
以下のパッケージが新たにインストールされます:
containerd.io docker-ce docker-ce-cli docker-ce-rootless-extras
docker-scan-plugin pigz slirp4netns
アップグレード: 0 個、新規インストール: 7 個、削除: 0 個、保留: 0 個。
95.5 MB のアーカイブを取得する必要があります。
この操作後に追加で 403 MB のディスク容量が消費されます。
続行しますか? [Y/n]
y

$ apt-cache madison docker-ce
docker-ce | 5:20.10.9~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.8~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.7~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages
docker-ce | 5:20.10.6~3-0~debian-bullseye | https://download.docker.com/linux/debian bullseye/stable amd64 Packages


$ sudo systemctl enable docker

テスト:
$ sudo docker run hello-world

で、コンテナ作成に成功すると、こんな表示が、、、。

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

INFO[2021-10-24T07:11:43.873987444+09:00] ignoring event container=224485e37bc6d773b6d932cebb2a7c51ed9f2\
d2fec432bf129275582cad56097 module=libcontainerd namespace=


本番:
$ mkdir ~/workspace
$ cd ~/workspace
$ curl -O https://raw.githubusercontent.com/google/mozc/\
master/docker/ubuntu20.04/Dockerfile
$ su
# docker build --rm -t $USER/workspace .
# docker run --interactive --tty --rm $USER/workspace
 
(↑長時間)
以下のプロンプトが出ました。dockerコンテナの中らしいです。
mozc_builder@ff4f4c70b0ae:~/work/mozc/src$ pwd
/home/mozc_builder/work/mozc/src

ここは何処? 私は誰? 状態に近いです。

mozc_builder@ff4f4c70b0ae:~/work/mozc/src$ ls
BUILD.bazel BUILD.qt.bazel base bazel-testlogs client converter engine ipc protobuf rewriter testing unix
BUILD.gtk2.bazel WORKSPACE.bazel bazel-bin build_defs.bzl composer data gui mac protocol server third_party usage_stats
BUILD.ibus.bazel __init__.py bazel-out build_mozc.py config data_manager gyp net renderer session tools win32
BUILD.ja_usage_dict.bazel android bazel-src build_tools config.bzl dictionary ios prediction request storage transl


ビルド:
$ bazel build package --config oss_linux -c opt
テスト:
$ bazel test base:util_test --config oss_linux -c dbg
(テストの出力は記録し忘れました)

$ cd work/mozc/src/bazel-out/k8-opt/bin
$ ls

base composer converter data_manager engine gui prediction renderer rewriter session transliteration usage_stats
client config data dictionary external ipc protocol request server storage unix


$ cp unix/ibus/{ibus_mozc,mozc.xml} renderer/mozc_renderer server/mozc_server gui/tool/mozc_tool ~
$ cd ../../../data/images/unix
$ cp *png ~
$ cd ~
$ tar cjf mozc.tar.xz ibus_mozc mozc* *png
$ ls

ibus_mozc mozc.tar.xz mozc_renderer mozc_tool ui-alpha_half.png ui-direct.png ui-katakana_full.png ui-properties.png work
ime_product_icon_opensource-32.png mozc.xml mozc_server ui-alpha_full.png ui-dictionary.png ui-hiragana.png ui-katakana_half.png ui-tool.png


dockerを脱出:
$ exit
$ exit
$ pwd

/home/user

成果物をホスト側に引き出す:
$ docker cp ff4f4c70b0ae:/home/mozc_builder/mozc.tar.xz .
$ ls

… … mozc.tar.xz … …

解凍:
$ mkdir mozc_1
$ cd mozc_1
$ tar xf ../mozc.tar.xz


mozc_builded_files_2021-10-29_10-26-43.jpg
適正にビルドできただろう、と思います。
でもなぜかNuTyXでは、mozcアイコンが表示されません。
ひょっとすれば、NuTyXからのibusの問題?

インストール(usbメモリで運んでNuTyXで実行):
$ su
# install -m 00755 -D ibus_mozc /usr/lib/ibus-mozc/ibus-engine-mozc
# install -m 00755 -d /usr/lib/mozc
# install -m 00755 mozc_* /usr/lib/mozc/
# install -m 00644 -d /usr/share/ibus-mozc
# install -m 00644 *png /usr/share/ibus-mozc/
# install -m 00644 mozc.xml /usr/share/ibus/component/

ファイルのオーナーと権限を適正化して、
アイコンが表示される状態にできたはずでしたが、、、


以下は、事後に行なったことです。

存在するコンテナを調べる:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff4f4c70b0ae user/workspace "/bin/sh -c bash" 56 minutes ago Up 56 minutes eager_shtern
224485e37bc6 hello-world "/hello" 2 hours ago Exited (0) 2 hours ago youthful_dewdney


コンテナ削除へまず止めて(コンテナidを指定する):
$ docker stop ff4f4c70b0ae

削除する前に物語りのロケーションを知りたくて:
$ sudo find / -name "mozc_builder"
find: ‘/proc/5265/task/5265/net’: 無効な引数です
find: ‘/proc/5265/net’: 無効な引数です
/var/lib/docker/overlay2/5ef29b284889bd50f221c55fc437013454\
fdd9e834e2af445e63366db0da402f/diff/home/mozc_builder
/var/lib/docker/overlay2/830e2c323080bb01494a01a336e7d6a264\
38373008899afc5a7f3a7c23c89a4d/diff/home/mozc_builder
/var/lib/docker/overlay2/d4e5b30204a100f608fbfd92de37dd753e7\
dd95014f3b750a32e479e0e12b1cb/diff/home/mozc_builder
/var/lib/docker/overlay2/96a9c8b688f665ff942942a7f2eb9edfedfc\
4553420d7c264ff420a94da5c458/diff/home/mozc_builder
/var/lib/docker/overlay2/d9b7d4f81e8b3abcf13bb88a5136920f040\
8f55938e547d16dfdfe271e7afe8c/diff/home/mozc_builder


削除:
$ docker rm ff4f4c70b0ae

イメージってものも在るようで:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
user/workspace latest c3c71e724f96 2 hours ago 6.61GB
ubuntu 20.04 ba6acccedd29 8 days ago 72.8MB
hello-world latest feb5d9fea6a5 4 weeks ago 13.3kB


削除するにはやはりidを指定して:
$ docker rmi c3c71e724f96

dockerは、ホストのどっかにあるはずだ、と
場所がえらく気になりました。
/var/lib/docker以下であれこれ物語りが起こるようでして。

ホストの ~/workspaceの中は、
Dockerfileを入れたっきり、
最初から最後まで、見えるものと云えば、
Dockerfileだけでした。

ホストにいるときに、dockerコマンドを使い、
コンテナの中では、bazelコマンドみたいですね。

こんな手間のかかることしていないで、
$ /.configure
$ make
$ sudo make install

で入れられる方が、素人には判りやすいです。
dockerは、開発者とか専門家らにとって、
えらく便利なツールらしいんですけどね。

dockerで参考にしたサイト:
https://conveniencedailylife.blog.fc2.com/blog-entry-286.html
dockerでのmozc作成で参考にしたサイト:
https://conveniencedailylife.blog.fc2.com/blog-entry-288.html

カーネルがdockerに対応している必要があります。
sparkylinuxの場合、デフォルトカーネルで
問題ありませんでした。

参考にもならない、見にくさになりました。
dockerをご存じない方の、概要把握に役立てば、幸いです。


posted by ブログ開設者 at 11:49| Comment(0) | linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。