Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Install > missing chmod +x #39

Open
pablos-here opened this issue Jan 8, 2023 · 4 comments
Open

Install > missing chmod +x #39

pablos-here opened this issue Jan 8, 2023 · 4 comments

Comments

@pablos-here
Copy link

Hi,

Tickled that there's an awk LSP. Thank you!

A slight install issue, ../lib/node_modules/awk-language-server/out/cli.js needs its execution bit set.

Test case

With a fresh install:

  • # npm i -g awk-language-server
  • $ awk-language-server faults with /usr/local/bin/awk-language-server: Permission denied.

Work-around

# cd /usr/local/bin
# chmod +x ../lib/node_modules/awk-language-server/out/cli.js

@Beaglefoot
Copy link
Owner

Hi @pablos-here

I believe it's not related and strongly advise to avoid installing npm packages as privileged user.

You can change this behavior with something like this:

npm config set prefix=$HOME/.npm

Now you install every npm package without sudo and it's placed in your home directory. To make binaries available on your command line you need to append this to your ~/.profile or ~/.bashrc and start new terminal session:

PATH="$HOME/.npm/bin:$PATH"

@pablos-here
Copy link
Author

I believe it's not related

Hi @Beaglefoot ,

Would you please elaborate why it's not related?

and strongly advise to avoid installing npm packages as privileged user.

I appreciate the warning.

@Beaglefoot
Copy link
Owner

Would you please elaborate why it's not related?

Well, this whole cli thing works because of this:
https://docs.npmjs.com/cli/v9/configuring-npm/package-json#bin

First of all typescript files are compiled to js in out dir and there is no executable bit:

$ stat -c %A out/cli.js
-rw-r--r--

Then js files are published as npm package and aforementioned bin rule is applied.

On installation what's available on PATH is just a symbolic link:

# stat -c "%N" $(which awk-language-server)
'/usr/local/bin/awk-language-server' -> '../lib/node_modules/awk-language-server/out/cli.js'

And the real js file has executable bit set for all users:

# stat -L -c "%A   %N" $(which awk-language-server)
-rwxr-xr-x   '/usr/local/bin/awk-language-server'

If your result is different then probably some other rules are applied by your system or configuration. I would suggest to check with docker.

@pablos-here
Copy link
Author

Hi @Beaglefoot ,

Thank you for the information. I appreciate it.

I've installed several[1] other npm-based language servers and they all set the execution bit on the source file. The exception is awk-language-server

Given the above, it would suggest that the issue is with the packaging rather than my environment.

Have you tested installing awk-language-server globally?

If it helps any, I'm on a rolling distro (openSUSE Tumbleweed). Assuming you've tested it globally and it works, perhaps there's an issue looming.

Thx!

References

  • bash-language-server
  • jslint
  • pyright
  • vscode-css-language-server
  • vscode-eslint-language-server
  • vscode-html-language-server
  • vscode-json-language-server
  • vscode-markdown-language-server

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants