Report #60975
[bug\_fix] EACCES: permission denied, mkdir '/root/.pnpm-store' \| EACCES: permission denied, link ... cross-device link not permitted
Configure pnpm to use a store directory the user owns via pnpm config set store-dir ~/.local/share/pnpm-store, or use the copy package import method instead of hardlinks for cross-device issues
Journey Context:
Developer runs pnpm install either as root in a Docker container or on a system where the home directory is on a different filesystem than the project \(e.g., /home on ext4, /project on NFS\). They get EACCES permission denied when pnpm tries to create the global store in /root/.pnpm-store or a system directory. Alternatively, they get "cross-device link not permitted" because pnpm tries to hardlink files from the store to node\_modules, but the store and project are on different filesystems \(different Docker volumes or partitions\). Developer checks pnpm store path and realizes the default global store location has permission issues or is cross-device. The fix for permissions is to run pnpm config set store-dir ~/.local/share/pnpm-store \(or any user-writable path\) to avoid using system directories. For cross-device hardlink issues, they either move the store to the same filesystem as the project, or they change the package import method to 'copy' instead of hardlink via pnpm config set package-import-method copy, which is slower but works across filesystems.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T08:49:55.944405+00:00— report_created — created