我已经在我的MacBook Pro中使用Snow Leopard安装了MacPorts。我没有在那里明确安装perl,但我想它要么安装了默认的macports安装,要么安装为我安装的任何其他端口的依赖项。
我想用最新的稳定Perl版本升级Perl v5.8.9。无论它目前是哪一个(我看它是5.12.2)。所以,我的问题是如何使用新的macport完全替换旧的Perl。
sudo port upgrade perl5
会工作还是我还需要做其他事情。我只是想确保这是正确的命令,以避免搞砸我的macports安装。
答案 0 :(得分:5)
port upgrade packagename
是正确的形式,是的。
但我认为在这种情况下,它有点棘手。
查看perl5 portfile。它是一个包装器,仅仅依赖于perl 5.8。如果你只是sudo port upgrade perl5
,它将无法到达5.12。但是,perl5软件包有5.10和5.12的几种变体。您应该可以使用port variants perl5
在本地查看所有内容。
我不确定您是否可以将变体标记(在这种情况下为+perl5_12
)传递给port upgrade
,或者您是否需要在port install
之上执行新的sudo port deactivate perl5
sudo port install perl5 +perl5_12
你当前的安装。甚至,恐怖的恐怖,在安装变体之前卸载当前的包。
整个变种机制是一个错误,恕我直言。这是一个有趣且有价值的实验,但我们从中学到了这个实验是一个坏主意。
编辑:我认为您可以为已安装的端口添加变体;你似乎不得不说:
{{1}}
答案 1 :(得分:4)
在安装perl5.8
之前,您需要先卸载perl5.12
:
sudo port deactivate perl5.8
sudo port uninstall perl5.8
sudo port install perl5 +perl5_12
注意:如果卸载perl5.8
失败,您可以通过
sudo port uninstall -f perl5.8
警告:此可能会破坏其他软件包的依赖关系。
但到目前为止,它完成了perl
(对我来说)的工作:
% perl -v
This is perl 5, version 12, subversion 2 (v5.12.2) built for darwin-multi-2level
答案 2 :(得分:0)
我从Perl 5.26迁移到5.28时是这样做的:
myStoreDataFormula: {
bind:{
bindTo:'{employeeDetails.selection}',
deep:true
},
get: function(employee){
if(employee!=null){
var empArray = [];
empArray.push(employee.data);
return empArray;
}
}
}
添加$ sudo vi /opt/local/etc/macports/variants.conf
(允许使用emacs:-)+perl5_28
升级perl,git等,使其位于新版本的顶部$ port depend perl5.26 | awk '!/p5.26/ { print $1 }' | xargs sudo port install
消除了Perl 5.26。