web-dev-qa-db-ja.com

SVNNotifyどこにありますか?どうすれば見つけられますか?

私はubuntuにいます。

まず最初に、コミット後のスクリプトを実行しています。実行するには、svnnotifyへのパスが必要です。私が読んでいるturotialのパスは/usr/local/bin/svnnotifyですが、コンピューターのその場所には何もありません。とにかく試してみましたが、次のようなものがあります。

Warning post-commit hook failed: not found

したがって、/usr/local/bin/svnnotifyをsvnnotifyの正しいパスに置き換える必要があると思います。さて、私はsvnnotifyを検索(Places>Search for Files)しましたが、何も表示されません。

コマンドラインを開いてsvnnotifyを実行すると、必要なパス引数がないことがわかるため、svnnotifyがインストールされていることがわかります。

では、ファイルシステムのどこにも存在しない場合、どのようにインストールできますか?

Linuxがどのように機能するのか、私には非常に新しいので、私は本当に知りません。

足りないものはありますか?

更新

ファイルを次のように更新しました。

#!/bin/bash

REPOS="$1"
REV="$2"

/usr/bin/svnnotify --repos-path "$REPOS" --revision "$REV" --subject-cx --with-diff --handler HTML::ColorDiff --to [email protected] --from [email protected]

実行可能にしました。

私はそれをそのように実行します:

myuser @ linux-server:/ usr/local/svn/svn_repo/hooks $ post-commit/usr/local/svn/svn_repo 9

私はこれを出力として取得します:

コミット後:コマンドが見つかりません

3
JD Isaacks

/usr/localは、「自分でインストールしたもの」の従来のLinux/Unixの場所です。ソースからコンパイルしてインストールする場合、通常は/usr/localがメインのインストールディレクトリとして使用されます。実行可能ファイルは/usr/local/binに、ライブラリは/usr/local/libに配置されます。

ディストリビューションのパッケージリポジトリからのものをインストールする場合、それらのファイルは別の場所に配置されます。 /usrは一般的なシステムインストールディレクトリであるため、パッケージマネージャーが適切なパッケージを持っているか取得できる場合は、/usr/bin/usr/libなどにインストールされます。

あなたはチュートリアルへのリンクを与えていないので、あなたが何を試したか、またはこれがチュートリアルの指示とどのように矛盾するかはわかりません。しかし、あなたはプログラムsvnnotifyを探しています。すでにインストールされていることが確実な場合は、次のことを試してください。

  1. whichを実行して、システムがコマンドをすでに認識しているかどうか、およびコマンドがどこにあるかを確認します。

    $ which svnnotify
    /usr/bin/svnnotify
    

    それでも見つからない場合は、PATHにsvnnotifyというコマンドはありませんが、システムのどこかにPATHにないコマンドがある可能性があります。

  2. locate svnnotifyで確認してください。

    $ locate svnnotify
    /usr/example/bin/svnnotify
    /usr/bin/svnnotify
    /usr/share/svnnotify/foo
    ...
    

    svnnotifyを最初からインストールした場合、パッケージマネージャーはそれがどこにあるかわからない可能性があります。Locateが役立つはずです。非標準のファイルの場所に注意し、チュートリアルの手順を適切に調整する必要があります。

    ごく最近インストールした場合は、Sudo updatedbを実行して、Locateがファイルシステムへの最近の追加を認識できるようにします。

これらの手順でファイルが見つからない場合は、パッケージがインストールされていることを確認するか、お気に入りのパッケージマネージャー(Synaptic、apt-get、aptitudeなど)からインストールしてください。 Ubuntu 10.04では、svnnotifyはパッケージlibsvn-notify-Perlによって/ usr/bin/svnnotifyにインストールされます。 Ubuntusvnnotifyを使用している場合は、チュートリアルの手順を適切に変更する必要があります。


チュートリアルpost-commitスクリプトを作成する方法を示しています。正しいsvnnotifyを指すようにスクリプトを変更する必要があります。システムの/ usr/local/bin/svnnotifyではなく/ usr/bin/svnnotifysvnnotifyがある場合、次のようにスクリプトを変更します。

#!/bin/sh

REPOS="$1"
REV="$2"

/usr/bin/svnnotify                          \
    --repos-path    "$REPOS"                \
    --revision      "$REV"                  \
    --subject-cx                            \
    --with-diff                             \
    --handler       HTML::ColorDiff         \
    --to            <your e-mail address>   \
    --from          <from e-mail address>
1
quack quixote

Ubuntuでは、svnnotifylibsvn-notify-Perlパッケージで提供されます。

ターミナルでSudo apt-get install libsvn-notify-Perlと入力すると、svnnotifyがインストールされ、スクリプトを再試行します。

2
user1033001

私はそれをそのように実行します:

myuser @ linux-server:/ usr/local/svn/svn_repo/hooks $ post-commit/usr/local/svn/svn_repo 9

私はこれを出力として取得します:

コミット後:コマンドが見つかりません

Linuxおよびその他のUnixシステムでは、シェルはデフォルトで(セキュリティ上の理由から)現在の作業ディレクトリでプログラムを検索しないため、次のようにスクリプトを実行する必要があります。

myuser@linux-server:/usr/local/svn/svn_repo/hooks$ ./post-commit /usr/local/svn/svn_repo 9
1
Marius Gedminas