Running Live MUF on Linux.
I have managed to get Live MUF running on Linux now at home on my Debian 6/7/8/9/10 and Mint machine (X86, 64 AND ARM (Odroid-XU4) CPUs) plus Ubuntu. Although it is not perfect (missing links to rigs in logger, one day I will build a cross platform fix!) it is good enough to use in my view (it is faster on Linux and I use it all the time, it drives the Live MUF website) but I am sure you will find bugs in it. I have tested this using MySql and sqLite databases. It is very fast data processing on MySQL, at least 120 spots per second! I recommend if you are geeky to run Linux then set up MySQL for running Live MUF as sqlite is not as fast under very heavy loads i.e. RBN skimmer mania.
Ok, a basic guide on Debian: Make sure you have mono installed on your linux distro (at least 6.0.0). Mono is not available in the standard Debian repositories. We’ll install the Mono packages from the official Mono’s repositories. It is a relatively straightforward process and will only take a few minutes. Start by installing the necessary packages: sudo apt update sudo apt install dirmngr gnupg apt-transport-https ca-certificates Enter the following command to import the repository’s GPG key: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
The output should look like below: gpg: key A6A19B38D3D831EF: public key "Xamarin Public Jenkins (auto-signing) <releng@xamarin.com>" imported gpg: Total number processed: 1 gpg: imported: 1
Add the Mono repository to your system sources' list: sudo sh -c 'echo "deb https://download.mono-project.com/repo/debian stable-buster main" > /etc/apt/sources.list.d/mono-official-stable.list'
Once the apt repository is enabled , update the packages list and install Mono:
sudo apt update sudo apt install mono-complete
mono-complete is a meta-package that installs everything you need for Mono development, including the runtime, development tools, and all libraries.
Verify the installation printing the Mono version:
mono --version
At the time of writing this article, the latest stable version of Mono is 6.8.0 Stable (6.8.0.107).
You will need libgdiplus (see further down as it is STILL out of date in the mono package grr)
mono cli 4.0 are the framework components used. Later Mono versions don't seem very backward compatible but Live MUF luckily will run in cli 4.0 the compatibility warning.
Make sure you have SQLite3 / mysql / 7z installed on your distro Live MUF uses 7za in the updater, make sure you have it, it is normally in the package p7zip-full: http://linux.die.net/man/1/7za
Download and extract live_mufV7.exe to where you want to run Live MUF in your home drive (make sure you have full rights where you run it from!)
download http://www.g7rau.co.uk/soft/downloads/lm7_linux_dll.exe and overwrite the files in your Live MUF folder (MySql.Data.dll System.Data.SQLite.dll etc)
from a terminal window browse to the live MUF folder and run Live MUF as ./Live_MUF.exe or mono Live_MUF.exe
And a basic guide on Fedora: 2. yum install mono cli 2.0 components (Mono-Complete seems to get all) 3. download livemuf 4. download special dll. 5. Unpack livemuf / dll using the archive manager as the exe is a 7z archive. 6. Put everything to a directory 7. mono Live_MUF.exe (with the ./Live_MUF.exe command wine wants to take over...)
3. Note for Older Odrois-XU4 builds (probably Raspberry PI as well) the Mono version is too old, best to go direct to mono site and follow instructions from there. The scripts are a bit of a fiddle, email if you need help.
Live MUF should work as normal from here apart from: When it 1st loads make sure you tick "Running in Linux" in the user details
Use the menu file/exit to close the app otherwise your opened windows are not retained.. In buffers / fonts change the font to courier 10 or similar. Set main windows buffer limit to 3000 to reduce flicker (in reality there will be 6000 in the buffer, ample enough) or find your own happy setting.
Updating will be a partially manual process, sorry.. you need to follow the screen messages in Live MUF Updater. Remember to keep the files MySql.Data.dll System.Data.SQLite.dll you downloaded as these are specific to Linux
SQLite is not good under high loads i.e. cpu usage is big! Use MySQL instead, it is worth the pain,
BUG ALERT!!!! Due to the way Linux seems to work ALWAYS USE THE File / Exit menu rather than the cross top right to exit the app or your tabs will be trashed. Again: ALWAYS USE THE File / Exit menu when quitting live MUF! Best to go to menu "Misc" on the top and hide title bar and select start maximised then you get a custom X cross box that does work in Linux ;)
Basic guide to set up MySQL on Linux for Live MUF: This is a simplified version, you may prefer to do it your way and make changes to the scripts / database name etc.
1: Set up Mysql in your distro (remember what you set the root password in MySQL to!!)
2: Download the MySQL files from my website: http://www.g7rau.co.uk/soft/downloads/mysql_call_locs.exe
3: Extract this into a folder i.e. /home/username/lm_mysql there will be 2 files: live_muf_structure.sql and mysql_call_locs.sql
4: Open a standard terminal and log in as root to mysql in the command prompt: mysql -u root -p (you will be prompted to type in your mysql root password)
5: once logged in type the path to the main script: \. /home/username/lm_mysql/live_muf_structure.sql and hit return this should create the database. now type use live_muf and hit return Note, if you have a database already called live_muf this will overwrite all the tables.. If you want more help either email me or read live_muf_structure.sql as there is more help in the script.
6: Now to update update the locs database with: \. /home/username/lm_mysql/mysql_call_locs.sql and hit return
7: to give rights to your live muf user run: grant all on live_muf.* to mymufuser@localhost identified by 'mypassword'; and hit return (change mymufuser and mypassword to whatever you like)
For different versions: #SQL8 CREATE USER 'mymufuser'@'%' IDENTIFIED BY 'mypassword'; GRANT ALL ON live_muf.* TO 'mymufuser'@'%';
#SQL5 CREATE USER 'mymufuser'@'%' IDENTIFIED BY 'mypassword'; GRANT ALL ON live_muf.* TO 'mymufuser'@'%';
8: Open Live MUF. Go into general options / database type Tick use mysql set servername to localhost port to 3306 data source to live_muf username to mymufuser and password to mypassword (or whatever you changed these to). You can also tick use logger and set the logger db name to live_muf Click update and you should be all ok!
9: Finally go to general options / MUF updates and run update spot filter, DXCC file and run a 99 week call/loc update.
If you create your own desktop shortcut on Linux you will find a suitable icon in the mapping subfolder. And of course you can create your own launchers, this one I use to restart the app if it fails (skimmer under high load still causes the odd issue!)
#Script started, make sure it is executable! #folder path to app cd /home/lm/lm_for_webserver/ #Starter number for the app mynum=1 #seconds to wait fater a failure slp=3 #loop to make sure Live MUF stays up while : do #mono-sgen Live_MUF.exe /auto mono Live_MUF.exe /auto #App failed! sleep 2 seconds and then write something to the Live MUF log! sleep 2 dt=$(date) mt=" !!!!!!!!!!!!!MUF app failed!!!!!!!!!!!! instance-" echo $dt $mt $mynum '\n'>>muf_errors/muf_errors.log #Increase the sleep time for crashes, if a bad loop then at least the gaps get bigger between retries mynum=$((mynum+1)) slp=$(($mynum+$slp)) sleep $slp if [ "$mynum" -gt 200 ]; then #At 200 failures stop, something BAD is wrong exit 0 fi done #Script finished
Let me know if you get Live MUF running on your Linux Distro (include OS when you email me) and let me know any bugs.
Fix in case libgdiplus is out of date on your system. Annoying that only the very latest mono references this!
Go to here and 1st build a new libgdiplus: https://docs.telerik.com/reporting/knowledge-base/how-to-build-and-install-libgdiplus-linux
______________________________________________________________ Solution Prerequisites: We are assuming that you already have older libgdiplus which installed its dependencies. More information and build and install instructions can be found here: https://github.com/mono/libgdiplus sudo apt install libgdiplus Easier method (WOULD NOT WORK ON DEB!): https://www.mono-project.com/download/stable/#download-lin sudo apt install gnupg ca-certificates sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list sudo apt update
sudo apt install libgdiplus
Harder method:
On Debian based distributions install prerequisites by running this command:
sudo apt-get install libgif-dev autoconf libtool automake build-essential gettext libglib2.0-dev libcairo2-dev libtiff-dev libexif-dev
Clone or download and unarchive libgdi repository:
git clone https://github.com/mono/libgdiplus.git cd libgdiplus
Run build script (Optionally you can use --with-pango parameter if you want to use this library:
./autogen.sh make
Then run unit tests to verify of all is correct:
make check
If everything is fine, install by running:
make install
or
sudo make install
If the first one fails because of missing rights.
______________________________________________________________
NOW THE FIX!!!!!: Next copy /usr/local/lib/libgdiplus.so.0.0.0
go to /usr/lib and rename libgdiplus.so.0.0.0 to libgdiplus.so.0.0.0OLD paste /usr/local/lib/libgdiplus.so.0.0.0 into /usr/lib
And there we go, Live MUF maps on steroids!!!
73 de Dave
|