我尝试为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
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
感谢任何帮助。谢谢!
答案 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