node:Alpine
Dockerイメージ。 rootユーザーとしてイメージを実行すると問題はありませんが、別のユーザーを使用してnpm install
パッケージ抽出から多くのエラーを受け取ります:
npm WARN tar EPERM: operation not permitted, futime
5000のWARNメッセージの後、npmインストールログにこれが表示されます。
npm timing action:extract Completed in 276816ms
npm timing action:finalize Completed in 172ms
さらに、npmインストールプロセスが完全にハングアップします。
誰かがこのエラーを知っていて、それを回避する方法を知っていますか?
プロジェクトをWindowsからLinuxに移行した後、私はWindows Linuxサブシステムでもこれを行いました。私はそれを修正することに失敗しました
rm -rf node_modules
rm package-lock.json
npm cache clear --force
chown -R username:username *
npm install
これはどれもうまくいきませんでした。
futime
エラーは、npmおよびノードモジュールで使用される.tarファイルを展開するために必要なアクションを実行するための十分な権限がないtar
ユーティリティが原因で発生します。
Alpine Linuxの場合は、ルートとして展開してからファイルをchown
するか、適切な権限を持つユーザーとして所有されるフォルダーを作成する必要があります。
Linux用のWindowsサブシステムの場合、/mnt/c
の下のフォルダーでは機能しないようで、権限の変更を拒否します。 Linuxでそれらを設定しても効果はなく、Windowsでそれらを設定しても違いはないようです-'Everyone'の原則に完全な制御を追加してもこれは解決されません。
アルパインの(ありそうな)解:
Sudo mkdir project_folder
Sudo chown username project_folder
cd project_folder
...
WSLのソリューション:
フォルダーをWSLフォルダーに移動します。 mv project ~\
権限が正しく機能するようにします。
このコマンドで試してみてください:
npm install --user
エレガントなソリューションではありませんが、動作します...アプリケーションディレクトリで:
rm -rf node_modules
mkdir /home/your_user/node_modules
ln -s /home/your_user/node_modules node_modules
npm install