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

Re: IBM DB2 und Debian 3.0



On 01.Jun 2004 - 22:43:15, Mathias Peters wrote:
> hi Andreas,
> 
> koenntest du den wrapper evtl. "veroeffentlichen"(also attachen)?
> Hatte auch das rpm-Problem und immer nur die Antwort bekommen "Fuer rpms 
> unter debian gibts Alien".
> Danke
> Mathias Peters

Das Skript ist aber unvollstaendig, es bietet nur die rpm-Funktionen
an die vom DB2 Installationsskript benutzt werden.. Du brauchst auch
immernoch alien um aus deinen rpm's deb's zu machen. das Skript ist
nur dazu da einem Installationsprogramm welches rpm-Programme nutzt
dpkg "unterzuschieben" indem man das rpm binary ersetzt durch das
Skript.

Andreas

PS: Das Skript ist nicht auf meinem Mist gewachsen, ich hab das auch
nur von jmd. an der Uni.

-- 
Reputation, adj.:
	What others are not thinking about you.
#!/usr/bin/perl -w
#
# This script tries to cheat the DB2 Installer
#
# get db2setup to call this one instead of rpm by editing the binary
# and replacing any invocation of rpm or /bin/rpm with RPM or /bin/RPM
# or simply replace /bin/rpm with this script
#
# the only allowed calls of RPM are
#
# RPM -ivh <one or more rpms>
# RPM -q -p <one or more rpms> [--queryformat]
# RPM -q <package name>
# RPM -ev --nodeps <package name>
# RPM -qa [--queryformat]

my($opt_qf);

sub install {
  my (@args) = @_;
  foreach (@args) {
    s/([^\-]+)\-([^\-]+\-[01-9]+)\.i386\.rpm$/$1\_$2\_i386.deb/;
    tr/[A-Z]/[a-z]/; s/ibm_/ibm-/;
    `dpkg --force-depends -i $_`;
  };
};

sub query_one {
  my (@args) = @_;
  my (@packages) = `dpkg -l`;
  foreach $arg (@args) {
    my($found) = 0;
    foreach $package (@packages) {
      if ($package =~ /^ii[\ \t]*([^ ]+)[\ \t]*([^ ]+)/) {
	$name = $1;
	$version = $2;
	if ($name =~ /^$arg$/) {
	  print $name,"-",$version,"\n";
	  $found = 1;
	};
      }
    };
    if (!$found) {
      print "package $arg is not installed\n";
    };
  };
};

#fixme: laenge der paketnamen
sub query_all {
  my (@packages) = `dpkg -l`;
  foreach $package (@packages) {
    if ($package =~ /^ii[\ \t]*([^ ]+)[\ \t]*([^ ]+)/) {
      $name = $1;
      $version = $2;
      if (defined($opt_qf)) {
        print $name,"-",$version," ",$version,"\n";
      } 
      else {
        print $name,"-",$version,"\n";
      }
    }
  };
};

sub query_named {
  my(@args) = @_;
  my($i,$j,$k,$name);
  foreach (@args) {
    $name = basename($_);
    $name =~ s/\.i386\.rpm//;
    print $name;
    if (defined($opt_qf)) {
      $i = index $name,"-";
      $j = index $name,"-",$i+1;
      $k = index $name,"-",$j+1;
      while ($k != -1) {
        $i = $j;
        $j = $k;
        $k = index $name,"-",$j+1;
      }
      $basename = substr($name,$i+1,length($name)-$i-1);
      print " ",$basename;
    };
    print "\n";
  };
};

sub uninstall {
  my (@args) = @_;
  foreach (@args) {
    s/([^\-]+)\-([^\-]+\-[01-9])/$1/;
    `dpkg --purge $_`;
  };
};

open(LOG, ">> /tmp/rpm.out ");
print LOG "rpm ";
foreach (@ARGV) {
  print LOG $_," ";
};
close(LOG);

use File::Basename;
use Getopt::Long;
Getopt::Long::config("bundling");
$result = GetOptions("queryformat=s" => \$opt_qf,"nodeps" => \$opt_nodeps,"i" => \$opt_i,"v" => \$opt_v,"h" => \$opt_h,"q" => \$opt_q,"a" => \$opt_a,"e" => \$opt_e,"p" => \$opt_p);
die "syntax error\n" if !$result;

#arghh:
if (defined($opt_qf)) {
 pop @ARGV; 
};
@FILES=@ARGV;

process: {
  if (defined($opt_i) && defined($opt_h) && defined($opt_v)) { 
    install(@FILES); last process; 
  }
  if (defined($opt_q) && defined($opt_a)) { 
    query_all(); last process; 
  }
  if (defined($opt_q) && defined($opt_p)) {
    query_named(@FILES); last process;
  }
  if (defined($opt_q)) { 
    query_one(@FILES); last process; 
  }
  if (defined($opt_e) && defined($opt_v) && defined($opt_nodeps)) { 
    uninstall(@FILES); last process; 
  }
  die "syntax error\n";
}



Reply to: