upgrading rpm breaks netscape ("An error occurred running and (kein)/lib/netscape/netscape-communicator.")

upgrading rpm breaks netscape ("An error occurred running and (kein)/lib/netscape/netscape-communicator.")


Author: Bernhard Weißhuhn
Email: bkw@weisshuhn.de
Web Page: http://bkw.weisshuhn.de/

System Architecture: Intel
RedHat Release: RHL 5.1 (Manhattan)
FAQ Category: Application Notes
Modification Date: Oct 11, 1998

Question:

On systems with a non-english locale-setting, ater upgrading rpm to 
Version > 2.5.2, Netscape won't start anymore, giving an error message
like "An error occurred running and (kein)/lib/netscape/netscape-communicator."
(Example from a system with german locale-Setting).

Answer:

When you start netscape by typing "netscape", "netscape-communicator", or
"netscape-navigator" from the shell, a shellscript in /usr/bin/netscape is 
called, that - amoung other things - uses a call to rpm to determine, 
where netscape was installed. This call relies on the reply "(none)" from rpm
for the case, that no special install-prefix was used (which should be the 
default for most installations).

The new and improved rpm however returns a translated string instead of "(none)",
the german locale for example returns "(kein)".

There are actually gazillions of possible solutions, including downgrading 
to rpm-2.5.2 (Don't! rpm-2.5.3 contains security-relevant fixes!).

Here is a better solution:

Open the file /usr/bin/netscape in an editor (don't worry, 
it's only a shell-script) and go to line 25. 
You will find a paragraph like this:

   I="`rpm -q $which --qf '%{INSTALLPREFIX}\n'`"
   if [ "$I" = "(none)" ]; then
       I=/usr
   fi

Right before that paragraph, insert the following two lines:

   LANG_SAVE=$LANG 
   LANG="POSIX"
 
and right after the paragraph, append these two lines:

   LANG=$LANG_SAVE
   unset LANG_SAVE

This disables your language-setting for the duration of the test
and restores it afterwards, a solution which clearly is superiour to just
translating the "(none)".

I submitted a bug report to Red Hat and expect this problem to be solved
in the next rpm-release of netscape, which should be 4.07.

References:

http://www.redhat.com/support/docs/rhl/rh51-errata-general.html#rpm
http://www.redhat.com/support/docs/rhl/intel/rh51-errata-intel.html#Netscape