我有一个makefile,它有一个提取档案的动作。即使已经提取了存档(并且没有对其进行任何更改),它也会这样做。
all:
tar zxvf soplex-1.7.2.tgz
有没有办法防止这种情况发生?我尝试使用 k 标志使其保留现有文件,但它给了我这个
soplex-1.7.2/src/vector.cpp
tar: soplex-1.7.2/src/vector.cpp: Cannot open: File exists
答案 0 :(得分:0)
这并不是很好的练习,但这种操作并不真正适合做事情的方式(除非你想使用tarball中的已知哨兵文件作为你的标记)
all:
tar -df soplex-1.7.2.tgz 2>/dev/null || tar -xvf soplex-1.7.2.tgz
(如果z
无法确定自己是否需要tar
,您可以手动将tar
标记提供给{{1}}。
另请注意,如果tarball中的一个后续文件是丢失/修改的文件,那么非常非常昂贵,因为它需要对整个tarball及相关的两个连续扫描磁盘活动。