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

Re: GLIBC 2.1 sparc, some good news



"Collins M.  Ben " <bmc@visi.net> writes:

> After messing with this all night, finding out that perl and a ton of other packages need to be recompiled aswell as the ones we already
> knew about, I did some hacking on the chown patch that has been used.
> 
> Our major problem was that the default symbol for the old chown was
> GLIBC_2.1, when it shouldn't have been. chown vGLIBC_2.0 was also
> defined, but not the default. What I am going to try is using the
> old patch but making GLIBC_2.0 the default version as it should be,
> and GLIBC_2.1 defined for compatibility with our old binaries. This
> way nothing has to be recompiled, and anything compiled against this
> new GLIBC 2.1 will work with our older 2.1pre aswell as other
> systems such as RedHat, etc.

How did you do this?  (I didn't know you could change the default
version on a case-by-case basis.)

FWIW, I've scanned my disk for problematic packages, they are

binutils
bitchx
cpio
dpkg
gdm
gmc
gzip
lha
libc6
lprng
man-db
minicom
netbase
netstd
nvi
perl-base
perl-suid
procmail
python-base
ssh
tar
telnetd
unzip
util-linux
xdm
xemacs20-mule-canna-wnn
xserver-mach64
xterm
xwnmo

I did this using the following two perl scripts (which can be
concatenated to make one script).  The first builds a
filename->package index, and the second, scans all the bin directories
for suspect binaries, builds a list for problematic packages, and then
sorts and prints them.


Steve
dunham@cse.msu.edu

#!/usr/bin/perl
use GDBM_File;

unlink "/tmp/index";
tie %FILES, "GDBM_File", "/tmp/index", &GDBM_WRCREAT, 0640 
  or die "Can't open index: $!\n";

chdir "/var/lib/dpkg/info";
while (<*.list>) {
  ( m/(.*).list/ and $package=$1 ) or next;
  open FILE, "<$_";
  while (<FILE>) {
    chomp($_);
    $FILES{"$_"}="$package" if -f $_;
  }
  close FILE;
}

untie %FILES;

#!/usr/bin/perl
use GDBM_File;

tie %FILES, "GDBM_File", "/tmp/index", &GDBM_WRCREAT, 0640 
  or die "Can't open index: $!\n";

@files= (</usr/bin/*>,</usr/sbin/*>,</usr/X11R6/bin/*>,</bin/*>,</sbin/*>);

foreach (@files) {
  next if ! (-x $_ && -f $_);
  if (0==system("objdump 2>/dev/null -T $_ |egrep -q 'GLIBC_2.1.*chown'")) {
    $TODO{$FILES{$_}}++ if defined $FILES{$_};
    print "UFO: $_\n" if ! defined $FILES{$_};
  }
}

foreach (sort keys %TODO) { print $_."\n"; }

untie %FILES;


Reply to: