Googleドライブの仕様が変わっていて「マイドライブ」で同期するローカルフォルダの変更に手間取ったお話
[2023/02/22]
(環境によって異なるかもですが)インストール用 shell script 内での、ダウンロードした tar.gz ファイルのハッシュ値比較で上手くいかず、強制的にインストールが止まってしまう状態。
生成したハッシュ値の最後に半角スペースがあり、これが原因でハッシュ値比較の結果が false になっていた。
Dockerfile 内で
RUN sed -i 's/\-f 2,2`/\-f 2,2 | xargs`/g' ./mecab-ipadic-neologd/libexec/make-mecab-ipadic-neologd.sh
を追加する( xargs がトリミングしてくれる )ことで、ハッシュ値比較結果が true となり、問題なくインストールできましたとさ。
おそらく環境によって挙動が違うと思うのですけど、自分の場合は Dockerfile 内で自動的にインストールされるようにコマンド記述したら、何度やってみても
という結果に。
画面上で確認できたログは以下の通り。
> [11/11] RUN ./mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n --asuser -a -y -p /var/lib/mecab/dic/mecab-ipadic-neologd && rm -rf mecab-ipadic-neologd: 0.429 [install-mecab-ipadic-NEologd] : Start.. 0.429 [install-mecab-ipadic-NEologd] : Check the existance of libraries 0.431 [install-mecab-ipadic-NEologd] : find => ok 0.432 [install-mecab-ipadic-NEologd] : sort => ok 0.433 [install-mecab-ipadic-NEologd] : head => ok 0.434 [install-mecab-ipadic-NEologd] : cut => ok 0.435 [install-mecab-ipadic-NEologd] : egrep => ok 0.436 [install-mecab-ipadic-NEologd] : mecab => ok 0.436 [install-mecab-ipadic-NEologd] : mecab-config => ok 0.437 [install-mecab-ipadic-NEologd] : make => ok 0.438 [install-mecab-ipadic-NEologd] : curl => ok 0.439 [install-mecab-ipadic-NEologd] : sed => ok 0.440 [install-mecab-ipadic-NEologd] : cat => ok 0.441 [install-mecab-ipadic-NEologd] : diff => ok 0.441 [install-mecab-ipadic-NEologd] : tar => ok 0.442 [install-mecab-ipadic-NEologd] : unxz => ok 0.443 [install-mecab-ipadic-NEologd] : xargs => ok 0.444 [install-mecab-ipadic-NEologd] : grep => ok 0.445 [install-mecab-ipadic-NEologd] : iconv => ok 0.446 [install-mecab-ipadic-NEologd] : patch => ok 0.447 [install-mecab-ipadic-NEologd] : which => ok 0.448 [install-mecab-ipadic-NEologd] : file => ok 0.449 [install-mecab-ipadic-NEologd] : openssl => ok 0.450 [install-mecab-ipadic-NEologd] : awk => ok 0.575 1.229 [install-mecab-ipadic-NEologd] : mecab-ipadic-NEologd is already up-to-date 1.229 1.229 [install-mecab-ipadic-NEologd] : mecab-ipadic-NEologd will be install to /var/lib/mecab/dic/mecab-ipadic-neologd 1.229 1.229 [install-mecab-ipadic-NEologd] : Make mecab-ipadic-NEologd 1.233 [make-mecab-ipadic-NEologd] : Start.. 1.233 [make-mecab-ipadic-NEologd] : Check local seed directory 1.233 [make-mecab-ipadic-NEologd] : Check local seed file 1.236 [make-mecab-ipadic-NEologd] : Check local build directory 1.236 [make-mecab-ipadic-NEologd] : create /var/www/mecab-ipadic-neologd/libexec/../build 1.237 [make-mecab-ipadic-NEologd] : Download original mecab-ipadic file 1.237 [make-mecab-ipadic-NEologd] : Try to access to https://ja.osdn.net 1.893 [make-mecab-ipadic-NEologd] : Try to download from https://ja.osdn.net/frs/g_redir.php?m=kent&f=mecab%2Fmecab-ipadic%2F2.7.0-20070801%2Fmecab-ipadic-2.7.0-20070801.tar.gz 1.896 % Total % Received % Xferd Average Speed Time Time Time Current 1.896 Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 5.241 curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to osdn.dl.osdn.net:443 5.247 /var/www/mecab-ipadic-neologd/libexec/../build/mecab-ipadic-2.7.0-20070801.tar.gz: No such file or directory 5.247 088BF1C1CE7F0000:error:80000002:system library:file_ctrl:No such file or directory:crypto/bio/bss_file.c:297:calling fopen(/var/www/mecab-ipadic-neologd/libexec/../build/mecab-ipadic-2.7.0-20070801.tar.gz, r) 5.247 088BF1C1CE7F0000:error:10080002:BIO routines:file_ctrl:system lib:crypto/bio/bss_file.c:300: 5.248 5.248 Hash value of /var/www/mecab-ipadic-neologd/libexec/../build/mecab-ipadic-2.7.0-20070801.tar.gz don't match 5.248 [make-mecab-ipadic-NEologd] : Try to download from https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM 5.251 % Total % Received % Xferd Average Speed Time Time Time Current 5.251 Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 11.6M 100 11.6M 0 0 1926k 0 0:00:06 0:00:06 --:--:-- 2525k 11.45 11.45 Hash value of /var/www/mecab-ipadic-neologd/libexec/../build/mecab-ipadic-2.7.0-20070801.tar.gz don't match 11.45 [make-mecab-ipadic-NEologd] : Try to download from https://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz/download?use_mirror=autoselect# 11.45 % Total % Received % Xferd Average Speed Time Time Time Current 11.45 Dload Upload Total Spent Left Speed 100 663 0 663 0 0 2514 0 --:--:-- --:--:-- --:--:-- 2511 100 417 100 417 0 0 586 0 --:--:-- --:--:-- --:--:-- 586 100 11.6M 100 11.6M 0 0 805k 0 0:00:14 0:00:14 --:--:-- 436k 26.28 26.28 Hash value of /var/www/mecab-ipadic-neologd/libexec/../build/mecab-ipadic-2.7.0-20070801.tar.gz don't match 26.29 [make-mecab-ipadic-NEologd] : Fail to download /var/www/mecab-ipadic-neologd/libexec/../build/mecab-ipadic-2.7.0-20070801.tar.gz 26.29 [make-mecab-ipadic-NEologd] : You should remove /var/www/mecab-ipadic-neologd/libexec/../build/mecab-ipadic-2.7.0-20070801.tar.gz before retrying to install mecab-ipadic-NEologd 26.29 [make-mecab-ipadic-NEologd] : rm -rf /var/www/mecab-ipadic-neologd/libexec/../build/mecab-ipadic-2.7.0-20070801 26.29 [make-mecab-ipadic-NEologd] : rm /var/www/mecab-ipadic-neologd/libexec/../build/mecab-ipadic-2.7.0-20070801.tar.gz ------ Dockerfile:45 -------------------- 45 | >>> RUN ./mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n --asuser -a -y -p /var/lib/mecab/dic/mecab-ipadic-neologd \ 46 | >>> && rm -rf mecab-ipadic-neologd 47 | -------------------- ERROR: failed to solve: process "/bin/sh -c ./mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n --asuser -a -y -p /var/lib/mecab/dic/mecab-ipadic-neologd && rm -rf mecab-ipadic-neologd" did not complete successfully: exit code: 1
エラーが発生している該当のシェルスクリプトは mecab-ipadic-neologd/libexec/make-mecab-ipadic-neologd.sh で、この中に
TMP_IPADIC_HASH_VAL=`openssl sha1 ${BASEDIR}/../build/${ORG_DIC_NAME}.tar.gz | cut -d $' ' -f 2,2` if [ "${TMP_IPADIC_HASH_VAL}" != "0d9d021853ba4bb4adfa782ea450e55bfe1a229b" ]; then
のようなダウンロードしたファイルのハッシュ値チェックロジックがあるのだけれど、この if 条件が false になっている模様。
調べてみると
`openssl sha1 ${BASEDIR}/../build/${ORG_DIC_NAME}.tar.gz | cut -d $' ' -f 2,2`
の結果は "0d9d021853ba4bb4adfa782ea450e55bfe1a229b "
となっており、末尾に余分な半角スペースが…。
なので、
`openssl sha1 ${BASEDIR}/../build/${ORG_DIC_NAME}.tar.gz | cut -d $' ' -f 2,2 | xargs`
と書き換えてやることで末尾の半角スペースが除去され、 if 条件が true となり、無事にインストールが完了したのでした。