Creating an application for Linux

lkcl luke.leighton at googlemail.com
Wed Dec 31 16:36:55 EST 2008


hiya mike: where do i know you from?  i've heard your name somewhere
and for the life of me can't remember where!  anyway... onwards.

your simplest bet is to take advantage of the .deb install system,
which, if you follow that, will allow you to pull in all of the
dependencies _without_ screwing around with the ubuntu distribution,
or requiring that you build "special" versions of the dependencies.

so - your first port of call is to locate a similar app to your own
one:

apt-cache  search wxwidgets
[rose-tinted filter on the results...]
cryptonit - A client side PKI (X.509) cryptographic tool
fontypython - A GUI tool to manage ttf fonts
jmdlx - jugglemaster deluxe using wxWidgets
wxmaxima - a wxWidgets GUI for the computer algebra system maxima
multiget - graphical download manager

then, do apt-cache show <packagename>, paying particular attention to
the dependencies.  apt-cache show fontypython looks like a good
candidate.

so, do apt-get source fontypython (or other candidate)

also do apt-get build-essential dh-make dpkg-dev debutils python-dev
devscripts python-setuptools juuust for fun, but the essential ones
are probably dh-make and dpkg-dev.

then you have something to work from (an example - the source of the
deb-wrapped fontypython) and you will have most of the debian
developer utils etc. etc.

_then_ you go to e.g. oooo this:
http://www.pythonmark.com/python-library/debian/howto-build-a-debian-package-from-python-sources/
the preamble for which says "don't bother with that annoying ubuntu
python deb howto video, particularly on the basis that who gives a
stuff about _verbal_ instructions when you actually want stuff you can
READ!"

:)

the most important thing that _you_ need to remember is that you
_must_ identify the correct libraries (and their debian packagenames -
can't bring myself to say ubuntu packagenames) and make damn sure that
you add them into the dependencies in the debian/control file.

do _not_ be tempted to "bundle" customised versions of python-
pysqlite, python-sqlalchemy etc. etc.

testing: you should really use a debootstrap absolute "basic"
environment (set up a chroot, or a virtual KVM or other virtual PC,
qemu, whatever, or even a real machine) do NOT do a "full" install of
ubuntu, do an absolute minimalist install (netbook, businesscard,
whatever).

... and _then_ install your .deb (with dpkg -i) followed by apt-get -f
install (to pull in all of the dependencies).

then, use export DISPLAY=192.168.1.5:0.0 (adapt as necessary), run
xhost + on 192.168.1.5 (adapt as necessary), and _then_ fire up your
test app.

if you get a python library not found runtime error, you know that you
got your dependencies wrong, in the debian/control file.

if you install a "vanilla" ubuntu desktop, various other packages will
pull in the dependencies for you - and you will never find out if you
got all of the dependencies correct.

that having been said, if you don't _care_ about correctness, skip the
above six sentences :)

l.



On Dec 31, 9:06 pm, Mike Driscoll <kyoso... at gmail.com> wrote:
> Hi,
>
> My boss wants me to port one of my applications to Ubuntu. I
> successfully ported it without too many headaches but now I need a way
> to distribute it to people that may or may not already have the
> dependencies my application requires. I'm a newb with Linux so I'm not
> even sure what they call the distribution (rpms, deb, source code).
>
> After browsing the various "installer" docs out there, it looks like
> bbfreeze or PyInstaller might work, but I couldn't find any examples.
> Any advice is appreciated. Thanks!
>
> I am using Python 2.5.2 and this is a wxPython application with
> SqlAlchemy and a few other external packages.
>
> Mike




More information about the Python-list mailing list