注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

蜻蜓点水 举重若轻

君子终日乾乾

 
 
 

日志

 
 

在 64 位 ubuntu 上使用 pypy-jit  

2010-07-13 10:53:15|  分类: Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

其实这篇文章应该叫 “在 64位 linux 上使用 32位程序”。事实上在开源世界,代码都是可以跨平台编译的,这种愿望并不很强烈。而 pypy-jit 是一个例外。

这里提供一种在 64位平台上运行 pypy-jit 的思路。chroot 是一种比较简单的方法,不太熟悉 chroot 的朋友可以按照这篇文章进行部署。

首先使用 debootstrap 建立 ia32 root。这里使用了 163 lucid 的仓库。

$ sudo apt-get install debootstrap
$ sudo debootstrap --arch i386 lucid /opt/lucid-i386 http://mirrors.163.com/ubuntu/

这需要一定时间。然后复制一些需要的文件到 ia32 root,这里也复制了一些用户文件,这样你就可以在 32位系统上使用当前主机上的帐号了。

$ sudo cp /etc/apt/sources.list /opt/lucid-i386/etc/apt/
$ sudo cp /etc/passwd /opt/lucid-i386/etc/
$ sudo cp /etc/shadow /opt/lucid-i386/etc/
$ sudo cp /etc/group /opt/lucid-i386/etc/
$ sudo cp /etc/sudoers /opt/lucid-i386/etc/

在 32 位系统上挂接一些需要的目录,然后 chroot 到 32位系统,进行更新。

$ sudo mount --bind /home /opt/lucid-i386/home
$ sudo mount --bind /tmp /opt/lucid-i386/tmp
$ sudo mount --bind /dev /opt/lucid-i386/dev
$ sudo chroot /opt/lucid-i386
# mount -t proc none /proc
# mount -t sysfs none /sys
# mount -t devpts none /dev/pts
# apt-get update
# apt-get upgrade

你现在已经以 root 身份进入了 32位系统,安装 pypy 需要的 libexpat1 包。然后下载一个 pypy-jit 的预编译包放到 opt 目录下。

# apt-get install libexpat1 wget
# cd /opt
# sudo wget http://pypy.org/download/pypy-1.3-linux.tar.bz2 -O- | tar -xjf -

现在退出 32位系统。

# exit

为方便在 64位主机上直接调用这个 32位的 pypy-jit 程序下面进行一些配置。

$ sudo apt-get install dchroot
$ sudo vi /etc/schroot/schroot.conf

编辑 schroot.conf 的内容如下。

[ia32]
aliases=default
command-prefix=
description=ia32 chroot (dchroot 兼容性)
directory=/opt/lucid-i386
environment-filter=^(BASH_ENV|CDPATH|ENV|HOSTALIASES|IFS|KRB5_CONFIG|KRBCONFDIR|KRBTKFILE|KRB_CONF|LD_.*|LOCALDOMAIN|NLSPATH|PATH_LOCALE|RES_OPTIONS|TERMINFO|TERMINFO_DIRS|TERMPATH)$
groups=
personality=linux
priority=0
root-groups=
root-users=
script-config=script-defaults
type=plain
users=你的用户名,多个用户名用逗号分开

建立 32位 pypy-jit 的 “快捷方式”。

$ mkdir ~/bin
$ cd ~/bin
$ vi pypy

编辑文件内容如下。

#!/bin/sh
exec dchroot -c ia32 -d -q "/opt/pypy-1.3/bin/pypy" "$@"

尝试执行 pypy-jit 。

$ pypy
Python 2.5.2 (75551, Jun 24 2010, 05:12:10) [PyPy 1.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
And now for something completely different: ``Every time someone argues with
"Smalltalk has always done X", it is always a good hint that something needs to
be changed fast. - Marcus Denker''
>>>> import platform
>>>> platform.platform()
'Linux-2.6.32-23-generic-x86_64-with-debian-squeeze-sid'
>>>> platform.architecture()
('32bit', 'ELF')

种种迹象表明 pypy 很快将获得进入生产领域的足够能力,对常规公司而言确实如此。而很多充满信心的技术人员则在生产环境中使用 pypy 这一族技术已经很久了。我相信 pypy-jit 登陆 64位平台已可预期,在不远的将来。而在此之前,即便是 64位的服务器,我们也已经迫不及待地准备在项目中尝试 pypy-jit 了。

参考资料 Ubuntu AMD64 Howto

  评论这张
 
阅读(6403)| 评论(3)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017