alienのインストール
alienがあるか確認
> require "alien" stdin:1: module 'alien' not found: no field package.preload['alien'] no file '/usr/local/share/lua/5.2/alien.lua' no file '/usr/local/share/lua/5.2/alien/init.lua' no file '/usr/local/lib/lua/5.2/alien.lua' no file '/usr/local/lib/lua/5.2/alien/init.lua' no file './alien.lua' no file '/usr/local/lib/lua/5.2/alien.so' no file '/usr/local/lib/lua/5.2/loadall.so' no file './alien.so' stack traceback: [C]: in function 'require' stdin:1: in main chunk [C]: in ?
残念ながらデフォルトでは入っていないようです。
パッケージマネージャluarocksの確認
知らない間に入っていました。
$ luarocks LuaRocks 2.3.0, a module deployment system for Lua NAME /usr/local/bin/luarocks - LuaRocks main command-line interface SYNOPSIS /usr/local/bin/luarocks [--from=<server> | --only-from=<server>] [--to=<tree>] [VAR=VALUE]... <command> [<argument>] ...
alienのインストール1回目
$ luarocks install alien Installing https://luarocks.org/alien-0.7.1-2.src.rock... Using https://luarocks.org/alien-0.7.1-2.src.rock... switching to 'build' mode ./bootstrap && ./configure LUA=/usr/local/bin/lua CPPFLAGS='-I/usr/local/include -I/usr/include' LDFLAGS=-L/usr/lib --prefix=/usr/local/lib/luarocks/rocks-5.2/alien/0.7.1-2 --libdir=/usr/local/lib/luarocks/rocks-5.2/alien/0.7.1-2/lib --datadir=/usr/local/lib/luarocks/rocks-5.2/alien/0.7.1-2/lua && make clean && make bootstrap: running: glibtoolize --quiet ... checking for ffi/ffi.h... yes checking for ffi_closure_alloc in -lffi... no configure: error: in `/tmp/luarocks_alien-0.7.1-2-4392/alien': configure: error: cannot find new enough libffi See `config.log' for more details Error: Build error: Failed building.
libffi
がないのでエラーになります。
libdiffのインストール
$ brew install libffi Updating Homebrew... ==> Auto-updated Homebrew! Updated 4 taps (caskroom/cask, homebrew/core, homebrew/php, homebrew/services). ==> New Formulae apm-server dislocker go-jira homebrew/php/php72-xdebug kubeless restic asciidoctor dnsdist heartbeat htslib libxo sceptre ... For compilers to find this software you may need to set: LDFLAGS: -L/usr/local/opt/libffi/lib For pkg-config to find this software you may need to set: PKG_CONFIG_PATH: /usr/local/opt/libffi/lib/pkgconfig ==> Summary 🍺 /usr/local/Cellar/libffi/3.2.1: 16 files, 301.6KB
Homebrew
でビールのアイコンでるのなんなんでしょう。禁酒中の私にとってはムカつくだけです。
alienのインストール2回目
$ luarocks install alien Installing https://luarocks.org/alien-0.7.1-2.src.rock... Using https://luarocks.org/alien-0.7.1-2.src.rock... switching to 'build' mode ./bootstrap && ./configure LUA=/usr/local/bin/lua CPPFLAGS='-I/usr/local/include -I/usr/include' LDFLAGS=-L/usr/lib --prefix=/usr/local/lib/luarocks/rocks-5.2/alien/0.7.1-2 --libdir=/usr/local/lib/luarocks/rocks-5.2/alien/0.7.1-2/lib --datadir=/usr/local/lib/luarocks/rocks-5.2/alien/0.7.1-2/lua && make clean && make bootstrap: running: glibtoolize --quiet bootstrap: running: autoreconf --symlink --install configure.ac:11: installing 'build-aux/ar-lib' configure: error: in `/tmp/luarocks_alien-0.7.1-2-5849/alien': configure: error: cannot find new enough libffi See `config.log' for more details Error: Build error: Failed building.
libffi
が見つからなくてエラーになります。
libffiの確認
$ ls /usr/local/opt/libffi/ ChangeLog INSTALL_RECEIPT.json LICENSE README lib share
インストールは出来ているようです。
alienのインストール3回目
libffi
の場所を指定してインストールします。
$ CFLAGS='-L/usr/local/opt/libffi/lib' luarocks install alien Installing https://luarocks.org/alien-0.7.1-2.src.rock... Using https://luarocks.org/alien-0.7.1-2.src.rock... switching to 'build' mode ./bootstrap && ./configure LUA=/usr/local/bin/lua CPPFLAGS='-I/usr/local/include -I/usr/include' LDFLAGS=-L/usr/lib --prefix=/usr/local/lib/luarocks/rocks-5.2/alien/0.7.1-2 --libdir=/usr/local/lib/luarocks/rocks-5.2/alien/0.7.1-2/lib --datadir=/usr/local/lib/luarocks/rocks-5.2/alien/0.7.1-2/lua && make clean && make bootstrap: running: glibtoolize --quiet ... /Applications/Xcode.app/Contents/Developer/usr/bin/make all-am CC src/alien.lo clang: warning: argument unused during compilation: '-L/usr/local/opt/libffi/lib' src/alien.c:550:12: warning: implicit declaration of function 'ffi_closure_alloc' is invalid in C99 [-Wimplicit-function-declaration] ac->fn = ffi_closure_alloc(sizeof(ffi_closure), &ac->ffi_codeloc); ^ src/alien.c:550:10: warning: incompatible integer to pointer conversion assigning to 'void *' from 'int' [-Wint-conversion] ac->fn = ffi_closure_alloc(sizeof(ffi_closure), &ac->ffi_codeloc); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/alien.c:565:14: warning: implicit declaration of function 'ffi_prep_closure_loc' is invalid in C99 [-Wimplicit-function-declaration] status = ffi_prep_closure_loc(ac->fn, &(ac->cif), &alien_callback_call, ac, ac->ffi_codeloc); ^ src/alien.c:567:5: warning: implicit declaration of function 'ffi_closure_free' is invalid in C99 [-Wimplicit-function-declaration] ffi_closure_free(ac->fn); ^ 4 warnings generated. CCLD src/alien_c.la markdown doc/alien.md > doc/alien.html /bin/sh: markdown: command not found make[1]: *** [doc/alien.html] Error 127 make: *** [all] Error 2 Error: Build error: Failed building.
ワーニングとエラーが出ています。ワーニングはalien
のインストールで出ています。エラーの方はalien
理由ではなさそうです。どうもmarkdown
がないのでエラーが出ているようです。これってドキュメントを作るだけなので、これがエラーでインストールできないのもどうなんでしょうか。
markdownのインストール
$ brew install markdown ==> Downloading https://homebrew.bintray.com/bottles/markdown-1.0.1.yosemite.bottle.tar.gz ######################################################################## 100.0% ==> Pouring markdown-1.0.1.yosemite.bottle.tar.gz 🍺 /usr/local/Cellar/markdown/1.0.1: 2 files, 35.6KB
alienのインストール4回目
$ CFLAGS='-L/usr/local/opt/libffi/lib' luarocks install alien Installing https://luarocks.org/alien-0.7.1-2.src.rock... Using https://luarocks.org/alien-0.7.1-2.src.rock... switching to 'build' mode ./bootstrap && ./configure LUA=/usr/local/bin/lua CPPFLAGS='-I/usr/local/include -I/usr/include' LDFLAGS=-L/usr/lib --prefix=/usr/local/lib/luarocks/rocks-5.2/alien/0.7.1-2 --libdir=/usr/local/lib/luarocks/rocks-5.2/alien/0.7.1-2/lib --datadir=/usr/local/lib/luarocks/rocks-5.2/alien/0.7.1-2/lua && make clean && make ... Updating manifest for /usr/local/lib/luarocks/rocks-5.2 No existing manifest. Attempting to rebuild... alien 0.7.1-2 is now built and installed in /usr/local (license: MIT/X11)
できました。
確認
$ /usr/local/bin/lua Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio > require "alien"