Помогите запустить Mercurial в Media Temple (gs)

Я установил Mercurial в соответствии с файлом базы знаний MT здесь.

Работа с ним на стороне сервера с использованием ssh с моего Mac работает нормально. Я могу инициализировать репозитории и тому подобное, но извлечение с сервера или отправка с моего Mac приводит к ошибке, которую я не понимаю.

Вот что я получаю, когда вызываю hg push из моей локальной установки (решетка представляет номер моего сервера):

remote: Traceback (most recent call last):
remote:   File "/home/#####/users/.home/data/mercurial-1.5/hg", line 27, in ?
remote:     mercurial.dispatch.run()
remote:   File "/nfs/c05/h01/mnt/#####/data/mercurial-1.5/mercurial/dispatch.py", line 16, in run
remote:     sys.exit(dispatch(sys.argv[1:]))
remote:   File "/nfs/c05/h01/mnt/#####/data/mercurial-1.5/mercurial/dispatch.py", line 21, in dispatch
remote:     u = _ui.ui()
remote:   File "/nfs/c05/h01/mnt/#####/data/mercurial-1.5/mercurial/ui.py", line 38, in __init__
remote:     for f in util.rcpath():
remote:   File "/nfs/c05/h01/mnt/#####/data/mercurial-1.5/mercurial/util.py", line 1200, in rcpath
remote:     _rcpath = os_rcpath()
remote:   File "/nfs/c05/h01/mnt/#####/data/mercurial-1.5/mercurial/util.py", line 1174, in os_rcpath
remote:     path = system_rcpath()
remote:   File "/nfs/c05/h01/mnt/#####/data/mercurial-1.5/mercurial/posix.py", line 41, in system_rcpath
remote:     path.extend(rcfiles(os.path.dirname(sys.argv[0]) +
remote:   File "/nfs/c05/h01/mnt/#####/data/mercurial-1.5/mercurial/posix.py", line 30, in rcfiles
remote:     rcs.extend([os.path.join(rcdir, f)
remote:   File "/nfs/c05/h01/mnt/#####/data/mercurial-1.5/mercurial/demandimport.py", line 75, in __getattribute__
remote:     self._load()
remote:   File "/nfs/c05/h01/mnt/#####/data/mercurial-1.5/mercurial/demandimport.py", line 47, in _load
remote:     mod = _origimport(head, globals, locals)
remote: ImportError: No module named osutil
abort: no suitable response from remote hg!

Mercurial на моем Mac настроен следующим образом

[ui]
username = John Smith
editor = te -w
remotecmd = ~/data/mercurial-1.5/hg

Мое локальное единственное репо настроено следующим образом (решетка представляет номер моего сервера):

[paths]
default = ssh://mysite.com@s#####.gridserver.com/domains/mysite.com/html

Mercurial на сервере настроен только с именем пользователя:

[ui]
username = John Smith

Сервер .bash_profile настроен следующим образом (согласно руководству по установке):

# Added this as suggested by the MediaTemple guide
export PYTHONPATH=${HOME}/lib/python:$PYTHONPATH
export PATH=${HOME}/bin:$PATH

Я понимаю, что это, вероятно, не проблема MediaTemple, а скорее проблема установки. Я был бы очень признателен за любую помощь в этом. Заранее спасибо!


person bschaeffer    schedule 07.04.2010    source источник


Ответы (2)


Ваша установка mercurial не завершена, вы не скомпилировали модуль osutil (где-то должен быть osutil.so).

person tonfa    schedule 07.04.2010
comment
Спасибо за быстрый ответ. Я ищу любую документацию, которая могла бы указать мне, где исправить эту проблему, но я просто не могу ее найти. Любые идеи? Я действительно не так хорош в отладке такого типа вещей. - person bschaeffer; 08.04.2010
comment
@bschaeffer hg debuginstall на сервере. - person tonfa; 08.04.2010

@тонфа,

hgdebuginstall не выдавал ошибок, поэтому проблема, с которой я столкнулся, была такой странной.

Благодаря вашему ответу я немного покопался и нашел модуль в ~/lib/python/mercurial, поэтому я скопировал файл osutil.so в мой каталог ~data/mercurial-1.5/mercurial, и это было так... но все больше и больше модулей не могли быть найдены, поэтому я решил скопировать все содержимое одного каталога в другой, например:

$ rm -R ~/data/mercurial-1.5/mercurial/*
$ cp -r ~/lib/python/mercurial/* ~/data/mercurial-1.5/mercurial

Теперь все работает нормально. Я не понимаю, почему кажется, что mercurial был установлен в двух каталогах, или почему один каталог (~/data/mercurial-1.5/mercurial) не получил те же файлы, что и другой (~/lib/python/mercurial).

Во всяком случае, это решение, которое я придумал. Если вы (или кто-либо другой) можете придумать что-то более элегантное, я буду прислушиваться, но как есть... это работает для меня.

Спасибо за ваше время.

person bschaeffer    schedule 11.04.2010