Issues with Installer written in Python for Linux

dwelch91 at gmail.com dwelch91 at gmail.com
Tue Aug 29 13:38:03 EDT 2006


c.l.p-

I am undertaking writing an installer for a software package using
Python. It is exclusively for Linux. Because this is an installer and
has to run on numerous Linux distros, it is presenting some unique
challenges.

First off, I have begun this project by writing a text mode only
interface. I would like to provide a GUI as an alternative, but I ran
into problems in my early tests. Thinking that Tkinter would be the
most universal GUI framework on Linux in Python, I wrote some test
screens. Well, after trying the code on several distros (Mandriva,
Ubuntu, Fedora, SUSE, etc), I discovered that Tkinter is not as
universal as I had thought. On about 50% of the distros, it is not
installed with the system copy of Python. So much for the "standard"
library! :-)  So, this leaves me with the problem that I don't know
what else might work. I am assuming that PyQt and PyGTK are both not
preinstalled on all Linux distros. I could ship and install a package
of my own if it were very small and an "easy" installation. I can't use
package managers because I need to work on systems that use apt, rpm,
portage, etc. Does anyone have any suggestions?

My next issue is a usability issue, that really isn't strictly a Python
issue, but since the members of c.l.p are some of the most intelligent
and knowledgable people around, I thought I'd give it a try. My
installer is part of a tarball that is subsequently wrapped up into a
self extracting archive (SFX) using 'makeself'. This all works great.
The user can download the SFX (which is in the form of a .run file) in
a _terminal_ and the package will self extract and then run my
installer. The problem is that I would like the user to be able to
download the file to their desktop or whereever, and then simply
doubleclick on it to make the installer execute. When I do this now,
the installer refuses to run, I guess because it has no terminal to
output to.

So, the question is, from a Python program, can I detect that I am not
running in a  terminal/console and somehow get one going? (I tried
playing with things like 'xterm' to force the install into a console,
but, of course, xterm is missing on some distros too). 

Thanks,

Don




More information about the Python-list mailing list