无法压缩文件:拒绝从终端读取存档内容

无法压缩文件:拒绝从终端读取存档内容

我的主机没有,dpkg所以我需要安装它。
我按照以下指示进行操作这里这里

在这两个答案中,他们都写道我需要下载该文件:

wget http://security.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg_1.17.5ubuntu5.2_i386.deb
or
wget http://security.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg_1.17.5ubuntu5.2_amd64.deb

tar并像这样使用:

tar x dpkg*.deb data.tar.gz
tar xfvz data.tar.gz ./usr/bin/dpkg
cp ./usr/bin/dpkg /usr/bin/

但运行后tar x dpkg*.deb data.tar.gz失败:

[root@webtl1 ~]# tar x dpkg*.deb data.tar
tar: Refusing to read archive contents from terminal (missing -f option?)
tar: Error is not recoverable: exiting now

我点击了这个链接:
https://askubuntu.com/questions/143107/how-to-extract-archives-to-file-system-in-terminal
并尝试使用tar xvzf dpkg*.deb data.tar.gz 但也失败了:

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

知道如何将tar文件deb保存到吗data.tar.gz

编辑:
如果您想重现,请访问:
https://www.katacoda.com/courses/prometheus/getting-started

运行:
wget http://security.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg_1.17.5ubuntu5.2_amd64.deb
然后尝试tar x dpkg*.deb data.tar.gz

答案1

Debian 软件包是ar档案里面有 tarball,而不是 tar-in-tar。该命令需要是

ar x dpkg*.deb data.tar.gz

而不是tar x。这第一个答案您链接和引用的内容不合格地抄袭了第二并给了你错误的指示(无论是通过过度纠正还是试图掩盖其踪迹,我不知道)。

您可能需要不同的名称来data.tar.gz实现不同的压缩(它会随着时间的推移而改变),但只是

ar x dpkg*.deb

那么tar xaf data.tar.* ./usr/bin/dpkg无论使用什么压缩,都应该对你进行排序。它将提取一些您可以忽略或删除的额外文件(control.tar.*debian-binary,也许还有其他一些文件)。

其余的说明应该没问题。

答案2

我的主机没有 dpkg,所以我需要安装它。

不,你不知道。

即使您设法获得了该dpkg程序的一个版本,它也无法使用。 dpkg 需要一些其他程序和数据文件。即使对于熟悉 Unix 命令行工具的人来说,手动组装运行 dpkg 所需的所有内容也是一项挑战。

Dpkg 是 Debian 及其派生发行版的低级包管理工具。如果您的主机没有 dpkg,则意味着它正在运行使用不同包管理工具的不同发行版。例如,CentOS(最流行的非基于 Debian 的托管发行版选择)使用百胜(Yum 相当于 apt,这是您在基于 Debian 的发行版上通常使用的工具;与 dpkg 相对应的低级打包工具是 rpm。)您的主机的文档应该清楚地表明它正在运行什么发行版,但如果您找不到此信息,请参阅此线程以了解如何凭经验找出答案

如果您已经知道如何使用 dpkg 和 apt,吃豆人罗塞塔是一个用于常见任务的便捷翻译表。

如果您确实想在不同的 Linux 发行版上安装 Debian 或 Ubuntu 软件包,请使用反引导程序设立一个chroot环境。 chroot 环境的行为大多独立于已安装的系统:它将有自己的一组程序,但具有相同的网络配置,并且您可以授予它对主机数据的访问权限。

相关内容