web-dev-qa-db-ja.com

Luarocksを使用してLua5.2と5.1の両方のライブラリをインストールするにはどうすればよいですか?

私は小さなLuaプロジェクトを作成し、Luarocksを使用してサードパーティの依存関係をインストールしています。私のマシンのデフォルトのLuaバージョンは5.2で、この時点まではすべてが正常に機能しています。

しかし、今日、私は私を混乱させている問題に出くわしました。 Lua 5.1とLuajitでプログラムを実行して、これらのバージョンでも機能するかどうかを確認したいのですが、Luarocksに依存関係の適切なバージョンをダウンロードさせるのに苦労しています。最後の手段として、Luarocksがインストールした5.2ライブラリを使用するようにLua5.1に指示しようとしましたが(LUA_PATH環境変数をLUA_PATH_5_2と同じ値に設定することにより)、残念ながらそれだけでは不十分です。 :私のプロジェクトはCベースのモジュールであるLuaFileSystemに依存しているため、5.1と5.2用に別々のバージョンをインストールする必要があります。

依存関係の5.1バージョンと5.2バージョンの両方をインストールするには何をする必要がありますか? luarocks installコマンドにいくつかのパラメーターを渡す必要がありますか?マシンにLuarocksの複数のインスタンスをインストールする必要がありますか?私を混乱させる1つのことは、.luarocksフォルダー内で物事が5.2サブフォルダー(〜/ .luarocks/share/lua/5.2 /)に分類されていることです。これは、物事をにインストールする方法がある可能性があることを示唆しています。兄弟の5.1フォルダーですが、同時にbinフォルダーは1つしかないため、luarocksは一度に1つのバージョンのLuaしか処理できないことを示しています...

15
hugomg

~/.luarocks/share/lua/5.2/への参照に基づくと、Unixシステム(LinuxまたはMac)を実行しているようです。次のように、Lua5.1とLua5.2の両方にLuaRocksの最新バージョンを2回インストールできます。

./configure --lua-version=5.1 --versioned-rocks-dir
make build
Sudo make install

そして再び5.2の場合:

./configure --lua-version=5.2 --versioned-rocks-dir
make build
Sudo make install

これにより、/usr/local/bin/luarocks-5.1/usr/local/bin/luarocks-5.2が取得されます。 Lua5.1および5.2を/ usr/local /にインストールし、それぞれがユーザーツリーに独自の~/.luarocks/lib/luarocks/rocks-5.x/エントリ(およびシステムツリーに/usr/local/lib/luarocks/rocks-5.x)を使用し、モジュールをにインストールする場合/usr/share/lua/5.x/~/.luarocks/share/lua/5.x/(および同様にlib)の適切な場所。

22
Hisham H M

Moteusが提案したように、私はLua5.1用のLuarocksの2番目のバージョンをインストールすることにしました。しかし、彼はWindowsを使用しており、私はLinuxを使用しているので、これが私がしたことです。

  • Luarocksの最新バージョンのソースを Luarocks Webサイト からダウンロードします。

  • ソースディレクトリから、./configureスクリプトを実行します。

    /configure --prefix="${HOME}/.luarocks51" --lua-suffix=5.1

    プレフィックス設定は、Luarocksに5.2インストールのLuarocksの既存の.luarocks51フォルダーの隣にある.luarocksフォルダーにその内容を配置するように指示します。 lua-suffixパラメーターは、私のマシン(5.2)のデフォルトのluaバージョンの代わりにLua5.1を使用するようにLuarocksに指示します。これは、Lua5.1のインタープリターをlua5.1(Debianが/usr/bin/lua5.1にインストールしたもの)と名付けたことによるものです。最後に、Luarocksは5.1ヘッダーとライブラリがインストールされている場所(/usr/include/lua5.1/)を自動的に検出しましたが、そうでない場合は、--with-lua-includeパラメーターと--with-lua-libパラメーターで指定できたと思います。

  • Luarocksをmakeでコンパイルします

  • make isntallを使用してインストールします(ローカルディレクトリにインストールするため、Sudoは必要ありません)。

  • Luarocksによってダウンロードされたライブラリを使用するように5.1環境 を構成します。 .bashrcに以下を追加しました。

    export PATH=$PATH:~/.luarocks/bin:~/.luarocks51/bin
    export LUA_CPATH=";;${HOME}/.luarocks51/lib/lua/5.1/?.so"
    export LUA_PATH=";;${HOME}/.luarocks51/share/lua/5.1/?.lua;${HOME}/.luarocks51/share/lua/5.1/?/init.lua"
    
    export LUA_CPATH_5_2=";;${HOME}/.luarocks/lib/lua/5.2/?.so"
    export LUA_PATH_5_2=";;${HOME}/.luarocks/share/lua/5.2/?.lua;${HOME}/.luarocks/share/lua/5.2/?/init.lua"
    

    5.1構成はLuajitでも機能します。

  • Luarocksの5.1バージョンの実行可能ファイルの名前はluarocks-5.1です。

    luarocks-5.1 install lfs
    
7
hugomg

これは私がこれを行う方法です。 https://Gist.github.com/moteus/6823437 私の英語はあまり上手ではありません。しかし、私はそれが役に立つかもしれないと思います。

5
moteus

私はこれとまったく同じ問題を抱えていました。再利用できるもっと自動化されたものが欲しかったのです。

私はRuby RVMに非常に慣れています。それで、インスピレーションを得たいと思いました。ニーズに対応するために3つのクイックbash関数を作成するだけです。自由に使用してください。 ArchLinuxでテスト済み

https://github.com/mathieujobin/lua_version_manager

1
Mathieu J.

自作を使用して、あなたはすることができます:

brew install lua51  # Lua 5.1
brew install lua    # Lua latest

LuarocksにはLuaが付属しているので、次のことができます。

# Install Lua 5.1 version of any package
luarocks-5.1 install moonscript

# Install Lua latest version of any package
luarocks install moonscript
1
aleclarson

最新バージョンでは、luaバージョンとluadirの両方に言及する必要があります。

luarocks --lua-dir=$(brew --prefix)/opt/[email protected] --lua-version=5.1 install lua-cassandra
0
Kamyar