This is a short tutorial that shows how to install Odysseus and how to setup the first time. This tutorial is for persons who just want to use Odysseus for data stream management. For those, who want to develop with Odysseus (e.g. create new operators or extend functionalities), may have a look at Development with Odysseus, which introduces how to import Odysseus into Eclipse.
First, Java11 must be installed
Go to Odysseus Website to the Download section. Choose your operating system. Download the archive. (Remark: 32 bit versions are not longer available.)
Next, you have to unzip the archive. There is no installer nor a dedicated installation directory. Thus, you can choose a destination of your choice (In some cases, Odysseus does not behave correctly, if the installation path is to long. In this case try to install Odysseus to another location).
Remarks:
After unpacking, you may have something like the following:
Run "studio.exe" to start Odysseus.
Remark:
java -version
on a console to see if the right Java version is installed and reachable.In studio.ini:
-startup plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.300.v20150602-1417 -console -clean -nl en -data @noDefault -vmargs -Xms1000M -Xmx1000M -Dsysredirect=true -Declipse.p2.mirrors=false -Declipse.log.level=ERROR |
change Xms and Xmx to the needed values. Default is 1000M.
At the first start, you have to choose a workspace. This workspace is a directory where all Odysseus projects will be stored.You can also check the "Use this as the default.." option so that this dialog will not pop up at the next start of Odysseus.
Next, Odysseus asks you for a user and a password. The default user is "System" with password "manager". You can also check "Login automatically" so that username and password is saved and used automatically at the next start so you don't have to type in your login data again. In some cases there may be a field "Tenant". For most cases this field should be empty.
If you are using the client version of studio, the WebService tab must contain information about the Odysseus Server:
After that, Odysseus Studio starts, so you should the the interface:
That's all.
You now can use Odysseus. Now, you can, for example, make yourself familiar with Odysseus Studio or you may create or import projects. For further steps, you may have a look at these pages:
On MacOS, you may look at "B. Mac OS" in the next section.
Warning: Odysseus Studio currently does not run properly (or at all) on MacOS. Nevertheless, you can run the pure server product on MacOS.
To run Odysseus from the pre-compiled packages available to download you have to do the following steps.
java -XstartOnFirstThread -Xmx500M -Xms500M -Declipse.p2.mirrors=false -jar plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar --launcher.library org.eclipse.equinox.launcher_1.4.0.v20161219-1356 -console -nl en -debug -data @noDefault -showsplash de.uniol.inf.is.odysseus.rcp.base -Dorg.eclipse.swt.internal.carbon.smallFonts -clean |
C. Installation under Linux
Odysseus should be installed for a single user. The user that starts the server process must have all rights to the installtion directory, else no new features can be installed and no features can be updated.
To run Odysseus you need a Java runtime environment in version 8.
sudo aptitude install default-jre |
Download and unzip the Odysseus package to your local bin folder
mkdir –p ~/bin wget –c http://odysseus.informatik.uni-oldenburg.de/download/products/monolithic/lastBuild/de.uniol.inf.is.odysseus.studio.product.monolithic-linux.gtk.x86_64.zip -O ~/bin/odysseus.zip unzip odysseus.zip –d ~/bin |
Add the Odysseus folder to your PATH variable
export PATH=~/bin/odysseus:$PATH |
The Odysseus server component works on a Raspberry Pi. Simple install a recent raspian first.
You should use a distinct user for odysseus.
After that, you should update/upgrade the system and install JavaJRE:
sudo apt-get update sudo apt-get upgrade sudo apt-get install openjdk-7-jre |
Tip: With the console-command raspi-config
you can configure your RaspberryPi/BananiPi further (e.g. keyboard layout)
The following script will download and install Odysseus as a server-component
wget http://odysseus.offis.uni-oldenburg.de/download/products/server/lastBuild/odysseus.server.gtk.linux.x86.zip unzip odysseus.server.gtk.linux.x86.zip |
Alternatively, if multiple Odysseus-Instances should be connected (Peer-to-Peer-Network of RaspberryPi), you should download the Peer-Version of Odysseus:
wget http://odysseus.offis.uni-oldenburg.de/download/products/peer/lastBuild/odysseus.peer.gtk.linux.x86.zip unzip odysseus.peer.gtk.linux.x86.zip |
The following script will execute Odysseus (Server-Version) with respect to restarts due to possible future updates (downloadable: http://odysseus.informatik.uni-oldenburg.de/download/products/server/startOdysseusServer )
wget http://odysseus.informatik.uni-oldenburg.de/download/products/server/startOdysseusServer chmod +x startOdysseusServer |
#!/bin/bash cd odysseus.server.gtk.linux.x86 while true; do java -Xmx500M -Xms500M -Declipse.p2.mirrors=false -jar plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar -console -debug -data @noDefault if [ "$?" != "23" ]; then break fi done |
Attention: If you downloaded and installed the Peer-Version of Odysseus, you have to replace "server" with "peer" in the 3rd line (or download it from http://odysseus.informatik.uni-oldenburg.de/download/products/peer/startOdysseus).
Attention: The script-file must be made executable with chmod +x startOdysseus
wget http://odysseus.informatik.uni-oldenburg.de/download/products/peer/startOdysseus chmod +x startOdysseus |
For the standard Beagle board "unzip" and "java" must be installed:
apt-get update apt-get install unzip apt-get install openjdk-7-jre // If multiple java versions are installed: choose the jdk to use. Must be at least java 7 update-alternatives --config java |
Start same as above the raspberry.
Further devices tested:
For a "quick and dirty" way to start Odysseus automatically on startup, you have to edit the file /etc/inittab
according to these instructions: http://elinux.org/RPi_Debian_Auto_Login
At the following to the end of the file .bashrc
of the user (e.g., /home/pi/.bashrc
)
cd ./startOdysseusServer |
cd ./startOdysseus |
Remark: For BeagleBone, autologin has to be activated like here described
http://embedded.von-kannen.net/2014/06/28/how-to-enable-autologin-debian/
Alternative:
Create a file odysseus in folder /etc/init.d/, give execute rights and replace DAEMON_PATH with your installation directoy, replace DAEMON with startOdysseusServer (startOdysseus in Peer)
/etc/init.d/odysseus start
/etc/init.d/odysseus stop
#!/bin/bash # /etc/init.d/odysseus ### BEGIN INIT INFO # Provides: odysseus # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: $network # Should-Stop: $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Odysseus server # Description: Init script for the Odysseus ### END INIT INFO NAME=odysseus DESC="Odysseus data stream management system" USERNAME=odysseus PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME SCREENNAME=$NAME.screen DAEMON=startOdysseus DAEMON_PATH="/path/to/odysseus/" ME=`whoami` as_user() { if [ $ME == $USERNAME ] ; then bash -c "$1" else su $USERNAME -s /bin/bash -c "$1" fi } force_exit() { echo "" echo "SIGINIT CALLED - FORCE EXITING!" rm $PIDFILE ps aux | grep -e '$DAEMON_PATH/$DAEMON' | grep -v grep | awk '{print $2}' | xargs -i kill {} ps aux | grep -e '$SCREENNAME' | grep -v grep | awk '{print $2}' | xargs -i kill {} ps aux | grep -e '$SCRIPTNAME' | grep -v grep | awk '{print $2}' | xargs -i kill {} exit 1 } do_command() { as_user "screen -p 0 -S $SCREENNAME -X eval 'stuff \"$1\"\015'" } do_start() { printf "%-50s" "Starting $NAME..." as_user "screen -c /dev/null -dmS $SCREENNAME $DAEMON_PATH/$DAEMON" as_user "screen -list | grep "\.$SCREENNAME" | cut -f1 -d'.' | tr -d -c 0-9 > $PIDFILE" PID=`cat $PIDFILE` if [ -z $PID ]; then printf "%s\n" "Fail" else printf "%s\n" "Ok" fi } do_stop() { printf "%-50s" "Stopping $NAME" if [ -f $PIDFILE ]; then do_command exit sleep 0.5 as_user "rm $PIDFILE" printf "%s\n" "Ok" rm -f $PIDFILE else printf "%s\n" "pidfile not found" fi } do_status() { printf "%-50s" "Checking $NAME..." if [ -f $PIDFILE ]; then PID=`cat $PIDFILE` if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then printf "%s\n" "Process dead but pidfile exists" else echo "Running" fi else printf "%s\n" "Service not running" fi } trap force_exit SIGINT case "$1" in start) do_start ;; stop) do_stop ;; restart) do_stop do_start ;; status) do_status ;; command) if [ $# -gt 1 ]; then shift do_command "$*" else echo "Must specify command (try 'help'?)" fi ;; *) echo "Usage: $0 {start|stop|status|restart|command \"command\"}" exit 1 ;; esac exit 0 |