Назад | Перейти на главную страницу

Пакеты пакетов установки идентичных Vagrant VM отличаются?

У меня есть бродячая виртуальная машина, которая настраивается через Puppet. Я тестирую это на двух разных Ubuntus, 12.04 и 13.10, оба с использованием «стандартного» блока precision32. Приложение, которое я тестирую, представляет собой приложение Django, устанавливаемое с помощью инструментов настройки Python (путем выполнения pip install /vagrant). Используя 13.10 в качестве хоста, виртуальная машина, похоже, отлично справляется.

Однако 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 import и код вокруг этого, но я ненавижу оставлять систему в состоянии, когда все, что требуется, - это импорт, чтобы вывести приложение из строя. Похоже, что все установки setuptools, кроме *.pyc files, не имеет разрешений на чтение, поэтому их могут использовать непривилегированные пользователи.

Я пытался исключить несколько вещей:

Есть мысли по этому поводу? Это не будет актуально в ближайшее время, так как через несколько месяцев мы перейдем на 14.04, но было бы неплохо, если бы тем временем он работал.

Вот правило, устанавливающее приложение (и зависимости):

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