Alien не может создать пакет для архитектуры "Ubuntu AMD64"
Я использую Ubuntu I686.
Необходимо установить пакеты i386 .rpm.
попробовал этот код:
alien -i [file.i386.rpm]
Пытался установить ia32-libs...
apt-get install ia32-libs
... и попробовал чужой снова, но не получилось.
любое предложение? Спасибо.
[РЕДАКТИРОВАТЬ]
[предложение № 1: запустить инопланетянин с помощью sudo -c -v ...]
Ваше предложение не сработало. Та же ошибка сообщается:
file.i386.rpm is for architecture i386 ; the package cannot be built on this system.
Строка над ошибкой является командой chmod:
chmod 755 ["name of directory"/debian/rules]
любое другое предложение? Спасибо.
5 ответов
Как можно найти на https://www.maketecheasier.com/convert-32bit-rpm-to-deb-64bit/, это хороший простой обходной путь - после преобразования в TGZ в качестве промежуточного этапа просто снова выполните преобразование в.deb:
sudo alien --scripts --to-tgz <package.rpm>
sudo alien --scripts --to-deb <package.tgz>
--to-deb
это значение по умолчанию, используемое здесь только для того, чтобы явно указывать преобразования.
У меня была такая же проблема, и я решил ее следующим образом:
alien --to-tgz --scripts file.i386.rpm
mkdir unpack
cd unpack
tar -xpzf ../file.tgz
mv install ..
cp -rv * /
cd ../install
./doinst.sh
RPM преобразуется в файл TGZ. Имейте в виду, что ".386" отсутствует в имени файла TGZ.
Запустите Alien с параметрами sudo и -c -v:
sudo alien -i -c -v file.i386.rpm
Параметр -c (--scripts) Включить скрипты в пакет
Параметр -v (--verbose) Отображает каждую команду, запускаемую инопланетянином, чтобы вы могли видеть, что происходит не так.
Текущие ответы говорят о преобразовании в .tgz, но это не сработало для меня, поскольку во время этого двухэтапного процесса преобразования были исключены необходимые метаданные. Я хотел напрямую преобразовать некоторые RPM в файлы deb с помощью Alien.
Первым шагом было увидеть, как инопланетяне обнаруживают архитектуру моей системы, а затем я мог найти способ отключить ее. С небольшой помощью отdpkg -L alien
и grep я нашел код, ответственный за эту ошибку. Он начинается на строке 552/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";
}
}
Просто добавь--target=all
к вашей команде.
alien --target=all -i file.i386.rpm
8086 = 8 бит
80186 = 8 бит
80286 = 16 бит
80386 = 32-разрядный
80486 = 32-разрядный
80586 = 32-битный = Pentium, Pentium MMX, K5, K6, K6-II, K6-III
80686 = 32-разрядный = Pentium Pro, Pentium II, Pentium III, Athlon, Athlon XP, Opteron *, Athlon FX-51 *, Athlon FX-53 *, Athlon 64 *
80786 = 32-битный = Pentium 4
- = 32-бит /64-бит
Если вы скомпилировали программу для 386 архитектур, ее могут выполнять только процессоры, равные ей или выше.
Таким образом, i386.rpm не может работать на вашей Ubuntu i686