4

私は、すべてのサードパーティ (読み取り: CPAN) perl モジュールを perforce リポジトリにインストールする必要があるプロジェクトに取り組んでいます。これにより、それらに依存するすべてのコードを、他の誰かが手動でインストールする必要なく正常に実行できます。XML::Parser をインストールしようとしたときに問題が発生しました。cpanminus を使用して CPAN モジュールをインストールしたのでcpanm -L . XML::Parser、目的のディレクトリで実行したところ (以前は他のモジュールで機能していました)、次のエラーが発生しました。

Expat.xs:12:19: error: expat.h: No such file or directory

Ubuntu と apt-get の使用には慣れていますが、職場では RedHat を使用する必要があり、expat をローカル ディレクトリにインストールする方法がわかりません。走っyum search expatて手に入れた

expat.i386 : A library for parsing XML.
expat.x86_64 : A library for parsing XML.

だから私は試しyum install --installroot=. expat.i386てみましたが、次のエラーが発生しました:

Loaded plugins: rhnplugin, security
error: cannot open Packages index using db3 - No such file or directory (2)
error: cannot open Packages database in ./var/lib/rpm
Traceback (most recent call last):
  File "/usr/bin/yum", line 29, in ?
    yummain.user_main(sys.argv[1:], exit_code=True)
  File "/usr/share/yum-cli/yummain.py", line 309, in user_main
    errcode = main(args)
  File "/usr/share/yum-cli/yummain.py", line 157, in main
    base.getOptionsConfig(args)
  File "/usr/share/yum-cli/cli.py", line 187, in getOptionsConfig
    self.conf
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 665, in <lambda>
    conf = property(fget=lambda self: self._getConfig(),
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 240, in _getConfig
    self._conf = config.readMainConfig(startupconf)
  File "/usr/lib/python2.4/site-packages/yum/config.py", line 804, in readMainConfig
    yumvars['releasever'] = _getsysver(startupconf.installroot, startupconf.distroverpkg)
  File "/usr/lib/python2.4/site-packages/yum/config.py", line 877, in _getsysver
    idx = ts.dbMatch('provides', distroverpkg)
TypeError: rpmdb open failed

私は何を間違っていますか?また、expat をインストールしたら、cpanm にその場所を伝える方法がわかりません。

4

3 に答える 3

5

正しい道に進むのに役立つことがいくつかあります。まず、必要なパッケージは と呼ばれexpat-develます。また、 --installroot オプションに絶対パスを指定する必要があると思います。これらのモジュールのビルド方法に関連しない限り、yum にパッケージ拡張子を指定する必要はおそらくないでしょう (つまり、通常はyum install expat-devel)。

また、「rpmdb のオープンに失敗しました」というメッセージが表示されたため、rpmdb に何か問題があるようです。実行yum checkして rpmdb の問題を探すことはできますが、それ以上にパッケージ マネージャーで具体的に何が起こっているのかはわかりません。おそらく、他の人がその側面でもっと助けることができます。

于 2013-03-18T19:37:45.553 に答える
1

さて、私は回避策を見つけました。代わりにXML::Simpleをインストールしました。最初はXML::SimpleがXML::Parserを必要としているように見えましたが、XML::ParserまたはXML::SAXのいずれかが必要であることがわかったので、代わりにXML :: SAXをインストールして、XML::Simpleが機能するようにしました。 。私のニーズには十分です。

于 2013-03-19T16:12:23.970 に答える