Botで使用している各種のソフトウェアやらなんやらがアップデートした関係で、Botを作り直そうといろいろやっています。JTalkを使用するのに必要なhts_engineって言うものがあるんですが、これがどうもalpineではインストールできない。ubuntuだと一発でうまくいく。して?C言語とかLinuxつよつよな人、助けて。fpos_tってなに。何をしようとしていたかBotの環境はめんどくさい。Dockerを使って、地味〜に面倒なBot(自作)に必要な環境を全部自動でインストールできるようにしたかったんです。JTalk用の辞書ファイルのダウンロードという手順があるので、サクッと環境構築...というわけにもいかない。Dockerを使おういつぞやの記事でサクッと調べたことをまとめたDockerですが、今私が直面している「環境構築の煩雑さ」という問題は、Dockerの得意分野なはずです。勉強材料として、自分が管理するDiscordサーバーに導入しているMusicBotのDockerfileを見ました。その冒頭も冒頭、1行目に気になる記述を発見しました。alpine:edge調べてみると、alpineというのはbusybox(高速・低サイズ化されたLinux用コマンド集)とパッケージマネージャを組み合わせたようなものらしく、めちゃくちゃサイズが小さいです。Dcokerのベースイメージが小さいということは、それだけビルドに時間やコンピュータリソースを割く必要がないということ。小さいことはいいことなのだ。275MBRedHat系だけ2〜3倍近くサイズが違うことにも驚きますが、何より驚異的なのはalpineのサイズ。ubuntuの15分の1以下です。Botやそれに付随するソフトウェアを合計しただけで5MB以上にはなると思うのですが、それ以下のサイズでOSが構成されてるって一体...ubuntuではなくalpineを使うだけで80MB以上節約できちゃうなんて言われたら、使ってみたくなりますよね?というわけで、alpine上にOpenJTalkをインストールするために、htc_engineとかを一気にインストールするDockerfileを書いていきます。よし、alpineにhts_voiceをインストールするぞ!Dockerfileとの戦い実は自分でDockerfileを書くのは初めてなので、勉強しながら書いている部分が多いです。確実にベストプラクティスではありませんが、なんとか動くはず。hts_engineをインストールするところまでのDockerfileを以下のような感じに書いてみました。installちなみに、build-baseというパッケージは、gccg++libc-devmakeとかが入ってます。詳しくはalpine公式のパッケージ詳細でどうぞ。buildDockerfileも書けたので、試しにビルドします。2なんでや!とりあえずソースコードを見てみるC言語はやってないので、そもそも何がいけないのかからわからん。コンパイルが通ってないっぽい。240-259行は以下のようになってます。0;}あ、ダメだこれわからん。みたいな特殊な命令だった気がする。...変数...?調べてみると、ファイルの位置を表してるらしい。ここまで低レベルの話になってくると全然頭に入ってこない。http://merry.whitesnow.jp/SEMI_C/SECTION14/s14_01/s14_01_7.htmlでもstdio.hで定義されてるはずのものが食い違ってるってことにならない?C標準ライブラリとは一体...Google先生で調べると似たような問題がありそうなのはわかったけど、解決策まではわからなかった。大人しくubuntuを使うここから先は明らかに僕の技術力では無理なので、とりあえず普通のディストリビューションをベースイメージに使うことにしました。使うのは、1番ポピュラーかつサイズの小さかったubuntuでいいでしょう。Dockerfileを書き換えていきます。install一発でいけた俺の時間を返してくれ。