相同的Vagrant VM安装pip包的方式不同吗?

我有一个stream浪虚拟机通过Puppet供应。 我正在testing这两个不同的Ubuntus,12.04和13.10,都使用“标准”precise32框。 我正在testing的应用程序是使用Python的setuptools(通过执行pip install /vagrantpip install /vagrant的Django应用程序。 使用13.10作为主机,虚拟机似乎configuration得很好。

然而在12.04,一些后来的Puppet规则开始失败,取决于我的manage.py脚本:

 vagrant@precise32:~$ sudo -u buffet ~buffet/project/manage.py collectstatic Traceback (most recent call last): File "/home/buffet/project/manage.py", line 11, in <module> import settings File "/home/buffet/project/settings.py", line 3, in <module> import pkg_resources File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2727, in <module> add_activation_listener(lambda dist: dist.activate()) File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 700, in subscribe callback(dist) File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2727, in <lambda> add_activation_listener(lambda dist: dist.activate()) File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2227, in activate self.insert_on(path) File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2334, in insert_on self.check_version_conflict() File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2373, in check_version_conflict for modname in self._get_metadata('top_level.txt'): File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2221, in _get_metadata for line in self.get_metadata_lines(name): File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1209, in get_metadata_lines return yield_lines(self.get_metadata(name)) File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1201, in get_metadata return self._get(self._fn(self.egg_info,name)) File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1316, in _get stream = open(path, 'rb') IOError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/Pygments-1.6.egg-info/top_level.txt' 

所以它看起来像我所有的东西,我可以删除pkg_resources导入和代码,但我讨厌离开系统所需的一切是导致崩溃的应用程序的状态。 看起来像是一切setuptools安装,除了*.pyc文件,没有读取权限,以便无特权的用户可以使用它们。

我试图排除一些事情:

  • 在这两个发行版中,我使用的是Ubuntu的有福的版本(1.0.1)。 有时候事情可能会在12.04这么老,他们只是不能正常工作,所以我尝试升级主机系统Vagrant 1.2.2(这是13.10使用)。 这似乎没有影响任何东西。
  • 我尝试通过PyPI升级虚拟机到最新的点子。 没有效果。
  • 有趣的是,如果我shell虚拟机和pip install东西的权限设置为我所期望的,所以它似乎有什么与木偶或stream浪者。
  • 我读了stream浪汉版本之间的错误修正,但找不到任何适用的东西。
  • 在这两个系统之间,我能想到的唯一主要的网站差异是12.04系统有一个更locking的umask,所以组和其他组没有读/写。 我不知道这将如何进入虚拟机。
  • 有趣的是,这只是有这个问题的依赖 。 主要的应用程序似乎是好的…(编辑:好吧,来源是好的,但top_level.txt和相关的文件不是)

对此有何想法? 几个月后,我们将会转移到14.04,但这不会很有意义,但如果在此期间有效,它会很好。

这是安装应用程序(和依赖)的规则:

 exec{'buffet::install library': path => "/usr/bin", command => "pip install /vagrant", notify => [ Exec['buffet::collect static'], Exec['buffet::generate hookenv'], Service['uwsgi'], ], }