我正在使用 Module::Build
的 share_dir
选项来安装用户安装我的perl模块时读取的补充内容。
安装新版本时,如何确保删除我的模块以前版本的旧内容?
事先感谢您的帮助。
Yanick Champoux最近一直在处理这个问题。为此,他创建了file :: sharedir :: tarball及其dist :: zilla forpart dist :: zilla :: plugin :: sharchir :: tarball。这个想法是您的整个共享设备都被刻有,因此它只是一个目录。然后,当您的模块升级时,更换了Tarball,并且在您期望的状态下。
如果您要从分发中删除文件
my $mod = 'CGI';
if( eval "require $mod; 1" ){
die "
YOU HAVE TO UNINSTALL $mod before you can upgrade, use one of
cpanp -u $mod --force
pm-uninstall -vf $mod
";
}
或更高
通常,您会知道哪个版本的模块需要完整卸载,因此您可能需要添加版本检查...
fwiw,这将使一个不错的模块:: build/module :: install/partutils :: makemaker加法/扩展/插件接受
之类的东西requires_uninstall_if_installed => '<3000' ,
requires_uninstall_if_installed => { CGI => '<3000', 'CGI::Util' => '<3000' },
requires_uninstall_if_installed => [ qw' CGI CGI::Util '],
requires_uninstall_if_installed( '<3000' );
requires_uninstall_if_installed( { CGI => '<3000', 'CGI::Util' => '<3000' } );
requires_uninstall_if_installed( [ qw' CGI CGI::Util '] );
我现在已上传Module::Build::CleanInstall
,希望解决此类问题。希望它有帮助。非常感谢Yanick和So-So-So-Op-Op-Openid-nonymity的灵感。