У мене була та сама проблема, і я виявив, що вона спрацьовує просто тому, що з якоїсь нещасної та дивної причини пакет Ubuntu linux-libc-dev
містить кілька (заголовок) файлів з іменами, які відрізняються лише буквою, наприклад, /usr/include/linux/netfilter/xt_DSCP.h
та /usr/include/linuxnetfilter/xt_dscp.h
.
Проблема пов'язана з якоюсь дурною поведінкою WSL, а саме помилкою / неузгодженістю того, як реалізована файлова система, що враховує регістр. Припустимо, в якомусь каталозі є файл, і ви хочете створити в тому самому каталозі ще один файл з тим самим іменем, за винятком регістру. Це повинно працювати і створити другий файл на додаток до іншого (або, можливо, перезаписати існуючий файл). Однак це не вдається і, що ще гірше, призводить до оманливої помилки:
touch a.txt
touch A.txt
врожайність
touch: cannot touch 'A.txt': Input/output error
З іншого боку, можна створювати файли з обох випадків таким чином:
touch b.txt
touch x.txt
mv x.txt B.txt
ls {b,B}.txt
урожай
b.txt B.txt
Ось вирішення для пакетів з такими іменами linux-libc-dev_4.4.0-97.120_amd64.deb
:
cd any-temp-dir
apt-get download linux-libc-dev
ar x linux-libc-dev*deb
tar xJf data.tar.xz # ignore all erors like ./usr/include/linux/netfilter/xt_DSCP.h: Cannot open: Input/output error
tar cJf data.tar.xz ./usr
ar rcs linux-libc-dev*.deb debian-binary control.tar.gz data.tar.xz
sudo dpkg -i linux-libc-dev*.deb