1

我尝试通过这个(官方)教程调整 hg:http: //dev.lshift.net/paul/mercurial-server/docbook.html

当我尝试:

sudo -u hg /usr/share/mercurial-server/refresh-auth

它说:

No section: 'paths'
Must be run as the 'hg' user

所以这是个问题

升级版:

解决方法,以及安装 mercurial-server 的真正教程:

在远程服务器上:

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

在本地主机上:

8) ssh -A <remote_hg_server_domain>

在远程服务器上:

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

我们得到

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'

解决:

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

效果很好

4

3 回答 3

1

最初的问题意味着您的 mercurial-server 安装处于混乱状态。创建“hg”用户后,安装脚本会在其主目录中放置一个名为“.mercurial-server”的配置文件。这个文件不知何故在你的系统上被删除了——也许你手动创建了“hg”用户?这就是为什么删除并重新安装所有修复的所有内容,因为它运行了安装脚本并创建了这个文件。

第二个问题只是“hg”用户无法读取您创建的“localhost”文件。777 给所有人写权限——永远不要那样做!文件 644 和目录 755 就足够了。看起来您将“umask”设置为异常限制的掩码。

于 2013-09-21T06:18:26.370 回答
0

Gentoo 用户可能会遇到同样的错误。我在这里找到了以下有用的建议:

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

mkdir /home/hg
chown -R hg:users /home/hg
chmod -R 700 /home/hg

以 hg 用户身份登录

sudo -s -u hg

确保您在 hg 的主目录中:

cd

并运行初始化脚本:

/usr/share/mercurial-server/init/hginit /usr/share/mercurial-server/

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

于 2016-02-04T18:08:29.480 回答
-1

sudo 手册页

-u user     The -u (user) option causes sudo to run the specified
            command as a user other than root.

因此,如果您运行sudo -u hg,则意味着“以名为的用户运行以下命令hg”。是的,这就是 mercurial-server 的工作原理

...开发人员在使用 SSH 连接到存储库主机时以“hg”用户身份登录...

不幸的是,“逐步”说明并没有告诉您创建一个名为 的用户hg,但这就是您需要做的。我不知道用户需要拥有什么权限。

或者,您可以尝试运行sudo /usr/share/mercurial-server/refresh-auth,看看是否可以访问正确的用户,因为它应该是。但这可能会在以后破坏,因为 mercurial-server 的其他部分将依赖于 user hg

于 2013-09-19T20:33:04.103 回答