web-dev-qa-db-ja.com

expat-develなしでXML :: Parserをインストールする方法?

XML :: Parserは、かなり新しい64ビットDebianボックスでのビルドに失敗します。 cpan XML::Parserを発行した後、cpanはExpat.cおよびExpat.xsに関する多くのエラーで失敗します。

[...]
Expat.xs:2182: error: ‘CallbackVector’ has no member named ‘skip_until’
Expat.c: In function ‘XS_XML__Parser__Expat_Do_External_Parse’:
Expat.c:2904: error: ‘XML_Parser’ undeclared (first use in this function)
Expat.c:2904: error: expected ‘;’ before ‘parser’
Expat.xs:2194: error: ‘parser’ undeclared (first use in this function)
make[1]: *** [Expat.o] Error 1
make[1]: Leaving directory `/root/.cpan/build/XML-Parser-2.41-rpV6ok/Expat'
make: *** [subdirs] Error 2
  TODDR/XML-Parser-2.41.tar.gz
  /usr/bin/make -- NOT OK
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible

出力の最初のメッセージは、ビルドにはexpat-develが必要であることを説明しています。

ExpatはXML :: Parserを構築する前にインストールする必要があり、標準ライブラリのディレクトリで見つけることができません。 OSパッケージマネージャーで 'expat-devel'パッケージをインストールします。 「README」を参照してください。

しかしexpat-develはDebianリポジトリにありません。

ソースからexpatをビルド/インストールする必要なしにこれを乗り越えることは可能ですか?

13
Alois Mahdal

インストールするパッケージの名前はlibexpat1-devです。 apt-getを使用してlibxml-parser-Perlをインストールすることもできます。または、本当にCPAN経由でインストールしたい場合は、最初にapt-get build-dep libxml-parser-Perl経由でDebianパッケージの依存関係をインストールしてみてください。

43

libexpat1-dev には、メッセージにも記載されているlibexpatとexpat.hの両方が含まれています。

Expatがインストールされているが、標準以外のディレクトリにある場合は、Makefile.PLに次のオプションを使用します。

EXPATLIBPATH = ... libexpatを見つけるディレクトリを設定するには

EXPATINCPATH = ... expat.hを見つけるディレクトリを設定するには

Libexpat1-devをインストールすると問題が解決するようです:

$ aptitude install libexpat1-dev
9
Alois Mahdal

常に手動の方法があります-ソースからexpatをビルド/インストールします。 (この例は、XAMPP | LAMPPの別の場所へのインストールを示しています)

ダウンロード元: http://sourceforge.net/projects/expat/files/expat/

tar zxf /[where-ever]/expat-2.1.0.tar.gz -C /tmp
cd /tmp/expat-2.1.0
/opt/lampp/bin/Perl ./configure --prefix=/opt/lampp LDFLAGS=-L/opt/lampp/lib 
make
make install

http://search.cpan.org -検索してダウンロード-XML :: Parser

tar zxf /[where-ever]/XML-Parser-2.41.tar.gz -C /tmp
cd /tmp/XML-Parser-2.41
/opt/lampp/bin/Perl ./Makefile.PL EXPATLIBPATH=/opt/lampp/lib EXPATINCPATH=/opt/lampp/include
make
make test
make install
5
LadyBuzz

Ubuntu 15.04の魅力のように動作します。私が必要なのは、Perl XML Parserを次のようにインストールすることだけです。

Sudo apt-get install libxml-parser-Perl

そして、ここの指示に従って、すべての評価をRhythmboxに正常にインポートすることができました。今、私がしなければならない唯一の作業は、スマートプレイリストをもう一度作成することです。これは、私のライブラリ全体の評価と比較して何もありません。

3
Marcelo Santos

今日、私はOSX 10.8の新しいGIMP 2.9.4ベータと自作の助けを借りたいという同じ問題を抱えていました。

最初にPerlをインストールする

brew install Perl

次に、XML :: ParserモジュールをPerlシェルに移動して

Perl -MCPAN -e Shell

シェル内に次のように入力して、XML :: Parserをインストールします。

install XML::Parser

シェルを終了

exit

次に、それが正常にインストールされたことを確認します。すべて問題なければ、エラーは表示されません。

Perl -e "require XML::Parser"

それでも./configureが失敗してXML :: Parserが見つからない場合、intltoolsはインストールしたPerlを使用していません。スクリプトを見ると、テストは$INTLTOOL_Perl -e "require XML::Parser"echo $INTLTOOL_Perlは何も与えなかったので、魔法はそれを設定することです

export $INTLTOOL_Perl=perl

もう一度./configureを実行してください。

2
Markus Zeller

上記の方法はどれも私にとってはうまくいきませんでした。私は適切な環境変数を設定しましたが、Perlモジュールのインストールに使用するcpanmによってそれらがどういうわけか選択されませんでした。 Expatもインストールされました。

OPが報告するのと同じ問題を克服するために私がやったことは次のとおりです。これは @ LadyBuzz の提案に非常に近いものです。

  1. XML::Parserからcpan.orgをダウンロード
  2. Tarballをディレクトリに抽出し、その下に移動します。
  3. Makefile.plを開き、最初の行を編集して、実際に両方への絶対パスを設定します:EXPATLIBPATHEXPATINCPATH
  4. Makefile.plを保存し、1レベル上に移動して、編集したMakefile.plで新しいtarballを作成します。
  5. 新しく作成したtarballでcpanmを実行します。

これにより、モジュールが正常にインストールされました。

0
mjp