首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mercurial-server说:没有部分:“路径”必须以“hg”用户的身份运行。

mercurial-server说:没有部分:“路径”必须以“hg”用户的身份运行。
EN

Stack Overflow用户
提问于 2013-09-19 17:53:12
回答 3查看 413关注 0票数 1

我试着通过以下(官方)教程:http://dev.lshift.net/paul/mercurial-server/docbook.html来优化hg

当我尝试:

代码语言:javascript
复制
sudo -u hg /usr/share/mercurial-server/refresh-auth

上面写着:

代码语言:javascript
复制
No section: 'paths'
Must be run as the 'hg' user

所以这是个问题

UPD:

解决方法,以及安装mercurial服务器的真正教程:

在远程服务器上:

代码语言:javascript
复制
0) save your repos to homedir
1) <username>@<remote_server>:$ sudo apt-get purge mercurial mercurial-server
2) <username>@<remote_server>:$ sudo userdel -r hg
3) <username>@<remote_server>:$ sudo rm -r /var/lib/mercurial-server
4) <username>@<remote_server>:$ sudo rm -r /etc/mercurial-server
5) <username>@<remote_server>:$ sudo rm -r /usr/share/mercurial-server
6) <username>@<remote_server>:$ sudo apt-get install mercurial mercurial-server
7) <username>@<remote_server>:$ exit

关于本地主机:

代码语言:javascript
复制
8) ssh -A <remote_hg_server_domain>

在远程服务器上:

代码语言:javascript
复制
9) <username>@<remote_server>:$ ssh-add -L > id_rsa.pub
10) <username>@<remote_server>:$ sudo mkdir -p /etc/mercurial-server/keys/root/<username>
11) <username>@<remote_server>:$ sudo cp my-key /etc/mercurial-server/keys/root/<username>/localhost (if you work from local terminal)
12) <username>@<remote_server>:$ sudo -u hg /usr/share/mercurial-server/refresh-auth - OOPS

我们会得到

代码语言:javascript
复制
Traceback (most recent call last):
  File "/usr/share/mercurial-server/refresh-auth", line 22, in <module>
    refreshauth.refreshAuth()
  File "/usr/share/mercurial-server/mercurialserver/refreshauth.py", line 49, in refreshAuth
    kf = open(ffn)
IOError: [Errno 13] Permission denied: '/etc/mercurial-server/keys/root/<username>/localhost'

解决办法:

代码语言:javascript
复制
13) <username>@<remote_server>:$ sudo chmod 644 /etc/mercurial-server/keys/root/<username>/localhost
14) <username>@<remote_server>:$ sudo -u hg /usr/share/mercurial-server/refresh-auth
15) <username>@<remote_server>:$ sudo chmod 600 /etc/mercurial-server/keys/root/<username>/localhost

效果很好

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-21 06:18:26

最初的问题意味着您的mercurial服务器安装已经陷入混乱状态。在创建"hg“用户之后,安装脚本将名为”..mercurial server“的配置文件放置在其主目录中。这个文件以某种方式在你的系统上被删除了--也许你手工创建了"hg“用户?这就是为什么删除和重新安装所有固定的东西,因为它运行安装脚本并创建了这个文件。

第二个问题只是"hg“用户无法读取您创建的"localhost”文件。777给所有的写权限--永远不要这样做!644对文件,755对于目录就足够了。看起来,您的"umask“设置为一个非常严格的掩码。

票数 1
EN

Stack Overflow用户

发布于 2016-02-04 18:08:29

Gentoo用户可以获得相同的错误。我发现了以下有用的建议:这里

检查/home是否为/home/hg,如果它不存在,您可以创建它(根下):

代码语言:javascript
复制
mkdir /home/hg
chown -R hg:users /home/hg
chmod -R 700 /home/hg

以hg用户身份登录

代码语言:javascript
复制
sudo -s -u hg

确保您在hg的主目录中:

代码语言:javascript
复制
cd

并运行初始化脚本:

代码语言:javascript
复制
/usr/share/mercurial-server/init/hginit /usr/share/mercurial-server/

这将在/home/hg下创建必要的文件和目录,refresh-auth命令现在应该可以工作了。

票数 0
EN

Stack Overflow用户

发布于 2013-09-19 20:33:04

来自数独手册页

代码语言:javascript
复制
-u user     The -u (user) option causes sudo to run the specified
            command as a user other than root.

因此,如果您运行sudo -u hg,这意味着“以名为hg的用户的身份运行以下命令”。是的,这就是mercurial服务器的工作方式

...developers以"hg“用户身份登录,当他们使用SSH连接到存储库主机时.

不幸的是,“一步一步”的指令没有告诉您创建一个名为hg的用户,但这正是您需要做的。我不知道用户需要什么权限。

或者,您可以尝试运行sudo /usr/share/mercurial-server/refresh-auth,并查看它是否提供了对适当用户(如它应该是 )的访问。但这很可能会在稍后出现故障,因为mercurial服务器的其他部分将依赖于用户hg

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18901715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档