LuaRocks

Last updated
LuaRocks
Original author(s) Hisham Muhammad
Developer(s) Hisham Muhammad, et al.
Initial releaseAugust 9, 2007;16 years ago (2007-08-09)
Stable release
3.10.0 / February 27, 2024;14 days ago (2024-02-27)
Repository
Written in Lua
Operating system Linux, macOS, Windows (Cygwin), Solaris, OpenBSD, NetBSD, FreeBSD
Type Package manager
License MIT License
Website luarocks.org OOjs UI icon edit-ltr-progressive.svg

LuaRocks is a package manager for the Lua programming language that provides a standard format for distributing Lua modules (in a self-contained format called a "rock"), a tool designed to easily manage the installation of rocks, and a server for distributing them. While not included with the Lua distribution, it has been called the "de facto package manager for community-contributed Lua modules". [1]

Contents

The interface for LuaRocks is a command-line tool called luarocks which can install libraries and manage Lua rocks. [2] LuaRocks optionally integrates with Lua run-time loader to help find and load installed rocks while managing version dependencies. Though it is possible to use a private LuaRocks repository, the public repository is most commonly used for rocks management. As of December 2016, there are over 1,500 rocks in the public repository. [3]

The public repository helps users find rocks, resolve dependencies and install them. LuaRocks is compatible with Lua versions 5.1, 5.2 and 5.3, as well as LuaJIT.

History

Development on LuaRocks was started in 2006 by Hisham Muhammad and was released to the public on August 9, 2007. [4]

In 2015, the public repository moved from a static page curated by the tool's developer to a new server written in MoonScript by Leaf Corcoran. Also, LuaRocks development was moved to GitHub in 2010.

Portability

LuaRocks is written in Lua itself, and it is cross-platform. It is available in all major Linux distributions. However, since distribution packages often lag behind the latest release installing the latest release is recommended. When installed from the upstream tarball, LuaRocks can upgrade itself on Unix systems.

For Windows, LuaRocks distributes a package file including LuaRocks, Lua 5.1 and required utilities that are missing in a typical Windows system. The Windows package supports both Microsoft Visual Studio and MinGW compiler suites. For running on Cygwin, the Unix package should be used.

On macOS, LuaRocks is included with the Lua package of the Homebrew package manager. The Unix tarball can also be installed directly on macOS.

LuaRocks has also been reported to work on FreeBSD, OpenBSD, NetBSD and Solaris. [4]

Due to installation issues (permissions needed for system installation, lagging system packages, etc.), there is hererocks, a package available at the Python Package Index that can be installed via pip and provides installations of Lua and LuaRocks into a local directory upon demand. [5]

Projects using LuaRocks

LuaRocks allows installing Lua modules to standard Lua paths as well as to customized locations. For this reason, it is possible to use it to install extensions to any project that uses standard Lua modules, such as the Awesome window manager. Some projects, however, adopted LuaRocks as their recommended solution for managing extensions, integrating it and in some cases, maintaining their own repository of project-specific rocks. Some projects that use LuaRocks in this fashion are:

See also

Related Research Articles

<span class="mw-page-title-main">Portage (software)</span> Gentoo package management system

Portage is a package management system originally created for and used by Gentoo Linux and also by ChromeOS, Calculate, Sabayon, and Funtoo Linux among others. Portage is based on the concept of ports collections. Gentoo is sometimes referred to as a meta-distribution due to the extreme flexibility of Portage, which makes it operating-system-independent. The Gentoo/Alt project was concerned with using Portage to manage other operating systems, such as BSDs, macOS and Solaris. The most notable of these implementations is the Gentoo/FreeBSD project.

The PHP Extension and Application Repository, or PEAR, is a repository of PHP software code. Stig S. Bakken founded the PEAR project in 1999 to promote the re-use of code that performs common functions. The project seeks to provide a structured library of code, maintain a system for distributing code and for managing code packages, and promote a standard coding style. Though community-driven, the PEAR project has a PEAR Group which serves as the governing body and takes care of administrative tasks. Each PEAR code package comprises an independent project under the PEAR umbrella. It has its own development team, versioning-control and documentation.

Dependency hell is a colloquial term for the frustration of some software users who have installed software packages which have dependencies on specific versions of other software packages.

<span class="mw-page-title-main">Far Manager</span> File and archive manager for Microsoft Windows

Far Manager is an orthodox file manager for Microsoft Windows and is a clone of Norton Commander. Far Manager uses the Win32 console and has a keyboard-oriented user interface.

<span class="mw-page-title-main">TrueOS</span> Unix-like, desktop-oriented operating system

TrueOS is a discontinued Unix-like, server-oriented operating system built upon the most recent releases of FreeBSD-CURRENT.

RubyGems is a package manager for the Ruby programming language that provides a standard format for distributing Ruby programs and libraries, a tool designed to easily manage the installation of gems, and a server for distributing them. It was created by Chad Fowler, Jim Weirich, David Alan Black, Paul Brannan and Richard Kilmer during RubyConf 2004.

A software repository, or repo for short, is a storage location for software packages. Often a table of contents is also stored, along with metadata. A software repository is typically managed by source or version control, or repository managers. Package managers allow automatically installing and updating repositories, sometimes called "packages".


This is a comparison of notable free and open-source configuration management software, suitable for tasks like server configuration, orchestration and infrastructure as code typically performed by a system administrator.

setuptools Package development process library

setuptools is a package development process library designed to facilitate packaging Python projects by enhancing the Python standard library distutils. It includes:

<span class="mw-page-title-main">Tkabber</span> Instant messaging client using Tk

Tkabber is a GPL instant messaging client for the XMPP protocol which uses the Tk toolkit for the GUI. It runs on anything to which Tcl/Tk is ported: almost any X-based system, Microsoft Windows, and Mac OS X.

awesome (window manager) Window manager for X Window System

awesome is a dynamic window manager for the X Window System developed in the C and Lua programming languages. Lua is also used for configuring and extending the window manager. Its development began as a fork of dwm, though has differed considerably since. It aims to be extremely small and fast, yet extensively customizable. It makes it possible for the user to manage windows with the use of keyboard.

Tarantool is an in-memory computing platform with a flexible data schema, best used for creating high-performance applications. Two main parts of it are an in-memory database and a Lua application server.

<span class="mw-page-title-main">Zim (software)</span> Personal wiki software written in Python

Zim is a graphical text editor designed to maintain a collection of locally stored wiki-pages, a personal wiki. It works as a personal knowledge base and note-taking software application that operates on text files using markdown. Each wiki-page can contain things like text with simple formatting, links to other pages, attachments, and images. Additional plugins, such as an equation editor and spell-checker, are also available. The wiki-pages are stored in a folder structure in plain text files with wiki formatting. Zim can be used with the Getting Things Done method.

<span class="mw-page-title-main">Torch (machine learning)</span> Deep learning software

Torch is an open-source machine learning library, a scientific computing framework, and a scripting language based on Lua. It provides LuaJIT interfaces to deep learning algorithms implemented in C. It was created by the Idiap Research Institute at EPFL. Torch development moved in 2017 to PyTorch, a port of the library to Python.

<span class="mw-page-title-main">Lumina (desktop environment)</span> Desktop environment for X Window System

Lumina Desktop Environment, or simply Lumina, is a plugin-based desktop environment for Unix and Unix-like operating systems. It is designed specifically as a system interface for TrueOS, and systems derived from Berkeley Software Distribution (BSD) in general, but has been ported to various Linux distributions.

References

  1. "Lua: Not Your Average Scripting Language". ActiveState Blog. 22 November 2016. Retrieved 9 January 2017.
  2. "Using LuaRocks". LuaRocks wiki. Retrieved 30 December 2016.
  3. "LuaRocks Stats". LuaRocks.org. Retrieved 30 December 2016.
  4. 1 2 "Release history". LuaRocks wiki.
  5. "hererocks". PyPI . Retrieved 2022-05-18.
  6. "(un)Installing your plugin". Kong Gateway - Kong Docs. Retrieved 27 February 2024.
  7. "Rocks for Torch". Torch rocks repository. Retrieved 30 December 2016.
  8. "Tarantool Rocks". Tarantool. Retrieved 30 December 2016.