安装union时Linux shell脚本抛出错误



试图在运行Ubuntu 16.04的AWS EC2实例上设置Facebook CTF实例,在进行快速设置时遇到以下错误。

xz: (stdin): File format not recognized
tar: Child died with signal 13
tar: Error is not recoverable: exiting now
curl: (23) Failed writing body (390 != 16384)

将错误跟踪到/extra/lib.sh中的函数,其中install_union是从/extra/provision.sh 调用的

function dl_pipe() {
local __url=$1
curl --retry 5 --retry-delay 15 -sSL "$__url"
}
function install_unison() {
cd /
dl_pipe "https://www.archlinux.org/packages/extra/x86_64/unison/download/" | sudo tar Jx
}

URL链接到一个tar.zst文件,我可以直接下载,但不清楚为什么shell脚本不能。想法?

脚本可以下载它,但假设它不是。

(GNU(tarJ标志试图在解析该文件之前使用xz对其进行解压缩。但该文件实际上是zstd,而不是xz压缩的。因此xz无法识别该格式。

看起来Arch Linux的软件包不久前已经切换为使用zstd而不是xz:https://www.phoronix.com/scan.php?page=news_item&px=附近的Arch Linux Pacman Zstd

但问题是为什么你(或脚本(想要在Ubuntu上安装一个Arch Linux包。应该有一个适用于Ubuntu的Unison软件包。试着使用它。

或者,如果您(或脚本(坚持使用Arch Linux软件包,请尝试为zstd安装Ubuntu软件包(或克隆https://github.com/facebook/zstd并自己编译(,然后将有问题的行更改为

dl_pipe "https://www.archlinux.org/packages/extra/x86_64/unison/download/" | zstd -d | sudo tar x

或者更改脚本中的URL,使其指向仍使用xz压缩的包(可能是较旧的(。

相关内容

  • 没有找到相关文章

最新更新