web-dev-qa-db-ja.com

SnowLeopardでsvnserveを自動的に開始する

Snow Leopardを実行しているiMacにSubversionをインストールしましたが、svnserveを自動的に起動するのに問題があります。私が理解しているように(私はまだOSXにかなり慣れています)、それを行うための最良の方法は、launchdを利用することです。そのために、/ Library/LaunchDaemonsフォルダーに次の.plistファイルを作成しました。 launchctlを使用してこのファイルを実行すると、svnserveは期待どおりに起動しますが、システムの起動時またはログイン時に自動的に起動しません。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>org.tigris.Subversion.svnserve</string>
<key>UserName</key>
<string>Dave</string>
<key>ProgramArguments</key>
<array>
    <string>/opt/Subversion/bin/svnserve</string>
    <string>--inetd</string>
    <string>--root=/Users/Shared/SVNrep</string>
</array>
<key>ServiceDescription</key>
<string>Subversion Standalone Server</string>
<key>Sockets</key>
<dict>
    <key>Listeners</key>
    <array>
        <dict>
            <key>SockFamily</key>
            <string>IPv4</string>
            <key>SockServiceName</key>
            <string>svn</string>
            <key>SockType</key>
            <string>stream</string>
        </dict>
        <dict>
            <key>SockFamily</key>
            <string>IPv6</string>
            <key>SockServiceName</key>
            <string>svn</string>
            <key>SockType</key>
            <string>stream</string>
        </dict>
    </array>
</dict>
<key>inetdCompatibility</key>
<dict>
    <key>Wait</key>
    <false/>
</dict>
</dict>
</plist>

ここにいる誰かがこれを機能させる方法について何か提案をしてくれるなら、私は本当に感謝しています。

2
Cleggy

私が見つけたいくつかのオプション。

まず、 http://www.kashum.com/blog/1217783696 はplistメソッドの使用について説明していますが、使用しているよりも多くのオプションをxmlに指定しているようです。

次に、 http://www.scottboms.com/2007/03/launchsvnserveatstartup/ は、ビルド済みの作業用plistファイルを使用してLaunchDaemonsフォルダーにドロップし、指定されたパスを変更してから実行する方法について説明しています。

Sudo launchctl load /Library/LaunchDaemons/org.tigris.Subversion.plist

で動作していることを確認します

Sudo launchctl list

(または、svnを使おうとしています...)

1
gWaldo

launchdモードでinetdCompatibilityplistを作成していませんが、デーモンモードで実行中のプログラムを見つけました。KeepAliveNetworkStatetrueに設定されています。デーモンモードで実行する場合は、NetworkStateは依存関係をまったく行わないため、launchdを使用する必要があります。そのため、ほとんどの場合、デーモンはネットワークが起動する前に起動します。

だから、私はおそらく次のような/Library/LaunchDaemons/org.tigris.Subversion.svnserve.plistを試してみます:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
        <dict>
                <key>Label</key>
                <string>org.tigris.Subversion.svnserve</string>
                <key>ProgramArguments</key>
                <array>
                        <string>/opt/Subversion/bin/svnserve</string>
                        <string>-d</string>
                        <string>--root=/Users/Shared/SVNrep</string>
                </array>
                <key>RunAtLoad</key>
                <true/>
                <key>KeepAlive</key>
                <dict>
                    <key>NetworkState</key>
            <true/>
                </dict>
        </dict>
</plist>
1
morgant

このキーを追加してみてください

<key>RunAtLoad</key>
<true/>

(Disabled、Label、...キーと同じ「レベル」で

1
radius