我尝试通过这个(官方)教程调整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
所以这是一个问题
UPD:
解决方法,以及安装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
on localhost:
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
效果很好
答案 0 :(得分:1)
最初的问题意味着您的mercurial-server安装进入了混乱的状态。创建“hg”用户后,安装脚本会在其主目录中放置一个名为“.mercurial-server”的配置文件。这个文件以某种方式被删除了你的系统 - 也许你手动创建了“hg”用户?这就是为什么删除并重新安装所有修复的东西,因为它运行安装脚本并创建了这个文件。
第二个问题只是“hg”用户无法读取您创建的“localhost”文件。 777给予所有人写入权限 - 永远不要这样做!文件644和目录755就足够了。看起来你的“umask”设置为一个异常限制的掩码。
答案 1 :(得分:0)
Gentoo用户可能会收到同样的错误。我找到了以下有用的建议here:
检查/home
/home/hg
,如果它不存在,您可以创建它(在root下):
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
命令现在可以正常工作。
答案 2 :(得分:-1)
-u user The -u (user) option causes sudo to run the specified
command as a user other than root.
因此,如果您运行sudo -u hg
,则表示“以名为hg
的用户运行以下命令”。是的,that's how mercurial-server works:
...开发人员在使用SSH ...
连接到存储库主机时以“hg”用户身份登录
不幸的是,“一步一步”说明并没有告诉您创建名为hg
的用户,但这就是您需要做的事情。我不知道用户需要具有哪些权限。
或者,您可以尝试运行sudo /usr/share/mercurial-server/refresh-auth
,并查看是否可以访问正确的用户it's supposed to。但是这可能会在以后破坏,因为mercurial-server的其他部分将依赖于用户hg
。