web-dev-qa-db-ja.com

32ビットバージョンのPerlを64ビットCentOSサーバーにインストールするにはどうすればよいですか?

Cent OSサーバーに32ビットバージョンのPerlをインストールしたいのですが、もちろん64ビットです。Perl -vの出力は

[root@M-229 ~]# Perl --version

This is Perl, v5.10.1 (*) built for x86_64-linux-thread-multi

Copyright 1987-2009, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man Perl" or "perldoc Perl".  If you have access to the
Internet, point your browser at http://www.Perl.org/, the Perl Home Page.

そのために、yumとrpmを使用してみましたが、Perl-5.8.8.tar.gzファイルをダウンロードしてインストールしようとした場合よりも、どちらも64ビットバージョンしか提供していません。それでも機能せず、makeは次のエラーを出します

make: *** No rule to make target `<command-line>', needed by `miniperlmain.o'.  Stop.

次のリンクに記載されている手順を試しましたが、うまくいきませんでした。これを行うのを手伝ってください。

このリンク

別のリンク

そしてここのほとんどすべてのリンク

助けてください、

[〜#〜] edit [〜#〜]32ビットのオープンソースアプリケーションがマシン上で稼働しているため、これを実現したいと思います。ただし、場合によってはバグを見つけました。ソースコードをダウンロードし、バグを理解して修正しました。他のすべての.soは32ビットであるため、変更をテストできません。dlopen failed: /usr/local/garner/plugins/libfwstub.so: wrong ELF class: ELFCLASS64が表示されます。

ここ数日助けてくださいので、私はこの時点で立ち往生しています。

3
Amit

記事 HOWTO perlbrew、64ビットCentosで32ビットPerl は、次の手順について説明しています。

A。 perlbrewをインストールします

CPANからperlbrewをインストールする必要があり、依存関係がたくさんあります。素晴らしいApp :: cpanminusは、このエクスペリエンスを可能な限り苦痛のないものにするので、perlbrew自体に移行する前にインストールしました。

$ Sudo yum install Perl-CPAN
$ Sudo cpan App::cpanminus
$ Sudo cpanm install App::perlbrew

B。 perlbrewを初期化します

$ perlbrew init
$ perlbrew install-patchperl

Initステップの出力に注意してください。シェル構成を変更するように指示されます。

C。 32ビットライブラリをインストールする

これら2つのパッケージをインストールするだけで、32ビットのPerlコアを構築できました。 32ビットPerlに対して追加のXSモジュールを構築する場合は、他の32ビットライブラリをインストールする必要がある場合があります。

$ Sudo yum install glibc-devel.i686 libgcc.i686

D。 Perlを構築する

$ perlbrew install 5.8.9 -Accflags="-m32 -march=i686" -Aldflags="-m32 -march=i686" -Alddlflags="-shared -m32 -march=i686"
Fetching Perl-5.8.9 as /home/zts/Perl5/perlbrew/dists/Perl-5.8.9.tar.bz2
Installing /home/zts/Perl5/perlbrew/build/Perl-5.8.9 into ~/Perl5/perlbrew/perls/Perl-5.8.9

This could take a while. You can run the following command on another Shell to track the status:

  tail -f ~/Perl5/perlbrew/build.Perl-5.8.9.log

Perl-5.8.9 is successfully installed.

結果は完全ではありませんが、これですべてです。上記の呼び出しは32ビットのPerlを構築しますが、システムのarchnameをオーバーライドしないため、結果の@INCは次のようになります。

@INC:
    /home/zts/Perl5/perlbrew/perls/Perl-5.8.9/lib/5.8.9/x86_64-linux
    /home/zts/Perl5/perlbrew/perls/Perl-5.8.9/lib/5.8.9
    /home/zts/Perl5/perlbrew/perls/Perl-5.8.9/lib/site_Perl/5.8.9/x86_64-linux
    /home/zts/Perl5/perlbrew/perls/Perl-5.8.9/lib/site_Perl/5.8.9
    .

私の目的では、これは単に美的な問題です。x86_64-linuxディレクトリには32ビットの共有オブジェクトが含まれています。

3
harrymc

私はそれを試したことがありません(そして、なぜ64ビットシステムで32ビットPerlが必要になるのだろうかと思います)が、おそらくこれらの線に沿った何かがうまくいくでしょう。必要に応じてパスと構成オプションを調整します。 (lsとcdを使用してシステム上の適切なディレクトリを検索し、。/ configure --helpを使用して使用可能な構成オプションを確認します):

export CC="gcc -m32"
export CXX="g++ -m32"
export PKG_CONFIG_PATH="/usr/lib32/pkgconfig"       
./configure --prefix=/usr --libdir=/usr/lib32 --enable-utf --enable-unicode-properties --enable-pcre16 --enable-pcre32 --enable-jit
make
2
Alexander