私が知らない環境変数やいくつかの設定があるようですが、これが私を狂わせます。
baco:~ # ls -la /root/subversion-1.4.6/subversion/svnadmin/.libs/svnadmin
-rwxr-x--- 1 root root 57263 Mar 10 2008 /root/subversion-1.4.6/subversion/svnadmin/.libs/svnadmin
baco:~ # ls -la /usr/local/subversion-1.6.1/subversion/svnadmin/.libs/svnadmin
-rwxr-xr-x 1 root root 76125 Apr 20 2009 /usr/local/subversion-1.6.1/subversion/svnadmin/.libs/svnadmin
私はそこから2つのバージョンのsvnadminをコンパイルしました。私が1つを実行すると、私はそれを取得します
baco:~ # /usr/local/subversion-1.6.1/subversion/svnadmin/.libs/svnadmin --version
svnadmin, version 1.6.1 (r37116)
compiled Apr 20 2009, 16:09:36
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
The following repository back-end (FS) modules are available:
* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.
フルパスで別のものを実行すると、まだ早く得ることができます!
baco:~ # /root/subversion-1.4.6/subversion/svnadmin/.libs/svnadmin --version
svnadmin, version 1.6.1 (r37116)
compiled Apr 20 2009, 16:09:36
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
The following repository back-end (FS) modules are available:
* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.
パス情報なしでsvnadminを実行すると、バージョン1.6.1も入手できます($ PATHによる)。 cronを介して1.4.6を実行できるため、これは対話型またはログインシェルにのみ当てはまります。
編集する:
/root/subversion-1.4.6/subversion/svnadmin/.libs/svnadmin --version
cronを実行し、バージョン1.4.6の出力(正しいコンパイル日を含む)を取得したので、cronが1.4.6を実行していることを知っています。フルパスを使用してcronを介してバージョン1.6.1を実行すると、出力1.6.1が表示されます。
どちらもバイナリファイルです。
baco:~ # file /root/subversion-1.4.6/subversion/svnadmin/.libs/svnadmin
/root/subversion-1.4.6/subversion/svnadmin/.libs/svnadmin: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped
baco:~ # file /usr/local/subversion-1.6.1/subversion/svnadmin/.libs/svnadmin
/usr/local/subversion-1.6.1/subversion/svnadmin/.libs/svnadmin: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped
ハードリンクではありません
baco:~ # stat -c %h /usr/local/subversion-1.6.1/subversion/svnadmin/.libs/svnadmin
1
baco:~ # stat -c %h /root/subversion-1.4.6/subversion/svnadmin/.libs/svnadmin
1
答え1
svnadmin
バイナリは、実際の作業(バージョン番号を含む)を実行するために共有ライブラリをラップするコード層のように見えます。実際に実行すると、バージョンメッセージは出力に表示されないため、バイナリの一部ではstrings $(which svnadmin)
ありません。svnadmin
したがって、対話型セッション間のLD_LIBRARY_PATHの違いにより、動作のcron
違いが説明される可能性があります。