64ビットCent OSサーバーに32ビットバージョンのperlをインストールする方法


3

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を使用してみましたが、どちらも64ビットバージョンしか提供していません。perl-5.8.8.tar.gzファイルをダウンロードして、そこからインストールしようとしました。それでもうまくいかず、makeは次のエラーを出します

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

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

このリンク

別のリンク

ここにほとんどすべてのリンクがあります

助けてください、

編集 32ビットのオープンソースアプリケーションがマシン上で稼働しているため、これを達成したいです。しかし、特定のケースでバグを見つけました。ソースコードをダウンロードし、バグを理解して修正しましたdlopen failed: /usr/local/garner/plugins/libfwstub.so: wrong ELF class: ELFCLASS64。他のすべての.soは32ビットであるため、変更をテストできません。

最後の数日間は助けてください。

回答:


3

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

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ビットの共有オブジェクトが含まれています。


2

試したことはありません(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

私は、既存の設定パラメータには何も変更する必要がありますか./configure --prefix= --sysconfdir=/etc --no-create --no-recursion --enable-clockevent助けてください... ...
アミット

私はCentOSコンピューターにアクセスできず、そもそもこれを行う必要があることを理解していないので、試してみるだけです。構成、コンパイル、および実行される場合、機能します。64ビットコンピューターで32ビットバージョンのperlを実行する別のソリューションは、32ビットOSの仮想マシンで実行することです。
アレクサンダー

このエラーが発生しました... fwstub_yacc.o:ELFCLASS64と互換性のないファイルクラスELFCLASS32
アミット

次に、32ビットバージョンのyaccも必要です。perlが使用するすべてのライブラリと依存関係の32ビットバージョンが必要になります。これは大変な作業です。
アレクサンダー

メイクファイルの行がありYACC = bison -y、私はバイソンはまた、いくつか32ビットの特定のオプション...必要としていると思います
アミット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.