0

私のアドバイザーは、多くのソフトウェアを自分の /usr/local にコンパイルしてから、/usr/local を tarball として配布します。次に、使用するために、tarball をラボ マシンに抽出します。これまでのところ、これは問題なく機能していました。古い /usr/local を tarball の内容に置き換えるだけです。

しかし、これらのマシンに独自のソフトウェアをインストールし始めました。/usr/local を削除すると、明らかにそのソフトウェアと構成の一部も削除されます。

代わりに、どうすれば tarball から /usr/local の対応するディレクトリにファイルを再帰的にコピーできますか?

例えば:

tarball path            filesystem path
------------            ---------------
local/bin/myprog   ->   /usr/local/bin/myprog
local/lib/mylib.so ->   /usr/local/lib/mylib.so

または、これは ServerFault のより良い質問ですか?

4

3 に答える 3

1
$ cd /usr
$ tar xvf f.tar

また

$ cd /tmp
$ tar xvf f.tar
$ cp -R local/. /usr/local/.

実際には、他のディレクトリ、またはのサブディレクトリに配置する必要があると思います/usr/local//usr/local/おそらくデフォルトの PATH コンポーネントを除いて、魔法のようなものは何もありません。

于 2009-10-15T00:55:05.720 に答える
1

cp コマンドには、再帰的にコピーするための -r フラグがあります。

$ cp -r local/* /usr/local/

詳細については、システムの cp の man ページを参照してください。

于 2009-10-15T00:58:27.837 に答える
0

オプションを使用しkて宛先を指定し、ファイルの上書きを防ぎます。

$ cd /usr 
$ tar xvfk localtarball.tar local
local/
local/file
tar: local/file: Cannot open: File exists
local/bar2/
local/bar2/bar3
tar: local/file: Cannot open: File exists
local/bar2a/bar2aY/
tar: Error exit delayed from previous errors
于 2009-10-15T01:15:06.820 に答える