欺骗 tar “无法将模式更改为 rwxrwxrwx:没有这样的文件或目录”?

欺骗 tar “无法将模式更改为 rwxrwxrwx:没有这样的文件或目录”?

我正在尝试构建 GCC 10,最后,我失败了make install(不过,我尝试运行sudo checkinstall -D --install=no --fstrans=no而不是make install,所以我可以构建 .deb 包)。失败的地方在这里:

...
/bin/bash /mnt/loop/tmp/pi/gcc-10.1.0_source/gcc-10.1.0/gcc/../mkinstalldirs /usr/lib/gcc/arm-linux-gnueabihf/10.1.0/include
rm -rf /usr/lib/gcc/arm-linux-gnueabihf/10.1.0/include-fixed
mkdir /usr/lib/gcc/arm-linux-gnueabihf/10.1.0/include-fixed
chmod a+rx /usr/lib/gcc/arm-linux-gnueabihf/10.1.0/include-fixed
echo `${PWDCMD-pwd}`
/mnt/loop/tmp/pi/gcc-10.1.0_build/gcc
(cd `${PWDCMD-pwd}`/include ; \
 tar -cf - .; exit 0) | (cd /usr/lib/gcc/arm-linux-gnueabihf/10.1.0/include; tar xpf - )
(cd `${PWDCMD-pwd}`/include-fixed ; \
 tar -cf - .; exit 0) | (cd /usr/lib/gcc/arm-linux-gnueabihf/10.1.0/include-fixed; tar --ignore-failed-read -xpf - )
tar: ./python3.5: Cannot change mode to rwxrwxrwx: No such file or directory
tar: Exiting with failure status due to previous errors
Makefile:3861: recipe for target 'install-headers-tar' failed
make[2]: *** [install-headers-tar] Error 2

更具体地说,我已${PWDCMD-pwd}解决 /mnt/loop/tmp/pi/gcc-10.1.0_build/gcc;然后这部分失败了:

(cd `${PWDCMD-pwd}`/include-fixed ; \
 tar -cf - .; exit 0) | (cd /usr/lib/gcc/arm-linux-gnueabihf/10.1.0/include-fixed; tar --ignore-failed-read -xpf - )
tar: ./python3.5: Cannot change mode to rwxrwxrwx: No such file or directory

所以,这块要进入/mnt/loop/tmp/pi/gcc-10.1.0_build/gcc/include-fixed,并将内容复制到/usr/lib/gcc/arm-linux-gnueabihf/10.1.0/include-fixedusing中tar

源目录/mnt/loop/tmp/pi/gcc-10.1.0_build/gcc/include-fixed确实存在并且包含内容:

$ ls -la  /mnt/loop/tmp/pi/gcc-10.1.0_build/gcc/include-fixed/
total 68
drwxr-xr-x  5 pi pi  4096 Feb  2 20:42 .
drwxr-xr-x 21 pi pi 36864 Feb  3 01:21 ..
drwxr-xr-x  2 pi pi  4096 Feb  2 06:26 arm-linux-gnueabihf
-rw-r--r--  1 pi pi  6171 Feb  2 20:42 limits.h
drwxr-xr-x  3 pi pi  4096 Feb  2 06:26 python2.7
lrwxrwxrwx  1 pi pi    10 Feb  2 06:26 python3.5 -> python3.5m
drwxr-xr-x  3 pi pi  4096 Feb  2 06:26 python3.5m
-rw-r--r--  1 pi pi   750 Feb  2 20:42 README
-rw-r--r--  1 pi pi   330 Feb  2 06:26 syslimits.h

因此,可以看出导致./python3.5“无法将模式更改为 rwxrwxrwx”的文件存在,并且实际上是符号链接。

事实上,此时,甚至目标目录也已填充 - 并且至少符号./python3.5链接已被复制:

$ ls -la /usr/lib/gcc/arm-linux-gnueabihf/10.1.0/include-fixed/
total 36
drwxr-xr-x 5 root root 4096 Feb  3 01:21 .
drwxr-xr-x 5 pi   pi   4096 Feb  3 01:21 ..
drwx------ 2 root root 4096 Feb  2 06:26 arm-linux-gnueabihf
-rw-r--r-- 1 pi   pi   6171 Feb  2 20:42 limits.h
drwx------ 3 root root 4096 Feb  3 01:21 python2.7
lrwxrwxrwx 1 pi   pi     10 Feb  2 06:26 python3.5 -> python3.5m
drwx------ 3 root root 4096 Feb  3 01:21 python3.5m
-rw-r--r-- 1 pi   pi    750 Feb  2 20:42 README
-rw-r--r-- 1 pi   pi    330 Feb  2 06:26 syslimits.h

所以,我想我“只是”必须说服tar不要崩溃,如果它有权限问题 - 我想我会通过使用tar --ignore-failed-read -xpf -而不是原来tar xpf -/mnt/loop/tmp/pi/gcc-10.1.0_build/gcc/Makefile)来做到这一点 - 但显然,从上面的日志来看,这并不'不工作。

在这种情况下我能做些什么来说服tar不要在这里崩溃,这样我就可以完成我的make install(即checkinstall)?

答案1

蹩脚的解决方法,但是 - 由于符号链接相对于其自己文件夹中的源,我只是这样做:

mv  /mnt/loop/tmp/pi/gcc-10.1.0_build/gcc/include-fixed/python3.5 /tmp/

...摆脱它 - 这确实过去了。我的目的是在目标目录中恢复它 - 但现在我遇到了其他错误......

相关内容