Perl Build忽略了destdir

时间:2014-01-09 18:29:10

标签: perl

我尝试为Perl模块YAML::Tiny创建一个RPM,在我的spec文件中我有这个......

%build
/usr/perl/bin/perl Build.PL INSTALLDIRS=vendor
./Build
./Build test
%install
rm -rf $RPM_BUILD_ROOT
./Build install destdir=$RPM_BUILD_ROOT

...当我运行rpmbuild时,我收到此错误:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ERROR: Can't create '/usr/perl-5.14.1/lib/red_perl/YAML'
mkdir /usr/perl-5.14.1/lib/red_perl/YAML: Permission denied at /usr/perl-5.14.1/lib/5.14.1/ExtUtils/Install.pm line 494

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

YAML::Tiny目前使用Module::Build::Tiny进行安装。关于如何传递参数,这并不灵活。引用its docs

  

Module :: Build有一种非常宽松的参数处理方式,Module :: Build :: Tiny只支持一个(理智的)子集。特别是,./Build destdir=/foo不起作用,您需要将其作为./Build --destdir=/foo传递。

(这样它可以将参数解析外包给Getopt::Long,而不必像Module::Build那样包含自定义命令行解析器。)

所以你的规范应该是这样的:

%build
/usr/perl/bin/perl Build.PL --installdirs=vendor
./Build
./Build test
%install
rm -rf $RPM_BUILD_ROOT
./Build install --destdir=$RPM_BUILD_ROOT