This article has multiple issues. Please help improve it or discuss these issues on the talk page . (Learn how and when to remove these template messages)
|
Original author(s) | Hisham Muhammad |
---|---|
Developer(s) | Hisham Muhammad, et al. |
Initial release | August 9, 2007 |
Stable release | 3.10.0 / February 27, 2024 |
Repository | |
Written in | Lua |
Operating system | Linux, macOS, Windows (Cygwin), Solaris, OpenBSD, NetBSD, FreeBSD |
Type | Package manager |
License | MIT License |
Website | luarocks |
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]
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.
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.
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]
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:
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.
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.
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 is a package development process library designed to facilitate packaging Python projects by enhancing the Python standard library distutils. It includes:
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 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.
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.
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.
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.