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" ユーザーを作成しましたか? インストールスクリプトを実行してこのファイルを作成したため、すべてを削除して再インストールすると、すべてが修正されました。

2 つ目の問題は、作成した「localhost」ファイルを「hg」ユーザーが読み取れないという単純なものでした。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/hgrefresh-authコマンドが機能するようになります。

于 2016-02-04T18:08:29.480 に答える
-1

sudo の man ページから:

-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 に答える