salt-stack - 为什么即使发生提取,archive.extracted 仍会返回错误?
问题描述
TAR 提取不会按预期发生,如下所示:
unpack_batch_tar:
archive.extracted:
- name: /aaa/bbb/ccc
- source: http://artifactory-dev/tarstuff/test.tar
- keep_source: False
- archive_format: tar
- skip_verify: True
- overwrite: True
报错:
----------
ID: unpack_batch_tar
Function: archive.extracted
Name: /aaa/bbb/ccc
Result: False
Comment: Archive does not have a single top-level directory. To allow this archive to be extracted, set 'enforce_toplevel' to False. To avoid a 'tar-bomb' it may also be advisable to set a top-level directory by adding it to the 'name' value (for example, setting 'name' to /aaa/bbb/ccc/some_dir instead of /aaa/bbb/ccc/).
Started: 05:13:16.376999
Duration: 13.497 ms
变化:
为了克服这个问题,我添加了:
- enforce_toplevel: False
并创建了一个子目录 /aaa/bbb/ccc/some_dir 但提取不会发生。报以下错误:
Comment: An exception occurred in this state: Traceback (most recent call last):
File \"/usr/lib/python2.7/site-packages/salt/state.py\", line 1750, in call
**cdata['kwargs'])
File \"/usr/lib/python2.7/site-packages/salt/loader.py\", line 1705, in wrapper
return f(*args, **kwargs)
File \"/usr/lib/python2.7/site-packages/salt/states/archive.py\", line 1252, in extracted
tar.extractall(name)
File \"/usr/lib64/python2.7/tarfile.py\", line 2047, in extractall
self.extract(tarinfo, path)
File \"/usr/lib64/python2.7/tarfile.py\", line 2084, in extract
self._extract_member(tarinfo, os.path.join(path, tarinfo.name))
File \"/usr/lib64/python2.7/tarfile.py\", line 2168, in _extract_member
self.makelink(tarinfo, targetpath)
File \"/usr/lib64/python2.7/tarfile.py\", line 2252, in makelink
os.link(tarinfo._link_target, targetpath)
OSError: [Errno 2] No such file or directory
我没有看到缩进问题,因为同样适用于 .JAR 文件,但对于 .TAR 文件则失败。我不确定为什么只有 TAR 提取失败。
解决方案
推荐阅读
- python - 在 Python 中查找与某个字符串相关的所有元组
- python - 当我有一组列表时,我想返回一个特定的列表
- matlab - 如何在时域中组合两个不同频率的信号
- ios - crashlytics 中应用程序的不同包标识符
- visual-studio - 为什么我在运行代码时看不到任何图形?
- google-apps-script - 如何格式化来自 Google Apps Script 的电子邮件正文中的日期?
- python - Python中的点系统
- node.js - Firebase Functions 记录对象占用大量空间
- pygame - Pygame 如何在图块下显示图像?
- c - Linux get_user_pages 是否保证页面不会被交换?