Compiling to GLFW on Ubuntu 13.04 - Solved

Monkey Targets Forums/Desktop/Compiling to GLFW on Ubuntu 13.04 - Solved

Sensei(Posted 2013) [#1]
Hi guys.
I've dual-boot installed the above OS on my 2007 Macbook (great improvement if you ask me). I copied over monkeypro 73b and did the chmod 770 change to the monkey folder and the Ted IDE loads and works great. Loaded up some example .monkey files and they run fine when compiled to HTML5, which is great.

But I want to be able to compile against GLFW so as to create a proper linux game. Problem is I'm getting this error with any files I try to compile:
"/home/sensei/MonkeyPro73b/bin/transcc_linux" -target=Glfw_Game -config=Debug -run "/home/sensei/MonkeyPro73b/bananas/hitoro/matrixrocks/matrixrocks.monkey"
TRANS monkey compiler V1.51
Parsing...
Semanting...
Translating...
Building...
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/enable.o ../glfw/lib/enable.c
In file included from ../glfw/lib/internal.h:92:0,
                 from ../glfw/lib/enable.c:31:
../glfw/lib/x11/platform.h:44:22: fatal error: X11/Xlib.h: No such file or directory
compilation terminated.
make: *** [../glfw/lib/enable.o] Error 1
TRANS FAILED: Error executing 'make CCOPTS="" OUT="Debug/MonkeyGame"', return code=512
Done.



So... Any ideas what the problem could be and how to fix it? I'm not a total linux noob but I'm a noob with Monkey in general :)

Thanks in advance!
Jaco


Sensei(Posted 2013) [#2]
Ok I found this URL when searching for X11/Xlib.h not found:
http://stackoverflow.com/questions/5299989/x11-xlib-h-not-found-in-ubuntu

I followed the 2nd answer and installed those files as they were matching up with my compiler error results.
I then got this when compiling:
"/home/sensei/MonkeyPro73b/bin/transcc_linux" -target=Glfw_Game -config=Debug -run "/home/sensei/MonkeyPro73b/bananas/hitoro/matrixrocks/matrixrocks.monkey"
TRANS monkey compiler V1.51
Parsing...
Semanting...
Translating...
Building...
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/enable.o ../glfw/lib/enable.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/fullscreen.o ../glfw/lib/fullscreen.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/glext.o ../glfw/lib/glext.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/image.o ../glfw/lib/image.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/init.o ../glfw/lib/init.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/input.o ../glfw/lib/input.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/joystick.o ../glfw/lib/joystick.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/stream.o ../glfw/lib/stream.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/tga.o ../glfw/lib/tga.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/thread.o ../glfw/lib/thread.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/time.o ../glfw/lib/time.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/window.o ../glfw/lib/window.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/x11/x11_enable.o ../glfw/lib/x11/x11_enable.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/x11/x11_fullscreen.o ../glfw/lib/x11/x11_fullscreen.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/x11/x11_glext.o ../glfw/lib/x11/x11_glext.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/x11/x11_init.o ../glfw/lib/x11/x11_init.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/x11/x11_joystick.o ../glfw/lib/x11/x11_joystick.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/x11/x11_thread.o ../glfw/lib/x11/x11_thread.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/x11/x11_time.o ../glfw/lib/x11/x11_time.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/x11/x11_window.o ../glfw/lib/x11/x11_window.c
../glfw/lib/x11/x11_window.c: In function ‘translateKey’:
../glfw/lib/x11/x11_window.c:238:5: warning: ‘XKeycodeToKeysym’ is deprecated (declared at /usr/include/X11/Xlib.h:1695) [-Wdeprecated-declarations]
../glfw/lib/x11/x11_window.c:260:5: warning: ‘XKeycodeToKeysym’ is deprecated (declared at /usr/include/X11/Xlib.h:1695) [-Wdeprecated-declarations]
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../glfw/lib/x11/x11_keysym2unicode.o ../glfw/lib/x11/x11_keysym2unicode.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../stb/stb_image.o ../stb/stb_image.c
gcc   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../stb/stb_vorbis.o ../stb/stb_vorbis.c
g++   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../main.o ../main.cpp
make: g++: Command not found
TRANS FAILED: Error executing 'make CCOPTS="" OUT="Debug/MonkeyGame"', return code=512
make: *** [../main.o] Error 127
Done.

I then googled the term "make: g++: Command not found" and installed that using:
sudo apt-get install build-essential g++

This then led me to a new error:
Building...
g++   -I../glfw/include -I../glfw/lib -I../glfw/lib/x11 -I../openal/include -I../stb -D_GLFW_HAS_GLXGETPROCADDRESS -D_GLFW_USE_LINUX_JOYSTICKS -pthread  -c -o ../main.o ../main.cpp
g++  -o Debug/MonkeyGame ../glfw/lib/enable.o 
../glfw/lib/fullscreen.o ../glfw/lib/glext.o 
../glfw/lib/image.o ../glfw/lib/init.o ../glfw/lib/input.o ../glfw/lib/joystick.o 
../glfw/lib/stream.o ../glfw/lib/tga.o ../glfw/lib/thread.o ../glfw/lib/time.o ../glfw/lib/window.o 
../glfw/lib/x11/x11_enable.o ../glfw/lib/x11/x11_fullscreen.o ../glfw/lib/x11/x11_glext.o 
../glfw/lib/x11/x11_init.o ../glfw/lib/x11/x11_joystick.o ../glfw/lib/x11/x11_thread.o ../glfw/lib/x11/x11_time.o ../glfw/lib/x11/x11_window.o 
../glfw/lib/x11/x11_keysym2unicode.o ../stb/stb_image.o ../stb/stb_vorbis.o 
../main.o -lGL -lopenal -lX11 -lpthread
/usr/bin/ld: cannot find -lopenal
TRANS FAILED: Error executing 'make CCOPTS="" OUT="Debug/MonkeyGame"', return code=512
Done.

I then searched for that and found that I need to install:
sudo apt-get install libcr-dev but this hadn't helped.
People seem to mention "in g++ use the -L option", but I'm not sure how to do that in this instance with Monkey.


Sensei(Posted 2013) [#3]
So.... nobody using GLFW on Linux then?


dawlane(Posted 2013) [#4]
Yes I do.
First things first is..
Are you using a 32 bit OS or 64bit? As there is a slight difference if you are using a 64 bit OS. This is mostly to do with if you wish to compile for 32 bit OS's and getting the editor to work.

And as your missing the OpenAL you need to install libopenal-dev or libopenal1

Quick install method 32bit
sudo apt-get install g++ libglu1-dev libopenal-dev

The 64 bit method is more involved as you have to make links.


Sensei(Posted 2013) [#5]
Oh, many thanks for your answer dawlane!
I'm running 32bit Ubuntu as I suspected 64bit might be more of a ballache to use and also thinking that compiling to 32bit would be better for both.
I'll try that apt-get install library this evening and hopefully all goes well!
Just as a side-question.. Would monkey apps made for Ubuntu in general just run "out of the box" or would the user also need to install openAL et-all?


dawlane(Posted 2013) [#6]
64 bit is only a pain when trying to cross compile things with cmake or stuff that was written for 32 bit only as some distributions with gcc have trouble with in line assembly instructions such a MMX (came across this with Blitz Max on PCLinux and a few others). The only reason any one should be using a 64 bit OS is if they have more than 4GB of memory and are using it.

With the right tool chain and libraries installed, Monkey will happily compile to the native cpu architecture. The only issue I have seen so far is with the displaying of floating point numbers, but there could be other hidden gems lurking it the code that Monkey produces.

I have mine set up as a full 64 bit development machine with the necessary 32 bit libraries installed and linked. The only problem with Monkey is if I want to compile to a 32 bit binary, I have to modify the make file and remove the previous compiled object files.

The end user would still need libopenal1 and may be libglu1-mesa installed and if your end user is using a 64bit OS then they will have to know how to install those 32 bit libraries.


Sensei(Posted 2013) [#7]
Not a train smash, as I guess most linux users will be fairly ok with doing that. Besides you can always include install instructions with the game :)

Thanks for your great help! I can't wait to get home and try this out.


impixi(Posted 2013) [#8]
Not having much luck here on 64bit Linux Mint 15 (MATE desktop). Had to change permissions and install extra libs, etc, but TED isn't working properly (grayed-out build/compile buttons, no highlighting etc). Haven't looked much more into it, as I've settled on Geany/Clang C development tool-chain for my Linux programming activities, but it would be nice to get Monkey up and running for prototyping purposes...


dawlane(Posted 2013) [#9]
Had to change permissions and install extra libs
Changing the file permissions isn't just a 64 bit Linux thing and depends on many occasions on the distribution. When dealing with pre-compiled 32 bit binaries like Monkey/Ted, then installing extra libraries is mandatory.
In case anyone didn't know that the Monkey executable is written in Blitz Max (a 32 bit binary) to get the root path of the Monkey directory and execute Ted (an other 32 bit binary).

but TED isn't working properly (grayed-out build/compile buttons, no highlighting etc)
This is down to the fact that Qtstyle cannot determine what version of gtk is installed and uses the failsafe. Thats because it needs the 32 bit libraries of libgtk2.0-0, gtk2-engines-murrine, gtk2-engines-pixbuf and if I remember for ubuntu you need to add libcanberra-module as well. If you chose to install the ia32-multiarch package these get installed, but there is a problem with ubuntu as there is one library you need that is not easy to install as you have to force it and it's dependencies to install.
The other solution is to install Qt Creator and a few addition development libraries and rebuild Ted as a 64bit binary.

In a month or so, I should have a tutorial written on installing Monkey on Linux for a number of distributions and on how to rebuild Ted. I won't be able to do it as a post as explaining how to do it would make it difficult to maintain, plus the is a size limit on how big a post can be.


impixi(Posted 2013) [#10]
Wow, looks like more of a pain than I thought it would be. Even worse than the Oculus Rift SDK I recently installed on the same system. LOL.

Thanks for the information. That should save me some time at least. I might have a crack at rebuilding Ted as a 64bit binary too...

Re post sizes: you could break the tutorial across multiple posts?


dawlane(Posted 2013) [#11]
Wow, looks like more of a pain than I thought it would be.
Took me 10 minutes to get it to work on mint and longer with Ubuntu trying to get that irritating library and it's dependencies installed.

Re post sizes: you could break the tutorial across multiple posts?
Problem is maintenance. If something changes in a distribution it would take me more time to find the relevant post than to just post an update, which would completely confuse every body (especially me) trying to find the correct one for the distribution.

The idea is to create a web site that will hopefully include other bits and pieces for other programming tools that I have been messing around with over the years. Monkey and Blitz Max are first on the agenda in that order.
And it gives me an excuse to mess around with sub domains. Think I'm allowed 300 with the package I've got.

I might have a crack at rebuilding Ted as a 64bit binary too...
As Mark hasn't given any information on set of libraries needed and I forgot to write them down when I built ted. You will have to do a bit of dependency walking. I remember you need to install the libQt5WebKit5-dev and some stuff from gstream to get it to build. I actually in the process of doing this and this time I'm taking notes.


Sensei(Posted 2013) [#12]
Many thanks for your help dawlane. Those last apt-get installs did the trick! Compiles perfectly into a GLFW app :)

Only confusing bit left now is, once compiled, where is the "exe" and/or what files do I need to provide to the end-user/beta-testers?
Since it's being built and ran on Ubuntu directly, one would assume it's build some executable file?
Otherwise, what do I further need to do to compile a self-contained executable for distribution?
Obviously, on the OS X and Windows you use Xcode and VC2010/2012 to then build the final app, but for Linux, I'm lost?! :)


dawlane(Posted 2013) [#13]
where is the "exe"
Look in the project.build/glfw/gcc_linux/Release or project.build/glfw/gcc_linux/Debug all files get copied to one of those.

Otherwise, what do I further need to do to compile a self-contained executable for distribution?
Linux doesn't use self-contained executable installers. All binary and source files that you install on a Linux system are distributed as a package and is installed by a package manager which depending on the distribution varies. The most common package managers are apt, yum and pacman and these in turn use (depending on the distribution) use a back-end like dpkg (files end in .deb) or rpm (file end in .rpm). There is a program called alien that can convert between packages.

The package contains information about the package for the package manager (dependencies etc) and the compressed ready made directory structure of the files in the package. It can be quite a complicated task to build these packages.

If you wish to try and build a package then you should read up about it, but in general it's much easier just to distribute a compressed file with information relating to the dependencies that are needed (just like what BRL did with Blitz Max) or you can write an install script to do the job.

Edit: Quick and dirty rebuild Ted ubuntu/mint
Back up/rename your Ted executable in the bin directory

Install the QtCreator and libraries.

Use QtCreator to open the file ted.pro in src/ted.
Comment the below line (at line 52) using // as Qt5 no longer has a setCodecForCStrings.
QTextCodec::setCodecForCStrings( QTextCodec::codecForName( "UTF-8" ) );
Check that UTF-8 is selected (found in the main widow menu Edit->Select Encoding)
Near bottom left click the computer icon and change the build from debug to release.

Now build the project. Afterwards you should see that there is a new Ted executable in the bin directory.


Sensei(Posted 2013) [#14]
Thank you once again dawlane! I tarred up the test.build/glfw/gcc_linux/Debug/ folder, gave it to a mate to test on his Ubuntu install and it worked perfectly!

I'll look into how to create a .deb install.
Let us all know as soon as you have that write-up completed for linux, as it'll be a godsend for people like me :)


impixi(Posted 2013) [#15]
Thanks dawlane. TED compiles as per your instructions, and executes. I'm just targeting the "c++ tool" at the moment, so no issues noticed when compiling simple Monkey code.


dawlane(Posted 2013) [#16]
TED compiles as per your instructions, and executes.
You will have to let me know if there are any issues with using Qt5 like the saving and loading of files.
I'm just targeting the "c++ tool" at the moment
Be aware that on a 64 bit OS you will only get a 64bit binary using stdcpp unless you modify transcc to pass the -m32 option flag. I did hear that was a compiler directive in the experimental version that could pass something to the compiler for stdcpp.


Sensei(Posted 2013) [#17]
Sorry to be a pain again, but I finally managed to get my macbook upgraded to 10.7.5. In the process, however, I had to wipe my previous Ubuntu install.

Anyway, I reinstalled it and did the usual bits:

sudo apt-get install libx11-dev
sudo apt-get install mesa-common-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libxrandr-dev
sudo apt-get install libxi-dev
sudo apt-get install libopenal-dev

I then copied my Monkey 73b folder over, set sudo chmod 770 to the folder, and also set executable permission on "monkey". Before I set permissions to executable, I just get this:

I then (as can be seen in the screenshot), downloaded, extracted and chmod 770'd the new Monkey75d folder, and the same thing.
Once I've set permissions as executable, it sits and does nothing at all.

Any ideas master dawlane? :)

Update: Ok it loads Monkey now after setting it to executable. No idea why the delay?
Problem now is I have no targets. The drop-down is completely empty!

Update 2: Argh. I have no idea, but after not touching the laptop for about 5-10mins and coming back to it. I reloaded Monkey for shizzles and guess what, C++, GLFW and HTML 5 are now available?!? WTF.
HTML5 compiles and runs fine.
GLFW complain about..
/usr/bin/ld: cannot find -lopenal
collect2: error: ld returned 1 exit status
make: *** [Debug/MonkeyGame] Error 1


dawlane(Posted 2013) [#18]
Did you update the system before you tried to install all the development files? You should alway update the system before trying any thing.

And this is how you set the execute permissions.
chmod +x ~/MonkeyPro73b/Monkey
chmod +x ~/MonkeyPro73b/bin/makedocs_linux
chmod +x ~/MonkeyPro73b/bin/mserver_linux
chmod +x ~/MonkeyPro73b/bin/Ted
chmod +x ~/MonkeyPro73b/bin/transcc_linux

If you get permission denied use
chown -R user-name ~/MonkeyPro73b


Sensei(Posted 2013) [#19]
Thanks dawlane.
Not quite sure wth is happening, but I thought I'd try do sudo apt-get install libopenal-dev again, and it seemed to indicate it didn't install before?! Weirdness. In addition, when I did the apt-cache search openal, it didn't find any. I then repeated the command 4 or 5 times, then there was a large cache of results. I guess it was pulling the updates and synching it over.
I recompiled to GLFW and now it's working.

Sorry for this weirdness.

At long last I can compile to glfw on linux and mac and everything else on my windows 7 pc \o/


mr_twister(Posted 2013) [#20]
It IS possible to statically compile a project so it WON'T require the user to install any additional library in their machines (although you have to go for the lowest common denominator and create a 32-bit build). I did it for the last ludumdare jam and although it's a real PITA it's totally possible.

I'll write a step-by-step guide soon but it mostly involves compiling GL as a static lib, then doing the same with OpenAl-Soft (which in turns requires installing the dev packages of quite a few audio subsystems) and finally tweaking the make file.


dawlane(Posted 2013) [#21]
It IS possible to statically compile a project so it WON'T require the user to install any additional library in their machines.
Before doing this you must check that the libraries license will allow you to do this.

If I read the GPL license correctly. Then any code that links dynamically or statically has to be released under the GPL license. This is not good if your code is to be propriety as you have to make your source code accessible to anyone who asks for it.

And if I read the LGPL license correctly. Statically linking would mean that your program would have to be release under the LGPL or an object file (not necessarily the source code) has to be made accessible to anyone who wants to build against another version of the that LGPL source code. Using a LGPL dynamic library means you don't have to make your source code accessible to anyone, but if you supply the LGPL library then you have to pass the library source code with it (or tell them where to get?).


mr_twister(Posted 2013) [#22]
Yes, good advice dawlane.

I was mainly addressing the whole dependencies issue and asserting that it's completely possible to create a standalone/self-contained binary (a question made by Sensei) I guess I totally forgot that there are particular rules that apply to the LGPL libs when it comes to static linkining.

As far as I know is exactly the way you say (in your second paragraph); you definitely need to provide at least an object file that can be linked against other versions of the libraries if you choose to go with static linking.


Sensei(Posted 2013) [#23]
Thanks for the info. I'll definately need to look into this once my game is near completion as Linux is on the cards of supported platforms I'd like to release on.


dawlane(Posted 2013) [#24]
I've written a rough How to guide for installing Monkey on Ubuntu/Linux Mint/Debian/Linux Mint DE.


Sensei(Posted 2013) [#25]
Very useful info @dawlane, thanks! I'll be bookmarking this for future reference. I wonder if it can be stickied somehow?


impixi(Posted 2013) [#26]
@dawlane: Thanks for that. On my next "clean" Linux Mint install I'll follow your instructions and see how I go...