次のコマンドを実行すると、Cannot mkdir:No such file or Directoryのエラーが発生します。私はこれがパス名の\に関連していると思います。この問題をどのように解決しますか?
私はCentosでこれを実行しています。
tar xf dpdk-17.02.tar.xz
tar: dpdk-17.02/app/test/test_pci_sysfs/bus/pci/devices/0000\:01\:00.0: Cannot mkdir: No such file or directory
tar: dpdk-17.02/app/test/test_pci_sysfs/bus/pci/devices/0000\:01\:00.0: Cannot mkdir: No such file or directory
tar: dpdk-17.02/app/test/test_pci_sysfs/bus/pci/devices/0000\:01\:00.0/class: Cannot open: No such file or directory
tar: dpdk-17.02/app/test/test_pci_sysfs/bus/pci/devices/0000\:01\:00.0: Cannot mkdir: No such file or directory
tar: dpdk-17.02/app/test/test_pci_sysfs/bus/pci/devices/0000\:01\:00.0/config: Cannot open: No such file or directory
tar: dpdk-17.02/app/test/test_pci_sysfs/bus/pci/devices/0000\:01\:00.0: Cannot mkdir: No such file or directory
tar: dpdk-17.02/app/test/test_pci_sysfs/bus/pci/devices/0000\:01\:00.0/consistent_dma_mask_bits: Cannot open: No such file or directory
より詳細な情報を得るためにstraceを試しましたが、次はエラーの1つの結果です。
mkdirat(AT_FDCWD, "dpdk-17.02", 0755) = -1 EEXIST (File exists)
mkdirat(AT_FDCWD, "dpdk-17.02/app", 0755) = -1 EEXIST (File exists)
mkdirat(AT_FDCWD, "dpdk-17.02/app/test", 0755) = -1 EEXIST (File exists)
mkdirat(AT_FDCWD, "dpdk-17.02/app/test/test_pci_sysfs", 0755) = -1 EEXIST (File exists)
mkdirat(AT_FDCWD, "dpdk-17.02/app/test/test_pci_sysfs/bus", 0755) = -1 EEXIST (File exists)
mkdirat(AT_FDCWD, "dpdk-17.02/app/test/test_pci_sysfs/bus/pci", 0755) = -1 EEXIST (File exists)
mkdirat(AT_FDCWD, "dpdk-17.02/app/test/test_pci_sysfs/bus/pci/devices", 0755) = -1 EEXIST (File exists)
mkdirat(AT_FDCWD, "dpdk-17.02/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0", 0755) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "dpdk-17.02/app/test/test_pci_sysfs/bus/pci/devices/0000:01:00.0", 0x7ffe85312de0, 0) = -1 ENOENT (No such file or directory)
write(2, "tar: ", 5) = 5
write(2, "dpdk-17.02/app/test/test_pci_sys"..., 79) = 79
write(2, ": No such file or directory", 27) = 27
write(2, "\n", 1) = 1
write(2, "tar: ", 5) = 5
write(2, "dpdk-17.02/app/test/test_pci_sys"..., 85) = 85
答え1
これはシンボリックリンクによるものです。 tar が 'strace' で何をしているかを見るのに価値があるかもしれません(tar コマンドの前にプレフィックスを付けるだけですstrace
)。
tarが実行したい操作と失敗した操作をstrace出力で確認する必要があります。
答え2
Windowsファイル名の規則と制限に従うCIFSにあるホームディレクトリでtarを実行しています。 CIFS(Windows)ではコロンは使用できません。問題なくローカルパーティションで同じ操作を再実行しました。