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: