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: