Home
News

Distribution


Developers Security
Think Linux!
Join
Bookmarks
Project Independence


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.

  1. Our packages must come with proper install and unistall scripts in case the application needs something to be done for working.
  2. 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.
  3. 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.
  4. Preserving config files is an essential feature of a packaging system so don't forget the %conf mark to tell RPM about them.
  5. RPM allows queries by categories so try to avoid typos and fantasist categories in the Group field.
  6. 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.
  7. 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_.
  8. Redaht 5 allows for insertion and deletion of INFO files into the info hierachy thanks to the install-info command.
  9. 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).
  10. An app will appear in the X menus if you insert a file in /etc/wmconfig.
  11. /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.
  12. 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.
  13. 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.
  14. Currently, the packages are being built with gcc 2.7.2.


Project coordinator
jfm2@club-internet.fr
Web Weaver
elflord@pegasus.rutgers.edu
Mailing list subscriptions
majordomo@seul.org
(put subscribe independence-l in the body)