5

I'm using ubuntu i686.
Need to install i386 .rpm packages.
tried this code:

alien -i [file.i386.rpm]

Tried to install ia32-libs...

apt-get install ia32-libs 

...and tried alien again but didn't work.

any suggestion? thx.

[EDIT]
[suggestion #1: run alien with sudo -c -v ...]
your suggestion didn't work. Same error reported:

file.i386.rpm is for architecture i386 ; the package cannot be built on this system.  

The line above the error is the command chmod:

chmod 755 ["name of directory"/debian/rules]

any other suggestion? thx.

5 Answers 5

2

As found on https://www.maketecheasier.com/convert-32bit-rpm-to-deb-64bit/, this is a nice easy workaround - after converting to TGZ as an intermediate stage, just convert again to the .deb:

sudo alien --scripts --to-tgz <package.rpm>

sudo alien --scripts --to-deb <package.tgz>

The --to-deb is a default, used here only to be explicit about the conversions.

1

I had the same problem and solved it this way:

alien --to-tgz --scripts file.i386.rpm
mkdir unpack
cd unpack
tar -xpzf ../file.tgz
mv install ..
cp -rv * /
cd ../install
./doinst.sh

The RPM is converted to a TGZ file. Be aware that the ".386" is not in the name of the TGZ file.

0

Run alien with sudo and -c -v parameters:

sudo alien -i -c -v file.i386.rpm

The -c (--scripts) parameter Include scripts in package

The -v (--verbose) parameter Display each command alien runs so you can see what is going wrong.

0
0

The current answers say to convert to .tgz, but that did not work for me as it was leaving out necessary metadata during this two-step conversion process. I wanted to directly convert some RPMs to deb files with alien.

First step was to see how alien was detecting my system architecture, then I could find a way to disable it. With a bit of help from dpkg -L alien and grep, I located the code responsible for this error. It starts on line 552 of /usr/share/perl5/Alien/Package/Deb.pm.

# Detect architecture mismatch and abort with a comprehensible
# error message.
my $arch=$this->arch;
if ($arch ne 'all') {
    my $ret=system("dpkg-architecture", "-i".$arch);
    if ($ret != 0) {
        die $this->filename." is for architecture ".$this->arch." ; the package cannot be built on this system"."\n";
    }
}

Just add --target=all to your command.

alien --target=all -i file.i386.rpm
-2

8086 = 8-bit

80186 = 8-bit

80286 = 16-bit

80386 = 32-bit

80486 = 32-bit

80586 = 32-bit = Pentium, Pentium MMX, K5, K6, K6-II, K6-III

80686 = 32-bit = Pentium Pro, Pentium II, Pentium III, Athlon, Athlon XP, Opteron*, Athlon FX-51*, Athlon FX-53*, Athlon 64*

80786 = 32-bit = Pentium 4

  • = 32-bit/64-bit

If you have compiled a program for 386 architectures, only the processors equal to it or above it can execute it.

So the i386.rpm cannot run to your ubuntu i686

1
  • ok. but in theory i can with ia32-libs. run x86 bin on x64 architecture. right?
    – Raffaello
    Nov 13, 2012 at 11:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .