Mercurial hg clone error - «abort: error: имя или служба неизвестна» - PullRequest
2 голосов
/ 07 июня 2010

Я установил последний пакет hg, доступный для Fedora Linux. Однако hg clone сообщает об ошибке.

hg clone http://localmachine001:8000/ repository

отчеты:

"abort: error: Name or service not known"

localmachine001 - компьютер в локальной сети. Я могу пропинговать его из своей коробки Linux без каких-либо проблем. Я также могу использовать тот же http-адрес и просматривать существующий код. Однако клон hg не работает.

Если я выполню ту же команду с моего компьютера Macintosh, я могу легко клонировать репозиторий.

Некоторые интернет-ресурсы рекомендуют отредактировать файл .hgrc и добавить к нему прокси:

[http_proxy]
host=proxy:8080

Я пробовал это без какого-либо успеха. Кроме того, я предполагаю, что в этом случае прокси-сервер не нужен, так как сервер hg находится в моей локальной сети.

Кто-нибудь может порекомендовать мне, что мне делать или как я могу отследить проблему?

Заранее спасибо.

Ответы [ 5 ]

4 голосов
/ 30 мая 2011

Запуск hg от имени root решил проблему для меня. Но до сих пор не знаю почему.

3 голосов
/ 07 июня 2010

Проблема (вероятно) в том, что ваш http-прокси не может:

  1. Разрешить localmachine
  2. Получите ваш (или localmachine) локальный IP-адрес, даже если он может преобразовать «localmachine» в ваш правильный локальный адрес.

Во-первых, убедитесь, что ничто на вашей стороне (iptables / NAT / firewall) не препятствует выходу или входу через порт прокси. Если это работает, если вы root, вот в чем проблема - работайте в обратном направлении.

Также возможно, что ваш прокси корректирует ответы от удаленной HG в достаточной степени, чтобы запутать Mercurial, но не ваш браузер. В любом случае, лучше всего обойти прокси, если HG находится в локальной сети (localhost / lan).

К счастью, директива [http_proxy] поддерживает обход прокси-сервера для определенных имен хостов, что идеально подходит для работы с вещами на одной стороне NAT или хостами, которые существуют только на одном компьютере (например, разрешаются с помощью / etc / hosts .) Это избавляет от необходимости редактировать .hgrc каждый раз, когда вам нужно изменить поведение.

См. документацию или просто сделайте ваш .hgrc похожим на это:

[http_proxy]
host=proxy:8080
no=localmachine,192.168.1.123,192.168.1.234,...,...

Действующей директивой, конечно, является no. Я не уверен, что вы можете использовать подстановочные знаки при указании хостов (я не использую функцию прокси, так что нет способа проверить это .. и это не указано в документации). Вы можете попробовать поэкспериментировать с этим, например. 192.168.1.* и дайте нам знать, если это также работает.

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

http_proxy

Used to access web-based Mercurial repositories through a HTTP proxy.

host
    Host name and (optional) port of the proxy server, for example "myproxy:8000".
no
    Optional. Comma-separated list of host names that should bypass the proxy.
passwd
    Optional. Password to authenticate with at the proxy server.
user
    Optional. User name to authenticate with at the proxy server.
2 голосов
/ 11 сентября 2014

Это случилось со мной, когда мои настройки DNS-сервера не были настроены. Попробуйте пропинговать хост удаленного репозитория и попробуйте пропинговать некоторый известный хост, например google.com. Если это не работает, исправьте настройки DNS.

1 голос
/ 05 июля 2016

Ошибка из-за DNS, добавьте запись в /etc/resolve.conf.

$ cat /etc/resolve.conf
search xyz.com abc.com   --> DOMAINS
nameserver 10.192.160.12 -->DNS1
nameserver 10.193.180.23 -->DNS2

Это позволяет получить доступ к локальной машине по имени, и, следовательно, клон будет успешным.

0 голосов
/ 07 июня 2010

Клонирование и веб-интерфейс используют точно такой же механизм, поэтому очень странно, что вы можете увидеть репо на http://localmachine001:8000/, но вы не можете клонировать его.

А как насчет попытки перейти на эту машину по IP-адресу? Что-то вроде hg clone http://192.168.0.4:8080 и посмотрите, что получится?

Больше подробностей с --debug?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...