【发布时间】:2022-01-16 14:47:20
【问题描述】:
经过编辑以使其更适合 StackOverflow:
我有一个二进制 shell 脚本,它充当 tarball 的自解压器。它最初是针对 Linux 的,但我试图在 FreeBSD 上运行它。适合我的主线是:
tail -n$SKIP "$0" | tar xz -C /path/to/install
我遇到了关于“无法打开 /dev/sda0”的错误,我通过将 tar 命令更改为 xzf - 以强制它从标准输入读取来解决该错误。但是,它现在抱怨“无法识别的存档格式”,这表明它无法确定二进制 tarball 的压缩格式。
我可以使用哪些技术来检查该标头并找出如何解压缩此二进制 blob? tail -n 在 BSD 和 Linux 之间的工作方式是否不同?
原问题:
我正在尝试在我的 FBSD13 机器上安装 Tresorit (https://tresorit.com/download/linux) 的 linux 安装程序。这是一个二进制 sh 脚本,其中前 92 行是 shell,其余的是某种压缩的 tarball。首先,我必须将我自己创建的uname 首先放在路径中,因为它正在检查uname -m 是x86_64 还是i686。 FBSD 返回 amd64。更改脚本会使它变得无用,因为它会检查自己的签名。无论如何,这很容易绕过。接下来它抱怨从标准输入读取压缩包时无法打开“/dev/sda0”。通过指定“-f -”来强制它从标准输入读取也很容易“修复”。
我一直在尝试执行安装行。是这样的:
tail -n92 tresorit_installer.run | tar xzf -
现在它抱怨“tar:打开存档时出错:无法识别的存档格式”。这令人沮丧。它必须是 gzip/bzip/xz 或类似的东西。如何确定压缩格式并进入下一步?
我相当肯定,如果我可以解压缩它,那么我可以安装程序并让 FBSD linux compat 工作。对下一步做什么有什么建议吗?
【问题讨论】:
-
SO 是一个错误的地方寻求此类问题的帮助。试试
freebsd-ports邮件列表、EFNet 上的#bsdports IRC 频道或我们的 Discord discord.gg/YPbXneca 你需要有人来解决这个问题。
标签: compression tar freebsd