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

Re: /bin/sh broken - now what?



On Sun, 25 Nov 2001, Karsten M. Self wrote:

> on Sun, Nov 25, 2001 at 02:22:13AM +0100, A.R. (Tom) Peters (tpeters@xs4all.nl) wrote:
> > I tried to install the G77 compiler, and got the latest stuff from
> > testing.  It required a newer version of libc6 (2.2.4-5), which got
> > installed first.  Then all subsequent packages failed.  I cannot open a
> > shell anymore:
> > 
> > /bin/sh: relocation error: /bin/sh: undefined symbol: history_max_entries
> > 
> > Existing shells still work, but this situation paralyzes just about
> > anything, including apt.  What can I do?
> 
> Sounds like you might have tweaked some libs.

No I did not.  I just tried to install a package, and then apt-get
decided that libc should be upgraded.

> Do you have sash installed?  This is the Stand Alone Shell -- it has no
> dynamic library deps and builds-in a bunch of basic utilities (names are
> prefixed with a '-', e.g.:  -ls).  Very helpful when you've fried your
> system, particularly libraries, or for running from a known trusted
> floppy on a compromised box.  The linker utilities (ld, ldd) aren't
> included, but you might use these.  You're looking for libraries which
> have changed, are corrupted, or have been deleted.  I think.

Thanx for the tip.  I did not have it, but could copy it from a
BBC.  Unfortunately sash appears to be a really interactive shell, and a
bad replacement for `sh`.  `ash` is somehwat better in that respect.

In the end, I replaced my current version of bash by an older one from
CD.  Weirdly, that worked.  But the bash I had (maybe bash-2.05-8 but
presumably earlier) is NOT compatible with libc6-2.2.4-5 .

A classical example on how not to try repair a running engine: I did:

rm libc.so.6
ln -s libc-2.2.1.so libc6.so.6

Of course, this should have been:

rm libc.so.6 ; ln -s libc-2.2.1.so libc6.so.6

ah, the subtleties of whitespace.

In fact, this doesn't work either: `ln` breaks immediately.  I had to use
`sash` to do these kind of commands.
(Now I think of it, `rm libc.so.6 && ln -s libc-2.2.1.so libc6.so.6` might
have worked).

Years ago it used to be that /sbin/ contained all important utilities
Statically linked, in case something seriously went wrong with
libraries.  This custom has disappeared, and I feel the loss severely
today.

--
#>!$!%(@^%#%*(&(#@#*$^@^$##*#@&(%)@**$!(&!^(#((#&%!)%*@)(&$($$%(@#)&*!^$)^@*^@)

	Tom "thriving on chaos" Peters
		NL-1062 KD nr 149	tel.    +31-204080204
 			Amsterdam	e-mail  tpeters@xs4all.nl



Reply to: