Tenho a tendência de colocar os pacotes no meu diretório pessoal em vez de em todo o sistema. Especificamente, LuaRocks eu tendo a preferir –local para tornar a limpeza mais fácil, se necessário. Isso leva a coisas como a necessidade de luarocks.loader. Um truque que decidi fazer é apenas consertar minhas chamadas para lua do meu shell. O método que escolhi é definir lua como uma função shell (testada em BASH e ZSH) que se anexa a LUA_PATH & LUA_CPATH e depois chama o comando lua.
function lua()
{
# Get Lua's version
local lua_version=$(command lua -e "print(string.sub(_VERSION, -3))")
# Append to Lua's paths using normal shell variable interpolation
LUA_PATH=$(command lua -e "print(package.path..';$HOME/.luarocks/share/lua/$lua_version/?.lua')")
LUA_CPATH=$(command lua -e "print(package.cpath..';$HOME/.luarocks/lib/lua/$lua_version/?.so')")
command lua $*
}
Para mim, isso é bastante ideal, mas não se aplica a comandos que não sejam executados em um shell.