トリックtar "モードをrwxrwxrwxに変更できません:そのファイルまたはディレクトリはありません"?

トリックtar

GCC 10をビルドしようとしましたが、最終的に失敗しました(しかし代わりに実行しようとしたmake installので、.debパッケージをビルドできました)。失敗した部分は次のとおりです。sudo checkinstall -D --install=no --fstrans=nomake install

...
/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-fixed使用してコピーします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これにより、「Cannot Change mode to 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 installcheckinstall

ベストアンサー1

しかし、回避策は不足しています。シンボリックリンクは独自のフォルダのソースに相対的なものなので、次のようにします。

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

...削除してください。これは合格です。私の意図は、ターゲットディレクトリに復元することでしたが、もう別のエラーが発生します...

おすすめ記事