2014-03-19 2 views
0

Я хотел запустить gnu_parallel на одном из моих серверов (nproc = 48). Когда я пытаюсь запустить команду,Проблемы с установкой Perl неверный класс ELF: ELFCLASS32

seq 1 5000 | parallel --eta 'echo {} > /dev/null' 

я получаю некоторые ошибки,

Can't load '/usr/local/lib64/perl5/auto/Fcntl/Fcntl.so' for module Fcntl: /usr/local/lib64/perl5/auto/Fcntl/Fcntl.so: wrong ELF class: ELFCLASS32 at /usr/lib64/perl5/XSLoader.pm line 70. 
at /usr/local/lib64/perl5/Fcntl.pm line 215 
BEGIN failed--compilation aborted at /usr/local/lib64/perl5/Fcntl.pm line 216. 
Compilation failed in require at /usr/local/lib64/perl5/POSIX.pm line 19. 
BEGIN failed--compilation aborted at /usr/local/lib64/perl5/POSIX.pm line 19. 
Compilation failed in require at /usr/bin/parallel line 24. 
BEGIN failed--compilation aborted at /usr/bin/parallel line 24. 

Я не хочу, чтобы повторно установить Perl на сервере, поскольку есть много серверов, используя его.

Я могу делать все, что не повредит текущим приложениям, работающим на моих серверах.

Пожалуйста, скажите мне, как работать параллельно.

OS: Cent-OS 6.4 64 bit 
nproc: 48 
RAM: 512 GB 

EDIT:

Else Смогу ли я использовать App :: Fatpacker? для решения проблемы?

EDIT 2

Я пытался и не используя Fatpacker.

EDIT: 3 Я попытался установить perlbrew: получили следующие ошибки неправильного ELFClASS

Can't load '/usr/local/lib64/perl5/auto/PerlIO/scalar/scalar.so' for module PerlIO::scalar: /usr/local/lib64/perl5/auto/PerlIO/scalar/scalar.so: wrong ELF class: ELFCLASS32 at /usr/lib64/perl5/XSLoader.pm line 70. 
at /usr/local/lib64/perl5/PerlIO/scalar.pm line 4 
Compilation failed in require at (eval 1) line 3. 
FatPacker error loading App/perlbrew.pm (could be a perl installation issue?) at perlbrew-23345 line 551. 
BEGIN failed--compilation aborted at perlbrew-23345 line 562. 

ответ

0

сделать новую установку Perl в другой каталог, следуя,

sudo mkdir /usr/local/perl5142 
sudo chown $USER:$USER /usr/local/perl5142 
cd /usr/local/perl5142/ 
mkdir build cpan 
cd build/ 
wget http://www.cpan.org/src/perl-5.14.2.tar.gz 
tar xzvf perl-5.14.2.tar.gz 
cd perl-5.14.2 
rm -f config.sh Policy.sh ; sh Configure -de -Dprefix=/usr/local/perl5142 
make && make test && make install 

Источник: Instructions for multiple perl installations

Для makinng параллель использовать эту новую установку Я отредактировал линию shebang параллели от #!/usr/bin/env perl до #! /usr/local/perl5142/build/perl-5.14.2/perl.

Никакой ущерб, нанесенный какой-либо из существующих установок, и Parallel работает должным образом.

0

Can't load '/usr/local/lib64/perl5/auto/Fcntl/Fcntl.so' for module Fcntl: /usr/local/lib64/perl5/auto/Fcntl/Fcntl.so: wrong ELF class: ELFCLASS32 at /usr/lib64/perl5/XSLoader.pm line 70.

кажется, что /usr/local/lib64/perl5/auto/Fcntl/Fcntl.so является 32-бит.

попытка командного файла: file /usr/local/lib64/perl5/auto/Fcntl/Fcntl.so

+0

/usr/local/lib64/perl5/auto/Fcntl/Fcntl.so: ELF 32-разрядный общий объект LSB, Intel 80386, версия 1 (SYSV), динамически связанная, разделенная –

+0

Как показывает файл: '/ usr/local/lib64/perl5/auto/Fcntl/Fcntl.so' - 32-разрядный. Странно, почему 32-битная библиотека, расположенная в lib64 /? – zzn

+0

Что я должен знать? Исправлена ​​проблема? –

Смежные вопросы