Home
News
Distribution
Developers
Security
Think Linux!
Join
Bookmarks
|
From jfm2@club-internet.fr Sun Mar 8 19:32:38 1998
Disclaimer
The following is not a tutorial for building RPMs, you will have to
look at the doc or at the Maximum RPM book, or look into some SRPMS
for examples. Of course nothing like looking at the source of RPM
itself :-). Just kidding.
Norms of quality for Independence software.
Due to the fact than we are targetting users without a high degree of
computer expertise we will have to issue packages not needing
tweakings.
-
Our packages must come with proper install and unistall scripts in
case the application needs something to be done for working.
-
If the app needs some environment variables we set them. In Redhat
5 a login shell will scan /etc/profile.d and will source all
_executable_ files ending in .sh if the shell is a Bourne shell clone
or in .csh if the shell is a C shell clone.
-
If the app is a daemon then provide for its automatic starting. In
Redhat that is done with a /etc/rc.d/init.d/foo script accepting as
valid args "start", "stop", and "restart". In run levels where thsi
daemon must run you set a symbolic link like this:
/etc/rc.d/rc5.d/S75foo towards the /etc/rc.d/init.d/foo script. The S
tells than the script has to be started at thsi run level. The 75
will have for effect than the script will start after lower numbered
scripts but before higher numbered scripts. If instead of having
S75foo you had K75foo then the daemon would be stopped instead of
staerted.
-
Preserving config files is an essential feature of a packaging
system so don't forget the %conf mark to tell RPM about them.
-
RPM allows queries by categories so try to avoid typos and
fantasist categories in the Group field.
-
Our users will not know how to hack resources. The app must look
nice and be of a sensible window size out of the box. It si to the
packager to do the job. Perhaps we should have one of us specilizing
in this and sending improved resources to the packager.
-
If the package contains shared libraries it must run ldconfig both
at install and unistall. If it places libraies ouside of the ldpath
don't forget than you have to add or delete the library into
/etc/ld.so.conf before that. Be careful this _dangerous_.
-
Redaht 5 allows for insertion and deletion of INFO files into the
info hierachy thanks to the install-info command.
-
If a cron task must be run daily you can provide it by inserting an
executable file in /etc/crond.daily (or weekly or monthly or hourly).
-
An app will appear in the X menus if you insert a file in
/etc/wmconfig.
-
/usr/local is for non-RPMized apps. The user should be able to
just do an rm -rf /usr/local/*. That means don't place anything under
/usr/local.
-
Don't forget about non-automatic dependencies (libraries are
automatically included) and when possible use the same names than
RedHat in case the package you depend of is in RedHat. The reason to
use the same names is for improving interoperability.
-
Make the package relocatable where possible. This is done by putting a
Prefix=/usr or Prefix=/usr/X11R6 tag in the SPEC.
You will need rpm 2.5 or better to do this, as RPM <= 2.4 doesn't
permit you to build relocatable packages.
-
Currently, the packages are being built with gcc 2.7.2.
|