Abstract
After struggling around 1 hour, I have successfully installed luci on my ubuntu VM. For future reference, here is the steps I have tried.
Dependencies
- lua
- cmake
- uci
- luci
# lua
Installation
$> sudo apt-get install lua5.1 liblua5.1-0-dev
$> sudo apt-get install lua5.1 liblua5.1-0-dev
Notes
Hopefully, you can run lua interpreter on your terminal by typing lua directly on terminal for now on.
# cmake
Installation
$> sudo apt-get install cmake
$> sudo apt-get install cmake
# uci
Installation
Edited from here
# Some extra package are required:
$> sudo apt-get install cmake lua5.1
# The libubox library is required. It should to compiled from source.
# To do this, first you have to get the source from git:
$> git clone git://nbd.name/luci2/libubox.git libubox
$> cd libubox
# Please follow the next steps to build libubox:
$> mkdir build
$> cd build
$> cmake ..
$> make ubox
# Install libubox:
$> sudo mkdir -p /usr/local/include/libubox
$> sudo cp ../*.h /usr/local/include/libubox
$> sudo cp libubox.so /usr/local/lib
$> sudo ldconfig
# Get UCI source from git:
$> git clone git://nbd.name/uci.git uci
$> cd uci
# Please follow the next steps to build uci:
$> mkdir build
$> cd build
$> cmake ..
$> make all
# Install uci:
$> sudo mkdir -p /usr/local/include/uci
$> sudo cp ../uci.h ../uci_config.h /usr/local/include/uci
$> sudo cp ../uci_blob.h ../ucimap.h /usr/local/include/uci
$> sudo cp libuci.so /usr/local/lib
$> sudo cp uci /usr/local/bin
$> sudo cp lua/uci.so /usr/local/lib/lua/5.1/
$> sudo ldconfig
# Testing:
$> mkdir test
$> cat > test/test << EOF
> config 'test' 'abc'
> option 'test_var' 'value'
> EOF
$> uci -c `pwd`/test show test
Output:
test.abc=test
test.abc.test_var=value
$> uci -c `pwd`/test set test.abc.test_var=foobar
$> uci -c `pwd`/test commit test
$> uci -c `pwd`/test show test
Output:
test.abc=test
test.abc.test_var=foobar
Edited from here
# Some extra package are required:
$> sudo apt-get install cmake lua5.1
# The libubox library is required. It should to compiled from source.
# To do this, first you have to get the source from git:
$> git clone git://nbd.name/luci2/libubox.git libubox
$> cd libubox
# Please follow the next steps to build libubox:
$> mkdir build
$> cd build
$> cmake ..
$> make ubox
# Install libubox:
$> sudo mkdir -p /usr/local/include/libubox
$> sudo cp ../*.h /usr/local/include/libubox
$> sudo cp libubox.so /usr/local/lib
$> sudo ldconfig
# Get UCI source from git:
$> git clone git://nbd.name/uci.git uci
$> cd uci
# Please follow the next steps to build uci:
$> mkdir build
$> cd build
$> cmake ..
$> make all
# Install uci:
$> sudo mkdir -p /usr/local/include/uci
$> sudo cp ../uci.h ../uci_config.h /usr/local/include/uci
$> sudo cp ../uci_blob.h ../ucimap.h /usr/local/include/uci
$> sudo cp libuci.so /usr/local/lib
$> sudo cp uci /usr/local/bin
$> sudo cp lua/uci.so /usr/local/lib/lua/5.1/
$> sudo ldconfig
# Testing:
$> mkdir test
$> cat > test/test << EOF
> config 'test' 'abc'
> option 'test_var' 'value'
> EOF
$> uci -c `pwd`/test show test
Output:
test.abc=test
test.abc.test_var=value
$> uci -c `pwd`/test set test.abc.test_var=foobar
$> uci -c `pwd`/test commit test
$> uci -c `pwd`/test show test
Output:
test.abc=test
test.abc.test_var=foobar
# luci
Installation
# According to the official news,
# luci's repository has been merged with openwrt.
# Below are updated commands for downloading their sources.
$> git clone https://github.com/openwrt/luci.git
$> cd luci
$> git checkout luci-0.12
# Remove builtin folders if fail
$> rm -fr contrib/uhttpd
# compilataion
$> make runshell
# According to the official news,
# luci's repository has been merged with openwrt.
# Below are updated commands for downloading their sources.
$> git clone https://github.com/openwrt/luci.git
$> cd luci
$> git checkout luci-0.12
# Remove builtin folders if fail
$> rm -fr contrib/uhttpd
# compilataion
$> make runshell
Notes
1. This is not a permanent installation
Above installation is not a permanent one, you need to run above commands for every terminal session in order to use luci.
Actually, missing environment variables are the root cause for this phenomenon. For advanced Linux users, I strongly recommend you put those environment variables (named with LUA_*) into your ~/.bashrc after calling make runshell so that you do not need to run them again and again.
Write down following contents at the end of
~/.bashrc
# make sure you have update the home directory :)
export LUA_PATH="/home/mondwan/Documents/git/luci/host//usr/lib/lua/?.lua;/home/mondwan/Documents/git/luci/host//usr/lib/lua/?/init.lua;$LUA_PATH;"
export LUA_CPATH="/home/mondwan/Documents/git/luci/host//usr/lib/lua/?.so;$LUA_CPATH;"
export LUCI_SYSROOT='/home/mondwan/Documents/git/luci/host'
export LD_LIBRARY_PATH='/home/mondwan/Documents/git/luci/host/usr/lib:'
2. Missing iwinfo.h
If it tells you about missing iwinfo.h, please read this link. Try to revert those files will be good enough. Below are extracted commands from the link.
$> git checkout 89678917~1 contrib/package/luci/Makefile
$> git checkout 89678917~1 modules/admin-full/src/luci-bwc.c
Test installation
Before doing anything, here is the script for testing whether you have installed luci successfully or not.
$> lua
> UCI = require 'luci.model.uci'
> UCI.cursor()
if you can run them without errors you have accomplished the installation.
Further reading
References
* http://www.wakoond.hu/2013/06/using-uci-on-ubuntu.html
Update history
Update on 26/1/2015: Fix the incorrect directory structure CSS
Update on 16/2/2015: A new guide to compile luci
Update on 12/3/2015: Update text format and add notes about make runshell
Update on 21/5/2015: Add a reference forurther reading
Update on 2/6/2015: Update bashrc contents
Update on 3/8/2015: Update notes about installing uci
Update on 4/2/2016: Update documents for UCI installation
Update on 16/2/2015: A new guide to compile luci
Update on 12/3/2015: Update text format and add notes about make runshell
Update on 21/5/2015: Add a reference forurther reading
Update on 2/6/2015: Update bashrc contents
Update on 3/8/2015: Update notes about installing uci
Update on 4/2/2016: Update documents for UCI installation
Update on 26/8/2016: Update make commands for uci and luci installation