Is there a way to isolate an application installation from the system?

413 views Asked by At

I'm working on the sources of an application an have the release version of the application installed on the system.
How can i test the modified (and possibly buggy) application without conflicting with the version installed ? What I want is basically virtual env but for generic applications.
I tried Docker but this has several issues :

  • I can't get the X11 redirection working. I tried commands like docker run -ti --net=host -e DISPLAY=:0.0 test-docker-geany or docker run -ti -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix test-docker-geany according to some forum threads.
  • The docker build involves copying the whole codebase to the image as well as installing all the tools and libraries needed to compile which some are not stored in cache and installed each time. So the script takes several minutes each time you want to compile and run.

So my questions are :
Is docker the best solution for such task ? I'm sure this is a problem a lot open source contributors faces but I couldn't find other cases on the net. If it is not the best solution what are the alternatives ?

Detailed error :
I ran the commands xhost + and the first one I gave in my first issue and I got :

The program 'geany' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
  (Details: serial 173 error_code 2 request_code 130 minor_code 3)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

The Dockerfile : https://pastebin.com/p03vaWbU

1

There are 1 answers

0
Nonoreve On

The warning was finally the cause : i just had to install gtk2-engines-pixbuf according to this thread

EDIT : I misunderstood the success. I get it to work that time because I ran an other GUI program in the docker before. In fact, I finally discovered that trying geany a second time just works although the first try give the error.