Re: Gnome/Linux Application Installer



Hello, I've posted on this topic before on both KDE and Gnome, and
mostly just come upon widespread reluctance. I think some of it comes
because many people just don't do anything complex with app
installation, and some of it comes because UNIX has never done this
well, and in order to do it well, we need to move a short distance
away from the UNIX mindset.

On Wed, Dec 23, 1998 at 12:47:51PM -0500, Jason Tackaberry wrote:
> There needs to be some universal package format for at least Gnome
> applications, but preferably all Linux apps.  Has there been any
> talk among the RedHat and Debian (and others who have package
> formats) to agree on one common structure?

I agree with the concept of a universal system for handling
applications. The best way to enforce it is to only let apps run if
they are handed in via the one true package format. :) Otherwise,
people will ignore it. However, this isn't very practical, and thus,
like everything, we need to come up with a good compromise.

> Gnome apps will also need to be able to add items to the Gnome menu.
> We should give the user complete control over the install if he
> wants it.  That is, being able to specify what items will be
> installed to the menus, and where they will go.  (Nothing bugs me
> more when Windows apps create their own program groups and install
> reams of useless shortcuts there like READMEs and Help files.)  This
> also includes being able to install _any_ package _anywhere_.
> Uninstalls should be simple, and they should _work_.  Some installs
> are more complicated than others.  Some might just want a simple
> progress bar, while others will have more comprehensive "look what
> you can do with this program" screens during the install.  The
> install format should be flexible enough to allow this -- maybe even
> provide some kind of scripting language.

I agree with all these needs. I think one of the best ways to achieve
these goals is to change the responsibility of the 'install'
itself. Currently, a program install is responsible both for 'copying
an app's files onto the system' and 'plugging that app into the
system's configuration'. If we redefine install as 'copying an app's
files onto the system' and 'publishing what exports an app has which
_might_ be tied into the system configuration', I think we can make
this significantly cleaner.

In other words, basically stop letting programs install things all
over the system. Stop letting programs 'put things into the gnome
menu' or 'put things into /etc/rc.d'. Instead just have apps publish
what things are available for the gnome menu or /etc/rc.d.

For example, if it has an executable which should be available from a
menu somewhere, then it should say so. If it has a service which could
be started at boot or login time, then it should say so. It should
then be the job of Gnome, or the startup daemon, or whatever, to query
the available packages, and let the user choose what to put into his
startup menu. In many ways this is already much like the ideas which
got started in 'wmconfig'. However, instead of expecting the app
install to write to places which only root has access to, I'm
advocating putting all that information within the app's install
directory. That way, the app installation never mucks with any other
system files.

Here is an example of how we might ask for apps to be layed out. In
this form, they could be installed by any installer, and installed
anywhere in the system. As long as Gnome could find the start of the
app, it could allow the user to bring the app into his environment (or
not).

.../Netscape.app/__exports_file        # see below for contents
                /bin.li386/Netscape
                          /mail_alert
                /bin.sparc/Netscape
                          /mail_alert
                /icons/Netscape.ico
                      /Netscape-help.ico
                      /netscape-text-icon.ico
                      /netscape-html-icon.ico
                /default.conf
                /help/index.html     # html help

## __exports_file 
# NOTE: notice how there is no script code in here. Everything is
#       published in data (passive) form. This is an important way to make sure
#       apps don't become dependent on all kinds of little quirks in a given
#       distribution (i.e. redhat, debian, etc)
%%platform_decl(v1.0)
       i386-linux   ; bin  ; bin.li386
       sparc-solaris; bin  ; bin.sparc
%%menu(v1.0)        # items to add to the start menu
       Netscape     ; bin/Netscape   ; Netscape.ico
       Netscape Help; help/          ; Netscape-help.ico
%%startup(v1.0)     # things which might be started to run as daemons
       Mail Alert   ; at_login    ; bin/mail_alert
%%mimetype_operations(v1.0)   # alot like mailcap
#      operation  ;  mime/type  ; relative path and switches
       Open       ;  text/*     ; bin/Netscape --open %s     
       Open URL   ;  text/URL   ; bin/Netscape %s
       Edit       ;  text/html  ; bin/Netscape --edit %s
       Mail       ;  *          ; bin/Netscape --compose --attachfile %s
%%mimetype_icons(v1.0)
       text/plain ; icons/netscape-text-icon.ico
       text/html ; icons/netscape-html-icon.ico 

-- 
David Jeske (N9LCA) + http://www.chat.net/~jeske/ + jeske@chat.net



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]