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

Re: How to handle multiple versions of binaries




Disclaimer: IATTIMS

On Mon, 13 Dec 1999, Julian Gilbey wrote:

> On Sun, Dec 12, 1999 at 05:13:27PM -0800, ferret@phonewave.net wrote:
> > > Also, if the minimal game dataset does need to be customized before use,
> > > /usr/share/doc/<pckage>/examples sounds right to me -- throwing them in
> > > /usr/lib/<package> and requiring customization Just Seems Wrong -- they
> > > really *are* examples.
> > Thing is, the dataset will be copied in under
> > /usr/local/games/<package>/<foo>/
> > and a local configuration file generated there. That's why putting it
> > under documentation looked wrong to me.
> 
> [See also below]
> 
> Your package should make no assumptions about the existence of
> /usr/local; it's entirely at the discretion of the sysadmin what to
> put there.  *If* there is an appropriate file there, it should be used
> in preference/addition to the one in /usr, but your package must
> function perfectly without it.

Hmmmm. Package makes the assumption that it can load the server for any
datasets stored under /usr/local/games/<package>/<foo>/
According to how I read the packaging manual this is /encouraged/, AFA the
package can function without anything actually being under /usr/local.
I also intend to supply a script, to be run by the sysadmin, to assist in
setting up a dataset in the abovementioned directories.

AFAICT both functions are reasonable. Both /supporting/ the use of a
directory under /usr/local if the local admin so wishes, and the supplying
of a script to assist the admin in correctly configuring anything sie
wishes to have under /usr/local.

> Configuration files *must* go in /etc and be marked as conffiles or
> otherwise handled carefully (see policy (version >= 3.1.0.0) section 4.7).

Okay. You're not saying that any configuration-like files the server uses
internally must go under /etc, do you? :>

> Your program cannot assume that /usr/(share/)doc exists.  If it needs
> to read these configuration files, they should go in /usr/share/<pkg>
> or /usr/lib/<pkg> or /etc (or /etc/<pkg>) depending on whether they
> are locally configurable and if not, then whether they are
> architecture independent.  Have a look at the FHS
> (/usr/share/doc/debian-policy/fhs/fhs*) for details of this.



> > > > The script to start the server by hand will go in /usr/bin/, and can also
> > > > be started automatically at runlevel. I would like to place the ELF
> > > > binaries under /usr/lib/<package>
> 
> Yes, that's correct.
> 
> > > > I've read through the packaging manual, and might be a little confused,
> > > > but it didn't seem quite clear on just where to put these.
> > > > If /usr/lib/<package> isn't the right place, where is? They need to be
> > > > somewhere not on PATH and under a subdir.
> 
> You need to also look at policy, in the debian-policy package, and at
> the Filesystem Hierarchy Standard, found in the debian-policy package.
> Easy, isn't it?!

Will have another look. I admit some bits are confusing even after the
second read-through.

> > > > Also, I will be packaging up a minimal game dataset for the server, and I
> > > > want to have a script the admin can use to copy it somewhere under
> > > > /usr/local/games and customise it. Where should I install the sample
> > > > dataset? The manual seems to indicate /usr/share/doc/<package>/examples,
> > > > but that doesn't seem right to me in this case. My gut feeling is
> > > > /usr/lib/<package>/<base dataset> because it isn't meant to be
> > > > used before customisation.
> 
> If the dataset is architecture independent, as it probably is if it is
> modifiable, then you should be using /usr/share/<pkg> and
> /usr/local/share/<pkg> rather than the lib directories.
> 
> What happens if the sysadmin installs the package and isn't interested
> in customising it for the users?  Is there a default dataset?  Is
> there a search path to look through?

I'm intending to make the server a seperate package from the dataset(s),
and to have a <package>-common package on the current assumption I'll have
two seperate servers for a while.

The init scripts will have an option to load any datasets found under
certain users' home directories as well.

So what it looks like at this point:

Main configuration file in /etc/<package>.conf

ELF binaries installed in /usr/lib/<package>/

Wrapper script installed in /usr/bin/

"default" dataset(s) installed in /usr/share/<package>/

Init script checks in /usr/local/games/<package>/<foo>/ and optionally
~/<user>/.<package>/<foo>/ for valid datasets to load.


As far as I can tell at this point it looks about right. I'm not missing
anything very major, am I?

-- Ferret no baka



Reply to: