[Fedora-packaging] Script-Tools, which location?

Michael Schwendt mschwendt at gmail.com
Thu Jul 12 11:00:15 UTC 2012


On Thu, 12 Jul 2012 00:53:03 +0200, Simon A. Erat wrote:

> Heyas
> 
> As i'm new to packaging, specificly to linux, i am a little confused at
> this moment.
>
> I have my scripts (kind of framework, but for any enduser they are just
> tools) which i'd like to be shiped with Fedora, however, until now i was
> thinking like:
> My Package = Additional Software = /usr/share/%name.

It cannot be generalized like that. When deciding where to store files,
one must tell what type of files they are. Skimming over the FHS can help
to find the proper location, as the packaging for Fedora can get a lot
more trouble-some, if a software project installs into uncommon locations
or violates the FHS even. /usr/share/ is for architecture-independent
read-only data files.

> Now that i had opened a Review Request (
> https://bugzilla.redhat.com/show_bug.cgi?id=835089), someone asked my whe i
> didnt pack my scripts into /usr/bin.

/usr/bin sounds reasonable.

At least, it should be easily possible for your project to store small
scripts in /usr/bin, which know about their home directory, from where to
load supporting files (including additional hidden scripts not to make
available in $PATH).

> Allthought i like this idea, i do not feel that this would be 'clean', as
> my script tools base upon a directory structure, while there are no
> directories in /usr/bin.

That sounds a bit like a design mistake. Can you tell why you think you
would need a directory structure below /usr/bin and not elsewhere?
 
> From the same person i was told that /etc/profile.d/%name.sh would not be a
> good solution as it wont work with csh, zsh, with which i agree, but
> couldnt think of a better solution until now.

That's inaccurate. Adjusting $PATH via profile.d scripts is a good
solution for *some* projects, e.g "ccache", but it ought to be an exception
(and there's a reason why "ccache" does it like that). It doesn't sound
correct/ideal/elegant for your scripts.
 
> Now the idea came up to place the 'base-script' (st) in /usr/bin, while
> everything else would be in a folder somewhere. However, this has a hughe
> drawback, as it (the script tools) wont work in this mixed up (split away)
> environment.

As above, a design mistake?

> Until now, one could have been sure, that in any case if i move the
> directory the scripts tools are in, anywhere else, one could just execute
> the main script and everything kept working.

The scripts would stay in /usr/bin, be available for execution by every
user, and if you moved anything at all with an update of the software in
an update of the RPM package, you would replace the script files. Why would
the new files not work anymore (or not know about changed directories)?

> This was achieved by symlinking the actualy path to /usr/share/%name, of
> course only if it wasnt installed there using rpm/yum (default).

Perhaps you could explain in more detail what problem you're trying to
solve?
 
> Further, it takes some use of 'configuration' files, uses some sort of
> templates and lots of other stuff.

That's not unusual.

-- 
Fedora release 17 (Beefy Miracle) - Linux 3.4.4-5.fc17.x86_64
loadavg: 0.19 0.36 0.49


More information about the packaging mailing list