linux - 安装 unison 时 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)的J
标志tar
尝试使用xz
预先解析文件来解压缩文件。但该文件实际上zstd
并没有xz
压缩。因此xz
无法识别格式。
看起来 Arch Linux 的软件包已经切换到使用zstd
而不是前xz
一段时间:https ://www.phoronix.com/scan.php?page=news_item&px=Arch-Linux-Pacman-Zstd-Near
但问题是为什么你(或脚本)想要在 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
压缩的(可能较旧的)包。
推荐阅读
- node.js - 如何存储 GitHub PAT(个人访问令牌)以供应用使用
- sql - 使用MSSQL一次交易获取N个最常购买的组合产品
- reactjs - ReactJS:道具未在初始渲染时加载。无法在未定义的变量上使用映射
- path - 构建 LLVM 基本块的路径
- flutter - 我有一个数据表,我需要根据文本输入添加数据行
- amazon-ec2 - Terraform、Windows、带有批处理脚本的用户数据
- windows - 如何使用 PowerShell 在多台计算机上替换文件中的一行
- node.js - 获取“您无权查看此目录或页面。” 在 azure 上部署 react 和 node.js 之后
- r - R 用 n 创建迁移矩阵。发生的变量变化(评级)
- arrays - React - 优化 JSX 元素的渲染数组