Skip to content
This repository has been archived by the owner on Aug 23, 2018. It is now read-only.

NPM install on linux fails #100

Closed
folkertdev opened this issue Nov 3, 2015 · 30 comments
Closed

NPM install on linux fails #100

folkertdev opened this issue Nov 3, 2015 · 30 comments

Comments

@folkertdev
Copy link

using sudo npm install -g elm does download and install everything (without errors), but the executables don't work, printing:

folkertdev@folkertdev /usr/local/lib/node_modules/elm $ elm

module.js:340
    throw err;
          ^
Error: Cannot find module '/usr/local/lib/node_modules/elm/index'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/usr/local/lib/node_modules/elm/binwrap.js:2:17)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)

the file /usr/local/lib/node_modules/elm/index (nor /usr/local/lib/node_modules/elm/index.js) indeed doesn't exist.

the /usr/local/lib/node_modules/elm/share directory also doesn't exist, nor does /usr/lib/node_modules/elm/sharenor is $ELM_HOME defined. Even though ELM_HOME doesn't need to be set by the user any more, is should still exist (right?).

system: linux mint; npm version: 3.3.10

(update: after a clean reinstall, Elm is now installed in /usr/lib/node_modules/elm, but the same error persists)

@jvoigtlaender
Copy link
Contributor

The npm installer was completely changed recently. You may try the previous one, with npm install -g elm@2.0.0. That will give you exactly the same version of Elm, namely 0.15.1. When doing this, also follow the README instructions about ELM_HOME at https://github.com/kevva/elm-bin.

The above will most likely give you a working and current version of Elm right now. Regarding the future of the changed installer, @rtfeldman should be able to diagnose the problem you encountered.

@folkertdev
Copy link
Author

thanks, that works.

@michaelsbradleyjr
Copy link

I communicated with @folkertdev via IRC about this problem. I got him setup with a fresh node/npm installation via nvm, and then he did a global install of elm with npm install -g elm. After that, running npm ls -g --depth=0, he confirmed that 0.15.1 was installed.

Very strangely, the output of his doing ls $(dirname $(which elm))/../lib/node_modules/elm showed that, while almost everything was in the correct place, the index.js file was nowhere to be found.

I have no idea why that's happening, and was not able to reproduce the problem in a fresh Ubuntu container, in which I followed the same steps for setting up nvm, node/npm, and elm@0.15.1. I did, though, discover that it's important to install libgmp-dev (i.e. with apt-get install ...) prior to installing elm via npm. @folkertdev is running a fresh install of Linux Mint, but I don't know if/why that would make a difference.

@jvoigtlaender
Copy link
Contributor

There are more people (and still coming) apparently encountering the same problem in this thread.

@rtfeldman
Copy link

It's conceivable that this is an issue on older versions of npm, but I tried something in the upcoming #102 to work around it. We'll see...

@rtfeldman
Copy link

@folkertdev @michaelsbradleyjr I believe this is fixed in the latest (beta) release - can you try this and let me know if it works?

sudo npm install -g elm@0.15.1-beta4

@folkertdev
Copy link
Author

this works. Thanks!

@0joshuaolson1
Copy link

npm WARN deprecated elm@2.0.0: this is an obsolete implementation of a pre-0.16 installer.
But npm install elm@0.15.1 doesn't complain. Do I need to add '-beta5'?

@tomek-he-him
Copy link

@mrmormon same here!

By the way, npm info elm reveals that elm@2.0.0 is suspiciously over 4 months old – while elm@1.15.1 has just been published two weeks ago.

@rtfeldman if you’d like elm@0.15.1 to install by default through npm install elm, I guess you’d have to unpublish all the versions from 1.2.0 all the way up to 2.0.0. If you want to keep them online, I guess you could republish them with a -deprecated at the end.

@michaelsbradleyjr
Copy link

@tomekwi, yes, the 2.0.0 release was according to a now deprecated version numbering scheme for Elm's npm package. A decision was made later to match the version numbering scheme of Elm itself.

The problem, as you note, is that newer releases of Elm's npm package are, according to semver, older than the 2.0.0 release. I agree that it may be best unpublish all the npm package versions prior to 0.15.1. With a little advance warning to the mailing list, I think it's do-able, though I'm sure someone somewhere may still howl in pain.

@rtfeldman
Copy link

So npm appears to have weird rules for what version it chooses.

I released 0.15.1-alpha and npm install elm still used 2.0.0. Same with
0.15.1-beta through 0.15.1-beta3.

Eventually I released 0.15.1 (no -beta extension), and npm install elm
started using that.

Then someone reported a bug and I released 0.15.1-beta4 to see if that
fixed it, and npm install elm promptly went back to installing 2.0.0.

It seems to be that it goes with the most recently published x.y.z release
unless the most recently published version of that release ends in -beta or
the like.

By that logic, next week when 0.16.0 comes out, that should become the new
default installer. If not, I'll unpublish as necessary. :)

On Sat, Nov 14, 2015, 7:50 AM Michael Bradley ن notifications@github.com
wrote:

@tomekwi https://github.com/tomekwi, yes, the 2.0.0 release was
according to a now deprecated version numbering scheme for Elm's npm
package. A decision was made later to match the version numbering scheme of
Elm itself.

The problem, as you note, is that newer releases of Elm's npm package are,
according to semver http://semver.org/, older than the 2.0.0 release. I
agree that it may be best unpublish all the npm package versions prior to
0.15.1. With a little advance warning to the mailing list, I think it's
do-able, though I'm sure someone somewhere may still howl in pain.


Reply to this email directly or view it on GitHub
#100 (comment)
.

@tomek-he-him
Copy link

👍 Great news! Can’t wait what Elm 0.16 brings about!

npm appears to have weird rules for what version it chooses.

By the way, my readme originally said “npm install elm@0 […]”. But on some weird reason that installed the version 0.0.0 instead of the highest 0.x.x release.

@rtfeldman
Copy link

Fixed now that the 0.16 installer is out.

@dusky3
Copy link

dusky3 commented Nov 23, 2015

I just tried to install and I got the following error:

Error communicating with URL https://dl.bintray.com/elmlang/elm-platform/0.16.0/linux-x64.tar.gz Error: certificate not trusted
npm ERR! Linux 4.2.6_1
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "-g" "elm"
npm ERR! node v4.2.1
npm ERR! npm  v2.14.7
npm ERR! code ELIFECYCLE

npm ERR! elm@0.16.0 install: `node install.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the elm@0.16.0 install script 'node install.js'.
npm ERR! This is most likely a problem with the elm package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls elm
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/dusky/Downloads/npm-debug.log

I am using 64bit Void linux. Attached is the full log - everything seems to be fine until the line 3589
npm-debug.txt
.

@rtfeldman
Copy link

Sounds like your machine doesn't trust bintray's cert.

What do you see when visit this link?
https://dl.bintray.com/elmlang/elm-platform/0.16.0/

On Mon, Nov 23, 2015, 12:46 PM dusky3 notifications@github.com wrote:

I just tried to install and I got the following error:

Error communicating with URL https://dl.bintray.com/elmlang/elm-platform/0.16.0/linux-x64.tar.gz Error: certificate not trusted
npm ERR! Linux 4.2.6_1
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "-g" "elm"
npm ERR! node v4.2.1
npm ERR! npm v2.14.7
npm ERR! code ELIFECYCLE

npm ERR! elm@0.16.0 install: node install.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the elm@0.16.0 install script 'node install.js'.
npm ERR! This is most likely a problem with the elm package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node install.js
npm ERR! You can get their info via:
npm ERR! npm owner ls elm
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! /home/dusky/Downloads/npm-debug.log

I am using 64bit Void linux. Attached is the full log - everything seems
to be fine until the line 3589
npm-debug.txt
https://github.com/elm-lang/elm-platform/files/42014/npm-debug.txt
.


Reply to this email directly or view it on GitHub
#100 (comment)
.

@dusky3
Copy link

dusky3 commented Nov 23, 2015

I see the list of files:

darwin-x64.tar.gz

darwin-x64.tar.gz.asc

elm-reactor-assets.tar.gz

elm-reactor-assets.tar.gz.asc

linux-ia32.tar.gz

linux-ia32.tar.gz.asc

linux-x64.tar.gz

linux-x64.tar.gz.asc

win32-ia32.tar.gz

win32-ia32.tar.gz.asc

win32-x64.tar.gz

win32-x64.tar.gz.asc

@rtfeldman
Copy link

That's bizarre...can't think of why npm would reject the cert but your browser would accept it.

I assume if you try it again it gives the same result? (As in, not just a temporary fluke.)

@dusky3
Copy link

dusky3 commented Nov 23, 2015

I tried twice last night, twice this evening and twice right now. Still the same error.

@rtfeldman
Copy link

Unfortunately I have no way to help with this. 😞 It appears to be an issue with some combination of npm and your OS...wish I could be more useful, but certificate disagreements between npm and the browser are outside my realm of expertise.

@dusky3
Copy link

dusky3 commented Nov 23, 2015

Anyway thank you for your time @rtfeldman.

@rtfeldman
Copy link

👍 good luck!

@michaelsbradleyjr
Copy link

@dusky3 what happens if you upgrade your npm and try again? I'm successfully using the pre-release v3.5.0:

npm install -g npm@3.5.0

@dusky3
Copy link

dusky3 commented Nov 23, 2015

@michaelsbradleyjr here is the output:

# npm -v
2.14.7
# node -v
v4.2.1
# npm install -g npm@3.5.0
/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
npm@3.5.0 /usr/lib/node_modules/npm
# npm -v
3.5.0
# npm install -g elm
/usr/bin/elm -> /usr/lib/node_modules/elm/binwrappers/elm
/usr/bin/elm-make -> /usr/lib/node_modules/elm/binwrappers/elm-make
/usr/bin/elm-package -> /usr/lib/node_modules/elm/binwrappers/elm-package
/usr/bin/elm-reactor -> /usr/lib/node_modules/elm/binwrappers/elm-reactor
/usr/bin/elm-repl -> /usr/lib/node_modules/elm/binwrappers/elm-repl

> elm@0.16.0 install /usr/lib/node_modules/elm
> node install.js

Error communicating with URL https://dl.bintray.com/elmlang/elm-platform/0.16.0/linux-x64.tar.gz Error: certificate not trusted
npm WARN In elm@0.16.0 replacing bundled version of mkdirp with mkdirp@0.5.1
npm WARN In elm@0.16.0 replacing bundled version of promise with promise@7.0.4
npm WARN In elm@0.16.0 replacing bundled version of tar with tar@2.2.1
npm WARN In elm@0.16.0 replacing bundled version of follow-redirects with follow-redirects@0.0.7
npm WARN In elm@0.16.0 replacing bundled version of debug with debug@2.2.0
npm WARN In elm@0.16.0 replacing bundled version of stream-consume with stream-consume@0.1.0
npm WARN In elm@0.16.0 replacing bundled version of ms with ms@0.7.1
npm WARN In elm@0.16.0 replacing bundled version of minimist with minimist@0.0.8
npm WARN In elm@0.16.0 replacing bundled version of asap with asap@2.0.3
npm WARN In elm@0.16.0 replacing bundled version of inherits with inherits@2.0.1
npm WARN In elm@0.16.0 replacing bundled version of block-stream with block-stream@0.0.8
npm WARN In elm@0.16.0 replacing bundled version of fstream with fstream@1.0.8
npm WARN In elm@0.16.0 replacing bundled version of graceful-fs with graceful-fs@4.1.2
npm WARN In elm@0.16.0 replacing bundled version of rimraf with rimraf@2.4.4
npm WARN In elm@0.16.0 replacing bundled version of glob with glob@5.0.15
npm WARN In elm@0.16.0 replacing bundled version of inflight with inflight@1.0.4
npm WARN In elm@0.16.0 replacing bundled version of once with once@1.3.3
npm WARN In elm@0.16.0 replacing bundled version of path-is-absolute with path-is-absolute@1.0.0
npm WARN In elm@0.16.0 replacing bundled version of minimatch with minimatch@3.0.0
npm WARN In elm@0.16.0 replacing bundled version of wrappy with wrappy@1.0.1
npm WARN In elm@0.16.0 replacing bundled version of brace-expansion with brace-expansion@1.1.1
npm WARN In elm@0.16.0 replacing bundled version of balanced-match with balanced-match@0.2.1
npm WARN In elm@0.16.0 replacing bundled version of concat-map with concat-map@0.0.1
npm ERR! Linux 4.2.6_1
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "-g" "elm"
npm ERR! node v4.2.1
npm ERR! npm  v3.5.0
npm ERR! code ELIFECYCLE

npm ERR! elm@0.16.0 install: `node install.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the elm@0.16.0 install script 'node install.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the elm package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls elm
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/dusky/npm-debug.log

@michaelsbradleyjr
Copy link

@dusky3 maybe try upgrading node to 4.2.2 or 5.1.0 (super easy if you use nvm), and try again. However, I suspect there may be a problem at the OS-level, with regard to SSL certificates.

@dusky3
Copy link

dusky3 commented Nov 23, 2015

I upgraded to 5.0 and bingo! Thank you @michaelsbradleyjr .

Now I can run elm, elm make, elm package and elm reactor without problems. The only command I can not run is elm repl which requires libtinfo-dev which is not available in my OS repositories:

[dusky@t420 ~]$ elm repl
/home/dusky/.nvm/versions/node/v5.0.0/lib/node_modules/elm/Elm-Platform/0.16.0/.cabal-sandbox/bin/elm-repl: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

But this is something I have to sort out myself.

@jvoigtlaender
Copy link
Contributor

Concerning the libtinfo-dev issue, maybe this comment helps?

@jvoigtlaender
Copy link
Contributor

@dusky3, is your OS an Arch linux?

@dusky3
Copy link

dusky3 commented Nov 24, 2015

@jvoigtlaender Thank you for an advice, but I can't try it now. I will symlink ncurses tonight and will let you know if it worked. I am using 64bit Void linux: http://www.voidlinux.eu/ .. it is not an Arch fork, but I think there are some similarities with an Arch linux.

@dusky3
Copy link

dusky3 commented Nov 24, 2015

@jvoigtlaender I can run elm repl without any problems after symlinking ncurses:

[dusky@t420 elm-projects]$ elm repl
---- elm repl 0.16.0 -----------------------------------------------------------
 :help for help, :exit to exit, more at <https://github.com/elm-lang/elm-repl>
--------------------------------------------------------------------------------
> 1.0
1 : Float
> (::)
<function> : a -> List a -> List a
> import String as S
> S.isEmpty
<function: isEmpty> : String -> Bool

Thank you for all your help guys.

@pyalot
Copy link

pyalot commented Jan 23, 2016

I can't install Elm.

Node setup in root:

cd /root
ls -l bin
lrwxrwxrwx 1 root root  20 Jan 23 12:48 node -> ../lib/node/bin/node
lrwxrwxrwx 1 root root  19 Jan 23 12:48 npm -> ../lib/node/bin/npm

ls -l lib
lrwxrwxrwx 1 root   root   21 Jan 23 12:47 node -> node-v5.5.0-linux-x64
drwxr-xr-x 6 root   root 4096 Jan 23  2014 node-v0.10.25-linux-x64
drwxrwxr-x 7    500  500 4096 Jan 23 12:48 node-v5.5.0-linux-x64
drwxr-xr-x 5 nobody root 4096 Jan 23 12:45 node_modules

node -v -> 5.5.0
npm -v -> 3.3.12

npm install -g elm

npm install -g elm
/root/lib/node-v5.5.0-linux-x64/bin/elm -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/binwrappers/elm
/root/lib/node-v5.5.0-linux-x64/bin/elm-make -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/binwrappers/elm-make
/root/lib/node-v5.5.0-linux-x64/bin/elm-package -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/binwrappers/elm-package
/root/lib/node-v5.5.0-linux-x64/bin/elm-repl -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/binwrappers/elm-repl
/root/lib/node-v5.5.0-linux-x64/bin/elm-reactor -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/binwrappers/elm-reactor

> elm@0.16.0 install /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm
> node install.js

sh: 1: node: Permission denied
npm ERR! Linux 3.2.0-58-generic
npm ERR! argv "/root/lib/node-v5.5.0-linux-x64/bin/node" "/root/bin/npm" "install" "-g" "elm"
npm ERR! node v5.5.0
npm ERR! npm  v3.3.12
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn

npm ERR! elm@0.16.0 install: `node install.js`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the elm@0.16.0 install script 'node install.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the elm package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls elm
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /root/npm-debug.log

npm install -g elm@2.0.0

npm WARN deprecated elm@2.0.0: this is an obsolete implementation of a pre-0.16 installer.
/root/lib/node-v5.5.0-linux-x64/bin/elm -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/bin/elm
/root/lib/node-v5.5.0-linux-x64/bin/elm-make -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/bin/elm-make
/root/lib/node-v5.5.0-linux-x64/bin/elm-repl -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/bin/elm-repl
/root/lib/node-v5.5.0-linux-x64/bin/elm-package -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/bin/elm-package
/root/lib/node-v5.5.0-linux-x64/bin/elm-reactor -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/bin/elm-reactor

> elm@2.0.0 postinstall /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm
> node lib/install.js

sh: 1: node: Permission denied
npm ERR! Linux 3.2.0-58-generic
npm ERR! argv "/root/lib/node-v5.5.0-linux-x64/bin/node" "/root/bin/npm" "install" "-g" "elm@2.0.0"
npm ERR! node v5.5.0
npm ERR! npm  v3.3.12
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn

npm ERR! elm@2.0.0 postinstall: `node lib/install.js`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the elm@2.0.0 postinstall script 'node lib/install.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the elm package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node lib/install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls elm
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /root/npm-debug.log

npm install -g elm@0.15.1-beta4

npm WARN deprecated elm@0.15.1-beta4: Deprecate beta4
/root/lib/node-v5.5.0-linux-x64/bin/elm -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/binwrappers/elm
/root/lib/node-v5.5.0-linux-x64/bin/elm-make -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/binwrappers/elm-make
/root/lib/node-v5.5.0-linux-x64/bin/elm-package -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/binwrappers/elm-package
/root/lib/node-v5.5.0-linux-x64/bin/elm-reactor -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/binwrappers/elm-reactor
/root/lib/node-v5.5.0-linux-x64/bin/elm-repl -> /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm/binwrappers/elm-repl

> elm@0.15.1-beta4 install /root/lib/node-v5.5.0-linux-x64/lib/node_modules/elm
> node install.js

sh: 1: node: Permission denied
npm ERR! Linux 3.2.0-58-generic
npm ERR! argv "/root/lib/node-v5.5.0-linux-x64/bin/node" "/root/bin/npm" "install" "-g" "elm@0.15.1-beta4"
npm ERR! node v5.5.0
npm ERR! npm  v3.3.12
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn

npm ERR! elm@0.15.1-beta4 install: `node install.js`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the elm@0.15.1-beta4 install script 'node install.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the elm package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls elm
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /root/npm-debug.log

I have no trouble installing other modules, such as coffee-script and less for instance.

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

No branches or pull requests

8 participants