“initrd.img-5.10.0-18-amd64”存在,但不是 aa 目录。函数“open”失败:不是目录:尝试覆盖 cpio arch 内的文件

“initrd.img-5.10.0-18-amd64”存在,但不是 aa 目录。函数“open”失败:不是目录:尝试覆盖 cpio arch 内的文件

我想用一个同名的新文件覆盖已经位于 cpio 文件夹中的文件。我在查找工作参数时遇到了一些麻烦。我发现这个网页可能有解决方案,但我不确定:

https://drumperl.wordpress.com/2014/01/12/forcing-cpio-to-overwrite-files/

不管怎样,我尝试这样做:

echo usr/share/plymouth/themes/homeworld/debian.png | cpio -pumd /home/ziomario/Scrivania/PassT-Cubic/kernels/initrd.img-5.10.0-18-amd64

请注意,我要在 cpio 存档 (initrd.img-5.10.0-18-amd64) 中复制的文件名为“debian.png”,并且其中有一个同名的文件。

我上面发出的命令出现以下错误:

“initrd.img-5.10.0-18-amd64”存在,但不是 aa 目录。函数“打开”失败:不是目录

非常感谢。

答案1

您编写的命令期望目标是目录,而不是 cpio 存档文件。

-p标志使得cpio在复制传递模式下运行。来自cpio 手册页

复制传递模式

在复制传递模式下,cpio 将文件从一个目录树复制到另一个目录树,结合复制出和复制入步骤,而不实际使用存档。它从标准输入读取要复制的文件列表;它将复制它们的目录作为非选项参数给出。

如果您提取 cpio 存档,并且想要替换提取的目录中的文件,这非常有用。

没有一种简单的方法可以覆盖cpio存档中的文件。您需要提取存档,替换文件(您的命令可能会派上用场)并创建一个新存档。

相关内容