Os pacotes pip de instalação do Vagrant Idêntico são diferentes?

1

Eu tenho uma VM vagante sendo provisionada via Puppet. Estou testando isso em dois Ubuntus diferentes, 12.04 e 13.10, ambos usando a caixa "padrão" precis32. O aplicativo que estou testando é um aplicativo Django sendo instalado usando o setuptools do Python (fazendo pip install /vagrant ). Usando 13.10 como o host, a VM parece provisionar muito bem.

No entanto, no dia 12.04, algumas regras posteriores do Puppet começam a falhar, dependendo do meu script 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'

Então parece que em todas as minhas coisas eu posso remover o pkg_resources import e código em torno disso, mas eu odeio deixar o sistema em um estado onde tudo o que é preciso é uma importação para travar um aplicativo. O que parece é que tudo que o setuptools instala, exceto os arquivos *.pyc , não tem permissões de leitura para que usuários sem privilégios possam usá-los.

Eu tentei descartar algumas coisas:

  • Em ambas as distro estou usando a abençoada versão do vagrant do Ubuntu (1.0.1). Às vezes as coisas podem ser tão antigas no 12.04 que simplesmente não funcionam direito, então eu tentei atualizar o sistema host para o Vagrant 1.2.2 (que é o que o 13.10 usa). Isso não parece afetar nada.
  • Eu tentei atualizar a VM para o último pip via PyPI. Sem efeito.
  • Curiosamente, se eu shell para a VM e pip install algo as permissões são definidas como seria de esperar, então parece que tem algo a ver com Puppet ou Vagrant.
  • Eu li as correções de bugs entre as versões vagabundas, mas não encontrei nada aplicável.
  • As únicas grandes diferenças de site que posso imaginar entre esses dois sistemas é que o sistema 12.04 tem umask mais bloqueada, de modo que o grupo e outros não tenham leitura / gravação. Eu não tenho ideia de como isso levaria para a VM embora.
  • Curiosamente, são apenas as dependências que apresentam esse problema. O aplicativo principal parece estar bem ... (editar: bem, as fontes são OK, mas o top_level.txt e arquivos relacionados não são)

Alguma opinião sobre isso? Não será relevante em breve, já que estaremos mudando para 14,04 em alguns meses, mas seria bom se funcionasse nesse meio tempo.

Aqui está a regra que instala o aplicativo (e dependências):

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

0 respostas