williamboman / mason.nvim

Portable package manager for Neovim that runs everywhere Neovim runs. Easily install and manage LSP servers, DAP servers, linters, and formatters.
Apache License 2.0
7.24k stars 258 forks source link

Unable to install LSP's on Windows #1565

Open tusan-tsvetkoff opened 7 months ago

tusan-tsvetkoff commented 7 months ago

I've searched open issues for similar requests

I've recently downloaded the latest plugin version of mason.nvim

Problem description

Currently stuck with this particular error:

[ERROR 28/11/2023 23:44:41] ...m-data/lazy/mason.nvim/lua/mason-core/installer/init.lua:249: Installation failed for Package(name=json-lsp) error="EPERM: operation not permitted: C:\\Users\\*****\\AppData\\Local\\nvim-data\\mason\\staging\\json-lsp -> C:\\Users\\*****\\AppData\\Local\\nvim-data\\mason\\packages\\json-lsp"

Interestingly, I managed to install a few LSPs before this started happening. Now it seems to be happening for each and every LSP I try to install essentially.

I've made sure to check the permissions on the folders and they all seem fine. I've also ran npm cache clean --force -> npm i -g npm -> npm cache clean --force (along with npm cache verify)

Tried in the CMD as well, running it in both normal and admin. mode, it's always the same outcome anyway.

Also, 7zip is indeed installed on my system, not sure why it's saying it's not.

Expected behavior

Should just be able to install the LSP with no issues.

Affected packages

json-lsp/all

Mason output

◍ json-lsp
      ▼ Displaying full log
        Initialized npm root.
        Installing npm package vscode-langservers-extracted@4.8.0…

        added 31 packages, and audited 32 packages in 26s

        10 packages are looking for funding
          run `npm fund` for details

        found 0 vulnerabilities
        Downloading LSP configuration schema from "https://raw.githubusercontent.com/microsoft/vscode/master/extensions/json-language-features/package.json"…
        EPERM: operation not permitted: C:\Users\*****\AppData\Local\nvim-data\mason\staging\json-lsp -> C:\Users\*****\AppData\Local\nvim-data\mason\packages\json-lsp

Installation log

[INFO  29/11/2023 00:33:31] ...m-data/lazy/mason.nvim/lua/mason-core/installer/init.lua:184: Executing installer for Package(name=json-lsp) {}
[DEBUG 29/11/2023 00:33:32] ...m-data/lazy/mason.nvim/lua/mason-core/installer/init.lua:58: Attempting to lock package Package(name=json-lsp)
[DEBUG 29/11/2023 00:33:32] ...m-data/lazy/mason.nvim/lua/mason-core/installer/init.lua:70: Wrote lockfile Package(name=json-lsp)
[DEBUG 29/11/2023 00:33:32] ...ta/Local/nvim-data/lazy/mason.nvim/lua/mason-core/fs.lua:47: fs: rmrf C:\Users\itsvetkov\AppData\Local\nvim-data\mason\staging\json-lsp
[DEBUG 29/11/2023 00:33:32] ...ta/Local/nvim-data/lazy/mason.nvim/lua/mason-core/fs.lua:71: fs: mkdirp C:\Users\itsvetkov\AppData\Local\nvim-data\mason\staging\json-lsp
[DEBUG 29/11/2023 00:33:32] ...zy/mason.nvim/lua/mason-core/installer/registry/init.lua:148: Compiling installer. json-lsp {}
[DEBUG 29/11/2023 00:33:32] ...azy/mason.nvim/lua/mason-core/installer/managers/npm.lua:28: npm: init
[DEBUG 29/11/2023 00:33:32] ...cal/nvim-data/lazy/mason.nvim/lua/mason-core/process.lua:116: Spawning cmd="npm.cmd", spawn_opts={
  args = { "init", "--yes", "--scope=mason" },
  cwd = "C:\\Users\\itsvetkov\\AppData\\Local\\nvim-data\\mason\\staging\\json-lsp"
}
[DEBUG 29/11/2023 00:33:32] ...cal/nvim-data/lazy/mason.nvim/lua/mason-core/process.lua:162: Spawned with pid 14828
[DEBUG 29/11/2023 00:33:34] ...cal/nvim-data/lazy/mason.nvim/lua/mason-core/process.lua:148: Job pid=14828 exited with exit_code=0, signal=0
[DEBUG 29/11/2023 00:33:34] ...cal/nvim-data/lazy/mason.nvim/lua/mason-core/process.lua:116: Spawning cmd="npm.cmd", spawn_opts={
  args = { "version", "--json" }
}
[DEBUG 29/11/2023 00:33:34] ...cal/nvim-data/lazy/mason.nvim/lua/mason-core/process.lua:162: Spawned with pid 8776
[DEBUG 29/11/2023 00:33:36] ...cal/nvim-data/lazy/mason.nvim/lua/mason-core/process.lua:148: Job pid=8776 exited with exit_code=0, signal=0
[DEBUG 29/11/2023 00:33:36] ...azy/mason.nvim/lua/mason-core/installer/managers/npm.lua:63: npm: install "vscode-langservers-extracted" "4.8.0" {}
[DEBUG 29/11/2023 00:33:36] ...cal/nvim-data/lazy/mason.nvim/lua/mason-core/process.lua:116: Spawning cmd="npm.cmd", spawn_opts={
  args = { "install", "vscode-langservers-extracted@4.8.0" },
  cwd = "C:\\Users\\itsvetkov\\AppData\\Local\\nvim-data\\mason\\staging\\json-lsp"
}
[DEBUG 29/11/2023 00:33:36] ...cal/nvim-data/lazy/mason.nvim/lua/mason-core/process.lua:162: Spawned with pid 40288
[DEBUG 29/11/2023 00:34:05] ...cal/nvim-data/lazy/mason.nvim/lua/mason-core/process.lua:148: Job pid=40288 exited with exit_code=0, signal=0
[DEBUG 29/11/2023 00:34:05] ...mason.nvim/lua/mason-core/installer/registry/schemas.lua:52: schemas: download Package(name=json-lsp) {
  lsp = "vscode:https://raw.githubusercontent.com/microsoft/vscode/master/extensions/json-language-features/package.json"
}
[DEBUG 29/11/2023 00:34:05] ...ta/Local/nvim-data/lazy/mason.nvim/lua/mason-core/fs.lua:65: fs: mkdir C:\Users\itsvetkov\AppData\Local\nvim-data\mason\staging\json-lsp\mason-schemas
[DEBUG 29/11/2023 00:34:05] ...Local/nvim-data/lazy/mason.nvim/lua/mason-core/fetch.lua:37: Fetching URL "https://raw.githubusercontent.com/microsoft/vscode/master/extensions/json-language-features/package.json"
[DEBUG 29/11/2023 00:34:05] ...cal/nvim-data/lazy/mason.nvim/lua/mason-core/process.lua:116: Spawning cmd="curl", spawn_opts={
  args = { "-H", "User-Agent: mason.nvim v1.8.3 (+https://github.com/williamboman/mason.nvim)", "-fsSL", "-X", "GET", "--connect-timeout", 30, "https://raw.githubusercontent.com/microsoft/vscode/master/extensions/json-language-features/package.json" }
}
[DEBUG 29/11/2023 00:34:05] ...cal/nvim-data/lazy/mason.nvim/lua/mason-core/process.lua:162: Spawned with pid 37672
[DEBUG 29/11/2023 00:34:05] ...cal/nvim-data/lazy/mason.nvim/lua/mason-core/process.lua:148: Job pid=37672 exited with exit_code=0, signal=0
[DEBUG 29/11/2023 00:34:06] ...zy/mason.nvim/lua/mason-core/installer/registry/link.lua:139: Registering bin links Package(name=json-lsp) {
  ["vscode-json-language-server"] = "npm:vscode-json-language-server"
}
[DEBUG 29/11/2023 00:34:06] ...zy/mason.nvim/lua/mason-core/installer/registry/link.lua:166: Expanded bin link "vscode-json-language-server" -> "node_modules\\.bin\\vscode-json-language-server.cmd"
[DEBUG 29/11/2023 00:34:06] ...ata/lazy/mason.nvim/lua/mason-core/installer/context.lua:229: Promoting cwd "C:\\Users\\itsvetkov\\AppData\\Local\\nvim-data\\mason\\staging\\json-lsp" to "C:\\Users\\itsvetkov\\AppData\\Local\\nvim-data\\mason\\packages\\json-lsp"
[DEBUG 29/11/2023 00:34:06] ...ta/Local/nvim-data/lazy/mason.nvim/lua/mason-core/fs.lua:84: fs: rename C:\Users\itsvetkov\AppData\Local\nvim-data\mason\staging\json-lsp C:\Users\itsvetkov\AppData\Local\nvim-data\mason\packages\json-lsp
[DEBUG 29/11/2023 00:34:06] ...ta/Local/nvim-data/lazy/mason.nvim/lua/mason-core/fs.lua:59: fs: unlink C:\Users\itsvetkov\AppData\Local\nvim-data\mason\staging\json-lsp.lock
[DEBUG 29/11/2023 00:34:06] ...ta/Local/nvim-data/lazy/mason.nvim/lua/mason-core/fs.lua:47: fs: rmrf C:\Users\itsvetkov\AppData\Local\nvim-data\mason\staging\json-lsp
[DEBUG 29/11/2023 00:34:10] ...ta/Local/nvim-data/lazy/mason.nvim/lua/mason-core/fs.lua:52: fs: rmrf failed
[DEBUG 29/11/2023 00:34:10] ...m-data/lazy/mason.nvim/lua/mason-core/installer/init.lua:39: Building receipt for Package(name=json-lsp)
[DEBUG 29/11/2023 00:34:10] ...data/lazy/mason.nvim/lua/mason-core/installer/linker.lua:42: Unlinking Package(name=json-lsp)
[ERROR 29/11/2023 00:34:10] ...m-data/lazy/mason.nvim/lua/mason-core/installer/init.lua:249: Installation failed for Package(name=json-lsp) error="EPERM: operation not permitted: C:\\Users\\itsvetkov\\AppData\\Local\\nvim-data\\mason\\staging\\json-lsp -> C:\\Users\\itsvetkov\\AppData\\Local\\nvim-data\\mason\\packages\\json-lsp"

Neovim version (>= 0.7)

NVIM v0.9.2 Build type: RelWithDebInfo LuaJIT 2.1.1694082368

Operating system/version

Windows

Healthcheck

mason: require("mason.health").check()

mason.nvim ~
- OK mason.nvim version v1.8.3
- OK PATH: prepend
- OK Providers: 
  mason.providers.registry-api
  mason.providers.client
- OK neovim version >= 0.7.0

mason.nvim [Registries] ~
- OK Registry `github.com/mason-org/mason-registry version: 2023-11-28-fine-dibble` is installed.

mason.nvim [Core utils] ~
- WARNING unzip: not available
  - ADVICE:
    - spawn: unzip failed with exit code - and signal -. unzip is not executable
- WARNING wget: not available
  - ADVICE:
    - spawn: wget failed with exit code - and signal -. wget is not executable
- OK curl: `curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN
`
- WARNING gzip: not available
  - ADVICE:
    - spawn: gzip failed with exit code - and signal -. gzip is not executable
- OK tar: `bsdtar 3.5.2 - libarchive 3.5.2 zlib/1.2.5.f-ipp bz2lib/1.0.6 
`
- OK pwsh: `7.4.0 Microsoft Windows 10.0.22621 Win32NT
`
- WARNING 7z: not available
  - ADVICE:
    - spawn: 7z failed with exit code - and signal -. 7z is not executable

mason.nvim [Languages] ~
- WARNING Go: not available
  - ADVICE:
    - spawn: go failed with exit code - and signal -. go is not executable
- WARNING cargo: not available
  - ADVICE:
    - spawn: cargo failed with exit code - and signal -. cargo is not executable
- WARNING luarocks: not available
  - ADVICE:
    - spawn: luarocks failed with exit code - and signal -. luarocks is not executable
- WARNING Ruby: not available
  - ADVICE:
    - spawn: ruby failed with exit code - and signal -. ruby is not executable
- WARNING RubyGem: not available
  - ADVICE:
    - spawn: gem.cmd failed with exit code - and signal -. gem.cmd is not executable
- WARNING Composer: not available
  - ADVICE:
    - spawn: composer.bat failed with exit code - and signal -. composer.bat is not executable
- WARNING PHP: not available
  - ADVICE:
    - spawn: php failed with exit code - and signal -. php is not executable
- WARNING javac: not available
  - ADVICE:
    - spawn: javac failed with exit code - and signal -. javac is not executable
- WARNING java: not available
  - ADVICE:
    - spawn: java failed with exit code - and signal -. java is not executable
- WARNING julia: not available
  - ADVICE:
    - spawn: julia failed with exit code - and signal -. julia is not executable
- WARNING python: not available
  - ADVICE:
    - spawn: python failed with exit code - and signal -. python is not executable
- WARNING pip: not available
  - ADVICE:
    - spawn: python failed with exit code - and signal -. python is not executable
- WARNING python venv: not available
  - ADVICE:
    - On Debian/Ubuntu systems, you need to install the python3-venv package using the following command:

      apt-get install python3-venv
- OK node: `v20.10.0
`
- OK npm: `10.2.4`

mason.nvim [GitHub] ~
- OK GitHub API rate limit. Used: 0. Remaining: 60. Limit: 60. Reset: 29/11/2023 00:54:09.
  Install and authenticate via gh-cli to increase rate limit.

Screenshots

No response

tusan-tsvetkoff commented 7 months ago

Just an update: 7z is now showing OK, but I am still getting the same error/log.

Kobaltauge commented 4 months ago

got the same issues

Darkproduct commented 4 months ago

some issue here. Looks like #1253 again.

tusan-tsvetkoff commented 4 months ago

Just wanted to make an update

While the issue (on that particular machine) persists, the fix I've discovered is just retrying over and over again until it just decides to install the LSP.

Not sure if this will be of help, but I thought I'd throw it in there.

chrisb753 commented 2 months ago

On windows machines the 7-zip file path must be added to Path in Environmental Variables.

kstian commented 2 months ago

You need administrator access in order to create symlinks.

Running with administrator privileges is not enough, you need to enable Developer Mode

jinzhongjia commented 2 months ago

I just reinstalled the system, win10, everything went fine when installing lsp. I just used scoop to install all the required dependencies, such as unzip, go, curl, etc.

Alfamari commented 3 weeks ago

When looking at the item attributes of the attempted installed lsp's folder it creates in staging I noticed it was set to Read Only. After removing the attribute, it was able to process successfully. So I guess it's creating the directories with Read Only therefore locking itself out of operating on it?