2022/1/1-3

親の実家に帰省したりするなどしていた。


diesel_cliを入れるのに割と苦労したのでメモ。diesel_cliというのは何かというと、まずRustのORMとしてdieselというのがあって、そいつのマイグレーション管理ツールがdiesel_cliである。cargo install diesel_cliで入れられると聞いたのだが、エラーが色々出た。原因を調べてみると依存ライブラリ関係のエラーらしい。

cargo installはツールを入れることができるコマンドだが、バイナリをダウンロードするわけではなくソースからコンパイルしてインストールするものである。dieselはMySQL、PostgreSQL、SQLiteの3種に対応しているのだが、それらと接続する機能込みでコンパイルするにはそのためのライブラリが必要なわけである。具体的には、MySQLのためにはmysqlclient.lib、PostgreSQLのためにはlibpq.lib、SQLiteのためにはsqlite3.libが要る。(Windowsの場合)これがどこから手に入れられるものなのか調べるのがやや面倒だった。

結論としては、まずmysqlclient.libはMySQLサーバー本体を入れれば手に入る。昔はC APIが単独で配布されていたらしいが、今はそうではないらしい。古い情報が引っかかってC++ APIは現在も単独で配布されているがそれはdiesel_cliのコンパイルに使用できるものではない。mysqlclient.libの存在するフォルダを環境変数MYSQLCLIENT_LIB_DIRに指定すると読み込んでくれる。

libpq.libはPostgreSQLサーバー本体を入れれば手に入る。こちらのディレクトリパスはPQ_LIB_DIRに指定する。

sqlite3.libは少し厄介で、SQLite公式で配布されているのはsqlite3.dllとsqlite3.defだけである。VisualStudio付属のlib.exe(Microsoft Library Manager)を使うと.defから.libを生成することができる。SQLITE3_LIB_DIRに指定する。

以上の設定をしたうえでようやくcargo install diesel_cliのみでインストールできる。

実際のところ、3つとも必ず入れる必要はなく、–no-default-featuresを付けたうえで–featuresオプションで必要なもののみ有効化すればよく、その場合であれば3つの内の必要なライブラリだけ設定すればよい。それにしてもそれぞれの機能の入れ方が良く分からなくてもやもやするので、結局全て調べた。

その内記事にまとめる。

参考:

https://jpndev.com/post/842525

https://dev.mysql.com/downloads/c-api/

https://www.sqlite.org/download.html

https://github.com/sgrif/mysqlclient-sys

https://github.com/sgrif/pq-sys

https://github.com/rusqlite/rusqlite

Categories: