Chinaunix

标题: 编译安装Perl6 [打印本页]

作者: py    时间: 2014-04-24 19:13
标题: 编译安装Perl6
本帖最后由 py 于 2014-04-30 13:53 编辑

我个人对perl6一直没什么兴趣,直到听说最近Larry到北京演示了一下perl6运行在不同的平台上,再加上前几天受扶凯鼓动,今天下午就做了这么个环境运行了一下。看了一下features,很不错的样子,又看了一下目前perl6的模块,还是比较少。但山雨欲来风满楼,我感觉,perl6应该能火。

开始说编译,编译还是挺顺利的,前后也就10分钟左右。
Perl6可以运行在jvm,parrot和MoarVM上,parrot上的性能最差,本人格外讨厌JAVA,所以只编译MoarVM。
如果是jvm的话,要求jvm1.7以上。目前perl6的开发人员说还没有针对jvm做优化,所以在MoarVM上的运行效率是最高的。并且perl6的开发人员都是用MoarVM
先编译MoarVM,用的是MoarVM-2014.01.tar.gz(https://github.com/MoarVM/MoarVM/archive/2014.01.tar.gz
perl Configure.pl --prefix=/usr/local/
make
make install

然后是nqp,https://github.com/perl6/nqp/archive/2014.01.tar.gz
perl Configure.pl --backends=moar --prefix=/usr/local/
make
make install

最后是rakudo(perl6的编译器),https://github.com/rakudo/rakudo/archive/2014.01.tar.gz
perl Configure.pl --backends=moar --prefix=/usr/local/
make
make install

安装好以后会在/usr/local/bin/下生成perl6文件
另外要注意,Rakudo官网上那个Rakudo Star Release实在是坑爹,就是把所有安装包打了个包,并且平台只支持jvm和parrot。不支持MoarVM。

我的平台是centos6.5 x64,但实际上什么平台都应该差不多。除了big endian的平台MoarVM可能会有些问题。大家要是图省事可以直接装扶凯的二进制包。


===============4月30日更新==================
4月最新的三个包下载地址
MoarVM
https://github.com/MoarVM/MoarVM/archive/2014.04.tar.gz
nqp
https://github.com/perl6/nqp/archive/2014.04.tar.gz
rakudo
https://github.com/rakudo/rakudo/archive/2014.04.tar.gz

目前发现的问题是MoarVM4月的打包中,目录3rdparty中缺少一些地方放的库,dyncall,libuv和linenoise目录是空的,可以把2014.01.tar.gz中的相应文件拷贝过来就可以了。
作者: Monox    时间: 2014-04-24 19:38
回复 1# py


   不,Rakudo Star Release不仅仅是你上面提到的几个安装包的打包,它也包含一些现在可以使用的预装的Perl 6 的模块和一些Perl 6 的文档之类,也包括一个用来安装Perl 6 模块的工具(叫做panda)。
相比Linux来说,rakudo对应Linux内核,Rakudo star release 对应Linux发行版。相对于Haskell来说,rakudo对应ghc,Rakudo Star 对应Haskell Platform。
而Rakudo Star 不包含MoarVM,是因为MoarVM是一个新项目,之前有些spec test没有通过,所以之前没有发布包含这个的Rakudo Start。不过,开发团队打算尽量在下个版本的Rakudo Start中提供所有三个后端,而且下个版本的Rakudo Start应该快出来了。
作者: ttcn_cu    时间: 2014-04-25 07:41
如果以前用编译方式装过旧的,怎么把之前的删干净?
作者: py    时间: 2014-04-25 08:35
ttcn_cu 发表于 2014-04-25 07:41
如果以前用编译方式装过旧的,怎么把之前的删干净?

你把/usr/local/lib/perl5/目录下的site_perl和5.×.×手工删除掉就可以了,其他的覆盖。之后就不会有问题。

如果是想把所有文件一个不少的全删除,绝大多数情况对于编译安装的软件是不可能。这是包管理器的工作之一。
作者: Monox    时间: 2014-04-25 08:58
回复 4# py

1. 我想,他说的是如何删掉旧的Perl 6,而不是Perl 5,因为本楼的主题是Perl 6。
2. 对于自己安装的软件又想彻底删干净,又想不用包管理器的,安装的时候不要指定--prefix=/usr/local或者/usr,指定成专为那个软件准备的目录,再配置一些环境变量。像我经常自己从源代码安装各种软件的不同版本,而且都装在自己的目录下。
例子,我建了一个目录,把那个路径名设成了环境变量$SOFT,我安装ghc-7.6.2的时候我的--prefix=$SOFT/ghc-7.6.2,装ghc-7.8.2的时候我的--prefix=$SOFT/ghc-7.8.2,我可以换用这两个的任何一个,当我不再需要ghc-7.6.2的时候我直接删掉$SOFT/ghc-7.6.2这样会彻底删除ghc-7.6.2。
当然用这种方式需要知道一些常用的环境变量的配置方法,像PATH, MANPATH,还有根据需要的其他环境变量。
   
作者: py    时间: 2014-04-25 10:16
回复 5# Monox
我把“旧的”当成perl5了...

可你这样解释也没什么意义吧,用--prefix谁都知道,如果他装的时候指定了一个特殊目录也就没必要有此一问了。显然他是已经装在了一个希望能清理干净的目录。

除非有make uninstall或是根据log逐一删除文件了。


   
作者: Monox    时间: 2014-04-25 10:44
回复 6# py

嗯,是这样的。make uninstall的话需要有旧版软件的源代码。而且确实并不是所有软件都提供make uninstall。

不过,并不像你说的每个人都会--prefix的,每个人都有从新手到熟手的过程。你认为理所当然或者很简单的事情对别人来说并不一定是如此。所以我觉得我这里提--prefix虽然解决不了他已经安装的旧软件的问题,但是对他以后安装软件是有帮助的,所以(我认为)是有必要提到的。
因为一般人按照网上的资料编译软件都指定--prefix=/usr/local,但是他们并不真正理解这个--prefix可以当作一个技巧的。像我安装软件就从来不会指定--prefix=/usr或者--prefix=/usr/local从来都是指定在我的home目录下的某个路径下面,除非是构建LFS系统的时候。
其实软件管理有很多种方案,除了rpm之类的包管理器外,指定特定的--prefix也是可行的方案之一,这个其实在LFS的手册里也有提及的。
   
作者: ttcn_cu    时间: 2014-04-25 11:54
回复 7# Monox


    我有一个目录是 ~/local 所有编译安装的软件都会指定 --prefix=/home/ID/local
这样只要设置 PATH=~/local/binPATH  就能自动用安装目录里的东西了,问题是多个软件安装在一起,就不能区分不同的软件
作者: ttcn_cu    时间: 2014-04-25 11:55
谁做一个perl6brew?
作者: iakuf    时间: 2014-04-25 14:55
回复 9# ttcn_cu


装个我打包的 Perl6 的 rpm 包就好了.上面什么删除原来安装的 Perl 6 之类的问题都没有了.

   
作者: ttcn_cu    时间: 2014-04-25 15:36
回复 10# iakuf


    我是在Macbook上装的,没法装RPM 把
作者: wxlfh    时间: 2014-04-28 10:38
Windows平台可以编译安装么?
作者: py    时间: 2014-04-28 13:17
回复 12# wxlfh

根据文档的说明。可以。

但我没在win上试过
   
作者: wxlfh    时间: 2014-04-29 18:05
给个地址吧,谢谢
py 发表于 2014-04-28 13:17
回复 12# wxlfh

根据文档的说明。可以。

作者: py    时间: 2014-04-30 07:59
回复 14# wxlfh

用这个现成的吧http://rakudo.org/downloads/star/
也省得编译了,现阶段win下用JVM就好了
   
作者: py    时间: 2014-05-01 13:58
从新编译安装了一下2014.04,一下是测试结果:
  1. 2014.01
  2. $ time perl6 -e 'my $s; for 1..10000 {$s+=1/$_**2};say $s'
  3. 1.644834

  4. real    0m2.066s
  5. user    0m1.955s
  6. sys     0m0.111s

  7. 2014.04
  8. $ time perl6 -e 'my $s; for 1..10000 {$s+=1/$_**2};say $s'
  9. 1.64483407184807

  10. real    0m1.267s
  11. user    0m1.162s
  12. sys     0m0.103s

  13. perl5.18.2
  14. $ time perl -E 'my $s; for (1..10000) {$s+=1/$_**2};say $s'
  15. 1.64483407184807

  16. real    0m0.007s
  17. user    0m0.005s
  18. sys     0m0.002s
复制代码

作者: wxlfh    时间: 2014-05-02 22:01
本帖最后由 wxlfh 于 2014-05-02 22:01 编辑

回复 16# py 看来现阶段Perl6的效率不高,估计接下来相当长的时间内是性能调优


   
作者: Monox    时间: 2014-05-06 12:16
大家关心已久的Rakudo Star Release 2014.04已经发布了
This is the first Rakudo Star release with support for the MoarVM backend (all module tests pass on supported platforms) along with experimental support for the JVM backend (some module tests fail).
作者: sjdy521    时间: 2014-05-06 18:14
回复 12# wxlfh


    windows上用cygwin的setup就好了,很方便
作者: rongchaogao    时间: 2014-05-06 23:11
看到Perl6要火,要速度加快翻译了!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2