0

我的顾问经常将一堆软件编译到他的 /usr/local 中,然后将他的 /usr/local 作为 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/

请查看您系统的手册页以获取更多信息。

于 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 回答