2010-01-28 39 views
4

當我需要一個Perl模塊時,我通常使用CPAN。它工作正常。但這次不行。MacOS X 10.6.2上的Perl:缺少GDBM_File,如何安裝或變通?

我想使用MARC :: Charset,但是這個使用GDBM_File,我似乎無法從CPAN安裝GDBM_File。

CPAN發現它沒問題,但試圖安裝它,它開始安裝完整的Perl 5.10.1發行版。

MARC :: Charset是一個相當老的模塊,所以應該有一種方法使用它從一些常見的Perl版本(Mac OS X 10.6.2默認具有5.10.0和5.8.9)。

安裝完整版Perl 5.10.1不是一個選項,修改MARC :: Charset以停止使用GDBM_File可能是一個選項。這樣做最好的行動是什麼?

最後一個選項也可能是唯一的選項。 GDBM_File使用GDBM_File搜索了一些表明gdbm甚至在Mac上不可用的項目。那些物品通常會超過我的頭。

雖然我不希望有銀彈,但有人可能會在我應該開始的地方有一兩個指針。

畢竟,MARC :: Charset只會對marc8字符集進行字符音譯,不幸的是,iconv似乎不支持。

+0

相關:http://stackoverflow.com/questions/1546192/how-can-i-install-a-cpan-module-that-is-in-the-latest-perl-without-installing-th – Ether 2010-01-28 16:26:40

回答

6

GDBM_Filecore Perl module。這就是爲什麼當你安裝這個模塊時它試圖將你的Perl升級到最新版本。

看來Mac OS X並沒有與GDBM一起出現,因此沒有使用任何提供的開發語言構建和包含必要的模塊。這似乎是for quite some time

所以你的第一個障礙是安裝/編譯GDBM。 MacPorts確實提供了package

GDBM_File是一個XS模塊,所以你將不得不編譯它。 Perl 5.10.0 GDBM_File code可以找到here

BTW:MARC::Charset只在1.1版本(最新版本)切換到GDBM_File。之前版本1.0使用SDBM_File,它在Mac OS X上隨Perl一起提供(儘管未親自測試過)。

所以你可能會發現下載previous version of MARC::Charset是一個更好的選擇。

1

你有兩個備選方案:修復MARC :: Charset,所以它不需要GDBM_File,或者建立你自己的Perl。

老實說,構建自己的Perl可能更快更安全。如果您以前從未安裝過Perl,我建議您使用MacPorts(http://macports.org),它將安裝在/ opt/local/bin/perl中。然後你可以使用「/ opt/local/bin/cpan MARC :: Charset」來安裝你需要的模塊。

MacPorts不會默認構建一個線程化的Perl - 我知道安裝時會有woojy-woojy這樣做,但是我對最初接觸他們的線程過敏,並且從來沒有想過弄清楚它是什麼是。

+0

不幸,要求我的客戶構建並安裝完整的Perl分發版不是一種選擇。 此外,它似乎甚至不夠,因爲GDBM沒有安裝在MacOS X. – 2010-01-28 10:52:02

0

我最終通過使用以前版本的MARC :: Charset解決了這個問題。以前的版本沒有使用GDBM_File,而是使用另一個工具。這是版本之間唯一的變化,沒有說明變更的原因。

使用以前的版本修復了一切。

+0

我很高興你解決了這個問題,但你不覺得你的答案上面會更好地作爲我的回答下的評論嗎? :( – draegtun 2010-06-18 14:50:16

+0

是的,你說得對,我碰到了你的答案,並且標記爲正確的。 – 2010-06-20 10:18:02

+0

非常感謝讓 - 丹尼斯。 – draegtun 2010-06-20 13:24:10