我试着通过以下(官方)教程:http://dev.lshift.net/paul/mercurial-server/docbook.html来优化hg
当我尝试:
sudo -u hg /usr/share/mercurial-server/refresh-auth上面写着:
No section: 'paths'
Must be run as the 'hg' user所以这是个问题
UPD:
解决方法,以及安装mercurial服务器的真正教程:
在远程服务器上:
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效果很好
发布于 2013-09-21 06:18:26
最初的问题意味着您的mercurial服务器安装已经陷入混乱状态。在创建"hg“用户之后,安装脚本将名为”..mercurial server“的配置文件放置在其主目录中。这个文件以某种方式在你的系统上被删除了--也许你手工创建了"hg“用户?这就是为什么删除和重新安装所有固定的东西,因为它运行安装脚本并创建了这个文件。
第二个问题只是"hg“用户无法读取您创建的"localhost”文件。777给所有的写权限--永远不要这样做!644对文件,755对于目录就足够了。看起来,您的"umask“设置为一个非常严格的掩码。
发布于 2016-02-04 18:08:29
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命令现在应该可以工作了。
发布于 2013-09-19 20:33:04
来自数独手册页
-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。
https://stackoverflow.com/questions/18901715
复制相似问题