2023/02/20

[win] AUXの件は未だ解決せず

AUXの件というのは、この件。

hiro99ma blog: [win] 謎のAUX
https://blog.hirokuma.work/2023/02/win-aux.html

普段であれば「aux はダメよねー」で終わらせるところだが、Windows11 ではアクセスに難はあるもののフォルダとしては機能している(auxフォルダの中のファイルにアクセスできる)のだ。

そして、もう1つ。
おそらく Windows10 でも困らない範囲で使えていたことがあったと思うのだ。

 

・・・この「思うのだ」というのが非常に曖昧でして。
私が仕事も含めて使っている環境は比較的最近まで Windows10 がメインだったのだ。
それが PC の入替などやっているうちに Windows11 の環境が増えてきて、Windows10 の PC は今回の件が解決しない PC だけとなってしまった。

そしてまた、この件の PC で開発するは外出時(私はほとんど外出しない)なので、久々にやってみたらこうなっていたのに気付いたので、いつからそうなったのかがよくわかっていない。


なんとなくで WSL2 関係で追加したものをアンインストールしてみたが関係なかった。

 

じゃあ、こういうのはどうだ?
WSL2 の Ubuntu から npm install し直してみるのだ。

・・・ Ubuntu 側からはアクセスできるが、エクスプローラからはやはりダメだ。

 

では、WSL2 側のファイルシステムで npm install してみると?

・・・これはエクスプローラからもアクセスできた。
ただ、これは WSL2 側のフォルダを見るときのやりかたが UNC でのアクセスになっているからだろう。

image

 

じゃあじゃあ、プロジェクトのフォルダを共有しておいて UNC形式にして Android Studio で開いたらよいのでは!?
唐突に Android Studio が出てきたが、React Native のプロジェクトなので最終的に Android Studio で開けないと困るのだ。

・・・Android Studio が UNC のパスを認識してくれなかった。

 

しかし、WSL2 のパスは見えるようだ。
ならば WSL2 側にプロジェクトを持って行って開けば・・・。

image

ダメかー。甘かったかー。

というか、これはどういう状況なんだろうね。
Android Studio は Windows で動いているから Windows の世界で動いているのかと思っていたのだけど、JDK は WSL 側にインストールしてくれとかいわれてるし。

IntelliJ IDEAがWSL上のGradle同期に対応 - programwiz.org
https://programwiz.org/2021/04/19/idea-support-gradle-on-wsl/

なるほど、IntelliJ が対応したのか。
Android Studio が Chipmunk だったので Eel まで上げたらもしかしたら・・・と思ったが同じだった。

難しいね。


Windows11 では、エクスプローラからフォルダ削除はできなかったものの、中のファイルにはアクセスできた。
なので、なんかちょっと変わったんだろうね。

2023/02/12

[win] 謎のAUX

お仕事で React Native の作業をしていた。
Node.js っぽく書けつつ、Android と iOS の画面については共有でき、必要に応じてネイティブ側の実装をして呼び出したりすることができるのが React Nativeだ。
実装しているといろいろ文句を言いたくなって Flutter とかよさそうだなとは思いつつ(触ったことはない)、あっちはあっちで同じように大変なんだろうなと思う。

 

私のメイン環境は Windows10 で、React Native も Windows 上で開発していた。
Windows11 の環境もあったので、そちらでも開発していた。
もう1台の Windows10 環境があってそちらに git clone して持って行ったのだが、ここで問題が起きた。
npm install などは成功するのだが Android 環境でのビルドに失敗するのだ。
正確には gradle sync がよくわからないエラーで失敗するのだ。

 

ここからタイトルの話になる。
npm install した node_modules の下の方に aux というディレクトリがあり、その中にあるファイルにアクセスしようとして not found 扱いになったようなのだ。

ということに気付くまでは、Android OS のバージョンだの環境変数だの JDK だのいろいろ疑った。
「そういえば aux や con は FAT だと使えなかったよな」ということに気付いたのが数日前だ。

なぜ思い至らなかったかというと、別の Windows 環境ではエラーになっていなかったからだ。
比べてみたが、動く方の Windows 環境では aux ディレクトリの下にあるファイルにテキストエディタでアクセスできたのだが、動かない方の Windows 環境ではアクセスに失敗したのだ。

同じ NTFS のディスクなのになぜ??


まずは仕様から見ていこう。

FAT 名前付け規則
https://learn.microsoft.com/ja-jp/troubleshoot/windows-client/backup-and-storage/fat-hpfs-and-ntfs-file-systems#fat-naming-convention

FAT の予約された名前の中に「AUX」が入っている。 MS-DOS でテキストエディタなどがなくてファイルに文字を書き込みたいときは CON を使ったりしていたので、そういうのと同じ感じだ。

ファイルシステムの FAT32 の仕様書っぽいのには出てこない(文字検索しかしてないが)。

https://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/fatgen103.doc

FAT の仕様のなかでも 8.3規則に紐付いているだけとか? であれば 8.3形式を無効にするやり方はあったと思う。
とはいえ、私がそういう設定をした記憶が無い。
うーむ。

 

実物で確認しよう。
これなのだが。

https://github.com/RobinBobin/react-native-google-drive-api-wrapper/tree/master/src/api/aux

使うときは npm install でやっているからそうすべきだろう。

nvs use 16.16.0
md test
cd test
npm init -y
npm install @robinbobin/react-native-google-drive-api-wrapper

そして中身を見てみる。

> dir node_modules\@robinbobin\react-native-google-drive-api-wrapper\api\aux

 \\. のディレクトリ

ファイルが見つかりません

見えないのだが、Explorer からは見えていて、アクセスには失敗する(テキストエディタで開こうとした)。

image

これが動く環境だと開けるのだ。開けはするが、aux というフォルダなどを作ろうとするとエラーになったりはする。

困ったのだけど、まったく手がかりがないねぇ。