3行まとめ

  • luapromptとlsqlite3を入れようとしたが失敗した
  • パッケージ管理難しい
  • luarocksは古臭い

luarocksをインストール

シンプルなことがお気に入りのscoopを使ってインストール。

> scoop install luarocks

ちなみにインストールオプションがいろいろあったらしい。

使ってみる

luaprompt

PUC luaのREPLは(luajitほどではないが)機能が少なくて使いにくいので、DL数の多いREPLのrocksを入れようとした。 が、readlineが入ってないのでエラーがでた(この時点でエラーが出てくれるのはうれしいが)。 まあ、仕方ないか。

lsqlite3

ちょっとブラウザのsqlite dbをいじってみたかったので、luarocksを試すために入れてみた。 sqlite3.hが見つからない、でエラーになった(この時点でエラーがry))。 ちなみにsqlite3.exe自体はscoopでインストール済み。 sqliteのHPみたら、toolkitなるzipがあって、scoopのapp manifestによるとそれをDLしてるみたい。 あと、想定されるsqlite3.hのパスはこんな感じ

Error: Could not find header file for SQLITE
  No file sqlite3.h in c:/external/include
  No file sqlite3.h in c:/mingw/include
  No file sqlite3.h in c:/windows/system32/include
You may have to install SQLITE in your system and/or pass SQLITE_DIR or SQLITE_INCDIR to the luarocks command.
Example: luarocks install lsqlite3 SQLITE_DIR=/usr/local

これはmingwのgccで探索される場所なのかな? scoopは~/scoopの外に干渉する能力はない(と思ってる)ので、こういうのはめんどくさい。 manjaroでopencv触ろうとしたときは、pkgconfigを想定したところに入ってた(結局使えなかったけど)。 そもそもCをあんまり触らないのでwindowsにおけるbest practiceが分からない。

lua(rocks)は古臭い(こじんのいけn)

luarocksはluaのincludepathをいじるためにluarocks pathの機能があるが、ここから出るのがcmd.exeのスクリプトだった。 この時点で使う気がかなり失せた。 公式のインストールページも流し読みした限りオプションが/だったのでcmd.exeみを感じた。 luarocks自体はアクティブなので、powershell対応してくれないかなー

というかそもそもlua自体が(ANSIオンリーとはいえ)Cに近いし、“not be provided with batteries"な言語なので1、(ちょっとでも拡張しようとすると)Windows的には互換性の壁が大きすぎる。 その点、pipが標準で使えたり、標準ライブラリの充実度がすごいpythonが普及したのは納得2。 cargoもCと比べてパッケージ管理やビルドツールが非常に楽。 JuliaもPkg.jlが便利なのは当然だが、BinaryBuilderを使って、環境に依存するCライブラリを自動で各環境のバイナリを作成しておいてそれを引っ張ってこれるという素晴らしい機能があって感動する (ただ、オンライン上でパッケージが検索できる公式のサービスが欲しい… JuliahubJuliapackagesだろうけど、後者は更新が反映されてなさそうだし、どっちも名前や検索でのヒットが微妙。)。 あと、neovimがwindowsで一部動かなかった。

まあ、lua自体は面白いので、luaを使うときは凝ったことがしたいならmanjaro使うことにするか.