2013-03-18 205 views
3

我正在开发一个需要将所有第三方(读取:CPAN)perl模块安装到perforce存储库中的项目,以便任何依赖于它们的代码都可以成功运行,无需其他人需要手动安装它们。我尝试安装XML :: Parser时遇到了一个问题。我用cpanminus安装我CPAN模块,所以我跑了所需的目录cpanm -L . XML::Parser(这与其他模块工作过),并得到了错误:安装XML :: Parser需要expat.h

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在哪里找到它。

回答

1

嗯,我找到了一个解决方法。我安装了XML :: Simple。起初,它看起来像XML :: Simple所需的XML :: Parser,但经过一番研究发现,它需要XML :: Parser或XML :: SAX,所以我安装了XML :: SAX,并获得了XML :: Simple工作。足够满足我的需求。

4

我看到了一些可以帮助你走上正确道路的事情。首先,你想要的软件包叫做expat-devel。另外,我认为你需要为--installroot选项提供一个绝对路径,你可能不需要为yum提供包扩展,除非这与你构建这些模块的方式有关(也就是说,你通常可以做yum install expat-devel)。

它看起来像你的rpmdb可能有问题,因为你得到了“rpmdb打开失败”消息。您可以运行yum check以查找rpmdb中的问题,但除此之外,我无法专门针对包管理器进行任何说明。也许其他人可以在这方面提供更多帮助。

+0

我试过'百胜安装--installroot = [绝对路径]外籍-devel'和它说'不package expat-devel available.'事实上,即使我用expat.i386试用它,我也会得到相同的错误 – Lorkenpeist 2013-03-18 19:46:47

+0

你使用的是什么版本的红帽?我看到了Red Hat Enterprise Linux Server 5.9(Tikanga)和Fedora 17(Beefy Miracle)的expat-devel。也许这是你的rpmdb的另一个问题? – SES 2013-03-18 19:50:36

+0

'lsb_release -i -r'说'分销商ID:RedHatEnterpriseServer版本:5.6' – Lorkenpeist 2013-03-18 20:21:44